Executive Summary
The EXPMON system detected a highly-sophisticated PDF exploit targeting Adobe Reader users.
Based on our analysis, the sample acts as an initial exploit with the capability to collect and leak various types of information, potentially followed by remote code execution (RCE) and sandbox escape (SBX) exploits. It abuses zero-day/unpatched vulnerability in Adobe Reader that allows it to execute privileged Acrobat APIs, and it is confirmed to work on the latest version of Adobe Reader.
Specifically, it calls the “util.readFileIntoStream()” API, allowing it to read arbitrary files (accessible by the sandboxed Reader process) on the local system. In this way, it can collect a wide range of information from the local system and steal local file data.
The "RSS.addFeed()" API is called to serve two purposes: sending the information collected from the local system to a remote server and receiving additional JavaScript code to be executed.
Such a mechanism allows the threat actor to collect user information, steal local data, perform advanced "fingerprinting", and launch future attacks: if the target meets the attacker's conditions, the attacker may deliver additional exploit to achieve RCE or SBX.
However, during our tests, we were unable to obtain the said additional exploit - the server was connected but no response. This could be due to various reasons - for example, our local testing environments may not have met the attacker’s specific criteria.
Nevertheless, this zero-day/unpatched capability for broad information harvesting and the potential for subsequent RCE/SBX exploitation is enough for the security community to remain on high alert. This is why we have chosen to publish these findings immediately so users can stay vigilant. We will also share this blog post with Adobe Security.
The story of the detection
Just few weeks ago, on March 26, someone submitted a PDF sample on EXPMON. The sample, while named as "yummy_adobe_exploit_uwu.pdf" by the submitter*, triggered one of EXPMON's advanced "detection in depth" features. You can check out the original submission here:
https://pub.expmon.com/analysis/328131/
The sample is also on VirusTotal since March 23, with currently a low 5/64 detection, as you can find out here.
*EXPMON doesn't collect any information regarding the submitter and we don’t know who submitted the sample.
You can see the sample was detected as the following, in the "winx64(update20250816)_reader(2023.006.20320)[acrobatreader]" env.
Informational - "the pdf may produce suspicious activity, please check (this is result of an experimental detection-in-depth feature, fp may well exist, reporting fp welcome)"
For those who are not familiar with EXPMON’s strategy to combat advanced zero-day or unknown exploits, let me try to explain it in more detail. EXPMON identifies "bad samples" through three processes:
- The first is when the system reports a threat immediately on the UI or via the Web APIs. In this case/sample, the system successfully flagged the sample as suspicious and requested a manual analysis. This is the ideal and fastest method of detection.
- The second is that admins (for EXPMON Public, that's me) can check the detection logs on the Controller, or if you are just an analyst you can examine the Indicators displayed on the UI/Web APIs - even if the high-level Detection Result is still labeled as "Undetected". These logs and Indicators contain much more granular information, allowing analysts to uncover sophisticated exploits that the automated system may not have flagged immediately. While this manual review could be fast, it does require dedicated manpower and deep domain knowledge.
- The final approach to finding true advanced zero-day or unknown exploits is what I call the "Big Data Analytics" (BDA) process. Thanks to the architecture of the EXPMON system, we are able to perform meaningful Big Data Analytics across millions of logs. In this process, we may find abnormalities or threats missed during the previous two processes and learn how to improve our Detection Logic. This is a powerful way of threat hunting; however, it involves significant manual analysis and usually requires a lot of time.
Manual analysis of the sample
Recently, I haven't been reviewing the logs or performing BDA on the data collected by EXPMON Public as often - I've been quite busy with my other project which is about "fuzzing Office at scale". However, this week, while planning to perform a long-overdue BDA, this sample caught my eye immediately because it triggered the Acrobat "detection-in-depth" feature! So I decided to perform a manual analysis of this sample, and I quickly hit a "wow" moment - it turns out this one is highly sophisticated. First, it attempts to execute JavaScript within object 9; as you can see in the image below, the JS code is heavily obfuscated.
And.. aha, yes, I used AI and quickly de-obfuscated the code, to something like the following.
app.t = app["setTimeOut"](util["stringFromStream"](SOAP["streamDecode"](util["streamFromString"](getField("btn1")["value"]), ("base64"))

Testing the sample








