Vulnerability Description
PHPOffice PhpSpreadsheet before 1.8.0 has an XXE issue. The XmlScanner decodes the sheet1.xml from an .xlsx to utf-8 if something else than UTF-8 is declared in the header. This was a security measurement to prevent CVE-2018-19277 but the fix is not sufficient. By double-encoding the the xml payload to utf-7 it is possible to bypass the check for the string ‚<!ENTITY‘ and thus allowing for an xml external entity processing (XXE) attack.
CVSS Score
HIGH
Affected Products
| Vendor | Product | Versions |
|---|---|---|
| Phpoffice | Phpspreadsheet | < 1.8.0 |
Related Weaknesses (CWE)
References
- https://github.com/PHPOffice/PhpSpreadsheet/blob/master/CHANGELOG.md#180---2019-Third Party Advisory
- https://herolab.usd.de/security-advisories/usd-2019-0046/ExploitThird Party Advisory
- https://github.com/PHPOffice/PhpSpreadsheet/blob/master/CHANGELOG.md#180---2019-Third Party Advisory
- https://herolab.usd.de/security-advisories/usd-2019-0046/ExploitThird Party Advisory
FAQ
What is CVE-2019-12331?
CVE-2019-12331 is a vulnerability with a CVSS score of 8.8 (HIGH). PHPOffice PhpSpreadsheet before 1.8.0 has an XXE issue. The XmlScanner decodes the sheet1.xml from an .xlsx to utf-8 if something else than UTF-8 is declared in the header. This was a security measure...
How severe is CVE-2019-12331?
CVE-2019-12331 has been rated HIGH with a CVSS base score of 8.8/10. Review the CVSS metrics above for detailed severity breakdown.
Is there a patch for CVE-2019-12331?
Check the references section above for vendor advisories and patch information. Affected products include: Phpoffice Phpspreadsheet.