Microsoft Windows DNS server can be configured to respond to inverse queries when HKLM\System\CurrentControlSet\Services\DNS\Parameters\EnableIQueryResponseGeneration (REG_DWORD) is set to a non-zero value. By default this registry setting is missing and the DNS server returns a "Not Implemented" error for an inverse query. However, if inverse query response generation is enabled, there is a buffer over-read issue in dns.exe!answerIQuery(). Inside the function, Dns_ReadRecordStructureFromPacket() is called to parse a Resource Record (RR) inside the inverse query packet. That function returns a pointer to a location immediately followed by the end of the RR. This location is the end of the query packet. Later, a strlen() operation is performed. If the length of the string is not greater than 16, the string is then copied to a local stack buffer, which will become the QNAME (enclosed with open and close brackets) in the question section of the inverse query response. If the length of the string is greater than 16, an error message of return code 1 (Format Error) is returned. The issues of performing a strlen() operation at the end of the inverse query packet may have different impacts: Data at the end of the packet can be non-zero up until a non-accessible page is reached. This can cause an access violation leading to a remote denial of service. Data at the end of the packet can be returned to the client if its 'strlen' is less than or equal to 16 bytes. This may result in a remote information disclosure issue.


Source: Mitre, NVD

Published: 2016-03-24

Risk Information


Base Score: 4

Vector: CVSS2#AV:N/AC:H/Au:N/C:P/I:N/A:P

Severity: Medium