search menu icon-carat-right cmu-wordmark

CERT Coordination Center

MIT Kerberos kadmind RPC library gssrpc__svcauth_unix() integer conversion error

Vulnerability Note VU#365313

Original Release Date: 2007-06-26 | Last Revised: 2007-08-08

Overview

The MIT Kerberos administration daemon (kadmind) contains an integer conversion error vulnerability, which may allow a remote, unauthenticated attacker to execute arbitrary code or cause a denial of service.

Description

The gssrpc__svcauth_unix() function used by the Kerberos administration daemon contains an integer conversion error. This vulnerability may cause a stack buffer overflow that could allow a remote, authenticated user to execute arbitrary code. According to MIT krb5 Security Advisory MITKRB5-SA-2007-004:

The function gssrpc__svcauth_unix() in src/lib/rpc/svc_auth_unix.c stores an unsigned integer obtained from IXDR_GET_U_LONG into a signed integer variable "str_len". Subsequently, it checks that "str_len" is less than MAX_MACHINE_NAME, which will always be true of "str_len" is negative, which can happen when a large unsigned integer is converted to a signed integer. Once the length check succeeds, gssrpc__svcauth_unix() calls memmove() with a length of "str_len" with the target in a stack buffer.

This vulnerability is believed to be difficult to exploit because the memmove() implementation receives a very large number (a negative integer converted to a large unsigned value), which will almost certainly cause some sort of memory access fault prior to returning. This probably avoids any usage of the corrupted return address in the overwritten stack frame. Note that some (perhaps unlikely) memmove() implementations may call other procedures and thus may be vulnerable to corrupted return addresses.
Note that this issue affects all releases of MIT krb5 up to and including krb5-1.6.1. Third-party applications using the MIT krb5 RPC library or other RPC libraries derived from SunRPC may also be vulnerable. MIT has been provided with proof-of-concept exploit code that causes a denial of service, but it's not clear whether the exploit code is publicly available yet.

This vulnerability occurred as a result of failing to comply with rule INT31-C of the CERT C Programming Language Secure Coding Standard.

Impact

A remote, unauthenticated user may be able to execute arbitrary code on an affected system or cause the affected program to crash, resulting in a denial of service. Secondary impacts of code execution include complete compromise of the Kerberos key database.

Solution

Apply a patch
A patch can be obtained from MIT krb5 Security Advisory MITKRB5-SA-2007-004. MIT also states that this will be addressed in the upcoming krb5-1.6.2 and krb5-1.5.4 releases. Please check with your vendor for third-party product updates.

Vendor Information

365313
 

View all 45 vendors View less vendors


CVSS Metrics

Group Score Vector
Base
Temporal
Environmental

References

Acknowledgements

Thanks to MIT for reporting this vulnerability, who in turn credit Wei Wang of McAfee Avert Labs.

This document was written by Will Dormann.

Other Information

CVE IDs: CVE-2007-2443
Severity Metric: 5.40
Date Public: 2007-06-26
Date First Published: 2007-06-26
Date Last Updated: 2007-08-08 16:52 UTC
Document Revision: 13

Sponsored by CISA.