Borland Interbase ibserver.exe 'create' Buffer Overflow VulnerabilityTPTI-07-13: July 20th, 2007
TippingPoint™ IPS Customer ProtectionTippingPoint IPS customers are protected against this vulnerability by Digital Vaccine protection filter ID 5066. For further product information on the TippingPoint IPS:
Vulnerability DetailsThis vulnerability allows remote attackers to execute arbitrary code on vulnerable installations of Borland Interbase. Authentication is not required to exploit this vulnerability.
The specific flaw exists within the database service, ibserver.exe, which binds to TCP port 3050. The service receives socket data in the following format:
[4-byte request][request arguments][data]
A vulnerability exists in Interbase when specifying a "create" request (0x14). The request is broken down as such:
[0x00000014][4-byte id][4-byte size][data]
The vulnerability exists during an inline string copy operation.
0x0043A0C5 mov ecx, [ebp+var_8D8]
0x0043A0CB and ecx, 0FFFFh
0x0043A0D1 mov esi, [ebp+arg_8]
0x0043A0D4 mov edi, [ebp+var_1C]
0x0043A0D7 mov eax, ecx
0x0043A0D9 shr ecx, 2
0x0043A0DC rep movsd
Where ecx is our 4-byte size, esi is our data, and edi a stack pointer. When a large value is specified in the size, the associate data is copied to the stack resulting in a classic overflow. With enough data the SEH pointer can be compromised and arbitrary code execution is trivial.
Vendor ResponseBorland has issued an update to correct this vulnerability. More details can be found at:
2007-01-31 - Vulnerability reported to vendor
2007-07-20 - Coordinated public release of advisory