diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-07-25 16:48:16 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-08-13 22:51:43 +0800 |
| commit | 10316f4c8259c65edf49462bc0e2a76011577e1c (patch) | |
| tree | ee3e0e51d452326ae733520393900ff8abba0a27 /_log/jint-gadget-chain-rce.md | |
| parent | 61568cd8d254b794188352354902acd85bdc4739 (diff) | |
| download | www-minimalist.tar.gz | |
Add reference to Domsson's fakesteak and minor tweaks to articles.minimalist
Diffstat (limited to '_log/jint-gadget-chain-rce.md')
| -rw-r--r-- | _log/jint-gadget-chain-rce.md | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/_log/jint-gadget-chain-rce.md b/_log/jint-gadget-chain-rce.md index 081ec0e..4241419 100644 --- a/_log/jint-gadget-chain-rce.md +++ b/_log/jint-gadget-chain-rce.md @@ -4,25 +4,25 @@ date: 2026-07-18 layout: post --- -Asyx6, a bounty hunter, reported a CVSS 9.9 RCE vulnerability in a six-year-old -program. +Received a CVSS 9.9 RCE vulnerability report from security researcher asyx6 +today. -The application exposed JSON data from HTTP requests to Jint as -JObjects—presumed safe because the CLR interop was disabled in the Jint -configuration. It wasn't. +Six-year-old program exposed JSON data from HTTP requests to Jint as +JObjects—presumed safe because CLR interop was disabled. Jint uses reflection +to resolve methods on CLR types. Interop settings have no bearing on this +internal mechanism. -Jint uses reflection-based method resolution on CLR types regardless of the -interop settings. A user-defined script invoking ToObject() on a JObject -activates Newtonsoft.Json's deserializer. Together, these formed a gadget chain -from attacker-controlled JSON payload to System.Diagnostics.Process: +A user-defined script invoked ToObject() on a JObject, activating the +Newtonsoft.Json's deserializer. Together, these formed a gadget chain from +attacker-controlled JSON payload to System.Diagnostics.Process: ``` data.ToObject(cfg).Start(psi.ToObject(cfg)).StandardOutput.ReadToEnd(); ``` -The script triggers the deserialization of the following malicious JSON payload -via a serializer configured with TypeNameHandling.All. This constructs a -Process, starts it, and reads its output: +The script triggered the deserialization of the following malicious payload via +a serializer configured with TypeNameHandling.All. This constructed a Process, +started it, and read its output: ``` { @@ -38,8 +38,8 @@ Process, starts it, and reads its output: } ``` -Fix: Objects that implement IDictionary<string, object> bypass Jint's method -resolution system. Converted all objects that cross the CLR-JavaScript boundary -to ExpandoObjects. Blocked reflection types from reaching Jint for good -measure. +Fix: IDictionary<string, object> objects bypass Jint's method resolution +system. Converted anything that crosses the CLR-JavaScript boundary to +ExpandoObjects; blocked reflection types from reaching Jint for good measure. +asyx6 verified the fix. |
