You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -1332,9 +1332,53 @@ Replay in Repeater and test authorization, input validation and business logic o
1332
1332
- Requires `productionBrowserSourceMaps` enabled in production to recover names from bundles/source maps.
1333
1333
- Function-name disclosure is not a vulnerability by itself; use it to guide discovery and test each action’s authorization.
1334
1334
1335
+
### React Server Components Flight protocol deserialization RCE (CVE-2025-55182)
1336
+
1337
+
Next.js App Router deployments that expose Server Actions on `react-server-dom-webpack`**19.0.0–19.2.0 (Next.js 15.x/16.x)** contain a critical server-side prototype pollution during **Flight** chunk deserialization. By crafting `$` references inside a Flight payload an attacker can pivot from polluted prototypes to arbitrary JavaScript execution and then to OS command execution inside the Node.js process.
1.**Prototype pollution primitive:** Set `"then": "$1:__proto__:then"` so that the resolver writes a `then` function on `Object.prototype`. Any plain object processed afterwards becomes a thenable, letting the attacker influence async control flow inside RSC internals.
1346
+
2.**Rebinding to the global `Function` constructor:** Point `_response._formData.get` at `"$1:constructor:constructor"`. During resolution, `object.constructor` → `Object`, and `Object.constructor` → `Function`, so future calls to `_formData.get()` actually execute `Function(...)`.
1347
+
3.**Code execution via `_prefix`:** Place JavaScript source in `_response._prefix`. When the polluted `_formData.get` is invoked, the framework evaluates `Function(_prefix)(...)`, so the injected JS can run `require('child_process').exec()` or any other Node primitive.
The Python proof-of-concept converts this JSON into a full Flight payload and posts it to the Server Action endpoint. Once arbitrary JS runs, attackers can drop to the OS, stage web shells, or pivot laterally using the Node process credentials.
1366
+
1367
+
#### Operational tooling
1368
+
1369
+
-**Single target check / exploitation:**
1370
+
-`python3 exploit.py http://target:3000 --check` sends non-destructive payloads to confirm the vulnerable resolver behavior.
1371
+
-`python3 exploit.py http://target:3000 -c "id"` executes blind shell commands through the Function gadget.
1372
+
-**Batch scanning:**`python3 exploit.py -f targets.txt --check --stealth crawler --delay 2 -o vulnerable.txt` iterates through a newline-separated target list (lines starting with `#` are ignored) and records confirmed hits.
0 commit comments