MS02-037: Response to SMTP Client EHLO Command Results in Buffer Overrun

The Internet Mail Connector (IMC) enables Microsoft Exchange Server to communicate with other mail servers via SMTP. When the IMC receives an SMTP extended Hello (EHLO) protocol command from a connecting SMTP server, it responds by sending a status reply that starts with the following:

250-[Exchange server ID]Hello[Connecting server ID]

Where:

[Exchange server ID] is the fully-qualified domain name (FQDN) of the Exchange server [Connecting server ID] is either the FQDN or the IP address of the server that initiated the connection.

The FQDN would be used if the Exchange5.5 IMC is able to resolve this information through a reverse DNS lookup; the IP address would be used if a reverse DNS lookup was not possible or failed to resolve the connecting servers IP address.

A security vulnerability results because of an unchecked buffer In the IMC code that generates the response to the EHLO protocol command. If the total length of the message exceeds a particular value, the data would overrun the buffer. If the buffer were overrun with random data, it would result in the failure of the IMC. If, however, the buffer were overrun with carefully chosen data, it could be possible for the attacker to run code in the security context of the IMC, which runs as Exchange5.5 Service

Account.

It is important to note that the attacker could not simply send Data to the IMC in order to overrun the buffer. Instead, the Attacker would need to create a set of conditions that would cause the IMC to overrun its own buffer when it generated the EHLO response. Specifically, the attacker would need to ensure that a reverse DNS lookup would not only succeed, but would provide an FQDN whose length was sufficient to result in the buffer overrun.

Download: MS Exchange 5.5 SP4

View: Microsoft TechNet - Security Bulletin ID MS02-037

Previous Story
MS02-036: Authentication Flaw MS Metadirectory Services
Next Story
MS02-032 (Revised): Cumulative Patch for Windows Media Player