summaryrefslogtreecommitdiffstats
path: root/_log/jint-gadget-chain-rce.md
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-07-25 16:48:16 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-08-13 22:51:43 +0800
commit10316f4c8259c65edf49462bc0e2a76011577e1c (patch)
treeee3e0e51d452326ae733520393900ff8abba0a27 /_log/jint-gadget-chain-rce.md
parent61568cd8d254b794188352354902acd85bdc4739 (diff)
downloadwww-10316f4c8259c65edf49462bc0e2a76011577e1c.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.md32
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.