CVE-2012-4460: Buffer Overflow
The low-level serializing/deserializing methods (putOctet, getOctet and so on) in the qpid::framing::Buffer class do not perform bounds checks before the operation. Instead, there is an assert after the operation which fails on out-of-bounds access.
If asserts are enabled, this results in a pre-authentication denial-of-service vulnerability. Red Hat builds disable asserts, so they are not affected by this vulnerability. Examining the protocol decoders showed that the read overrun is limited to very few bytes because all the large types perform proper length checking (so it seems impossible that an unmapped page can be reached and cause a crash). Regarding write overruns, there is a check of the buffer size against the encoded size (which is conceptually not possible for the read case), so there should not be any write buffer overrun, assuming that the encoded size account is completely correct.
The suggestion is to remove the asserts from putOctet/getOctet etc. and replace them with bounds checks which throw exceptions on failure.
Acknowledgements:
This issue was discovered by Florian Weimer of the Red Hat Product Security Team.
Other sources
The serializing/deserializing functions in the qpid::framing::Buffer class in Apache Qpid 0.20 and earlier allow remote attackers to cause a denial of service (assertion failure and daemon exit) via unspecified vectors. NOTE: this issue could also trigger an out-of-bounds read, but it might not trigger a crash.
— MITRE
Affected Software
Remediation
Patch Available
Event History
Frequently Asked Questions
What is the severity of CVE-2012-4460?
CVE-2012-4460 has a medium severity level due to potential out-of-bounds access leading to application crashes.
How do I fix CVE-2012-4460?
To fix CVE-2012-4460, update Apache Qpid to a version greater than 0.20, as it addresses the bounds check issues.
Which versions of Apache Qpid are affected by CVE-2012-4460?
CVE-2012-4460 affects Apache Qpid versions from 0.5 to 0.20 and includes various releases in between.
What can happen if CVE-2012-4460 is exploited?
Exploitation of CVE-2012-4460 can lead to application crashes and potentially allow for denial-of-service conditions.
Are there any workarounds for CVE-2012-4460?
Currently, the best workaround for CVE-2012-4460 is to disable asserts, although this is not a permanent solution and updating is recommended.