DB2 UDB - Unauthenticated Buffer Overflow and DoS (BID 18428) Background: DB2 Universal Database (UDB)™ is a popular database software package from IBM available for legacy platforms as well as open systems (Unix and Windows). Clients use a protocol called DRDA to communicate with the DB2 UDB server. Protocol messages are used for session setup, authentication and data transfer Scope: Imperva’s Application Defense Center is conducting an extensive research of the DRDA protocol and its implementation. As part of the research the team has identified severe vulnerability in DB2 UDB’s connection establishment mechanism that allows an attacker to terminate the UDB service, effectively denying service from all database users. Findings: An attacker can send a specially crafted EXCSAT command during the handshake process with the server, causing the server process to crash. It seems that the command invokes a buffer overflow condition on the server possibly allowing execution of arbitrary code on the server. Details: The first message used by a client when establishing a connection to the database is the EXCSAT message (message code 0x1041). This message includes an object called MGRLVLLS (code 0x2114) which in term contains a vector of 4 byte entries (two bytes for the manager code and two byte for the compatibility level). When the size of the MGRLVLLS message is large enough a buffer overflow condition is invoked. If the client terminates the connection immediately after sending this message the server process is terminated. Exploit: Create an EXCSAT message with a very long (>1Kbytes) MGRLVLLS message. (see attached) Tested Versions Vulnerable: DB2 UDB version 8.x all platforms Not Vulnerable: Vendor’s Status: - Vendor notified on Feb-8, 2006. - Vulnerability patched in UDB 8.x FixPak 12 on May 5th 2006, APAR is IY84096 - Reported by vendor to Bugtraq on June 14th 2006 and labeled BID 18428 Workaround: None