First published: Thu Sep 27 2012(Updated: )
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.
Credit: secalert@redhat.com
Affected Software | Affected Version | How to fix |
---|---|---|
Apache Qpid | <=0.20 | |
Apache Qpid | =0.5 | |
Apache Qpid | =0.6 | |
Apache Qpid | =0.7 | |
Apache Qpid | =0.8 | |
Apache Qpid | =0.9 | |
Apache Qpid | =0.10 | |
Apache Qpid | =0.11 | |
Apache Qpid | =0.12 | |
Apache Qpid | =0.13 | |
Apache Qpid | =0.14 | |
Apache Qpid | =0.15 | |
Apache Qpid | =0.16 | |
Apache Qpid | =0.17 | |
Apache Qpid | =0.18 | |
Apache Qpid | =0.19 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.