Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-55182 — 基于CodeQL的CVE-2025-55182原型污染漏洞分析,该漏洞存在于React Server Components中,包含利用POC和不安全属性遍历的静态检测查询。 | Kitploit
工具/GitHubGitHub/klassiker/cve-2025-55182
静态分析漏洞分析代码分析Web安全论文与研究学习与教育
GitHubklassiker/cve-2025-55182

CVE-2025-55182

基于CodeQL的CVE-2025-55182原型污染漏洞分析,该漏洞存在于React Server Components中,包含利用POC和不安全属性遍历的静态检测查询。

查看仓库
8个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-55182

易受攻击的应用程序

构建并运行:

root@kitploit:~
docker compose build
docker compose run --rm --entrypoint 'npm install' node
docker compose run --rm --entrypoint 'npm run build' node
docker compose up

POC(来自 https://github.com/msanft/CVE-2025-55182):

root@kitploit:~
node poc.js

实验(使用 unbundled):

root@kitploit:~
yarn --immutable

node --conditions react-server app.js

CodeQL

克隆 facebook/react 并创建 unbundled:

root@kitploit:~
yarn --immutable

yarn cross-env RELEASE_CHANNEL=experimental node ./scripts/rollup/build.js react-server-dom-webpack/ --type=NODE_DEV

cp ./build/node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js \
    codeql/${version}/

准备 CodeQL:

root@kitploit:~
codeql database create db -l javascript -s codeql

cd queries && codeql pack install

codeql query run ./queries/PrototypeTraversal.ql -d db

待办事项

  • 添加一个查询来查找 Promise.resolve(userData)
    • 应找出所有返回用户定义对象的异步函数
    • 这是代码执行问题的直接位置
  • 添加一个查询来查找 await non-native-promise
    • 应找出所有对不返回原生 Promise 的函数的 await
    • 调用者可能错误地对(有时)返回原始数据的方法使用了 await

结果

它捕获了 getOutlinedModel 中的已修补用法(添加了 hasOwnProperty.call)和 createModelResolver 中被移除的用法(现为 fulfillReference)。

我不明白为什么第一个和第二个指向同一位置,而 vuln.js 中提取的那个却没有。

示例

在 codeql/tests.js 中有以下三种变体:

root@kitploit:~
var value = {};
for (let i = 0; i < path.length; i++) {
  value = value[path[i]] // VarAccess
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c = value[path[i]] // VarDecl
  value = c
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c
  c = value[path[i]] // use VarRef
  value = c
}

参考:https://codeql.github.com/docs/codeql-language-guides/abstract-syntax-tree-classes-for-working-with-javascript-and-typescript-programs/

下载工具
filenamesourcesink
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]不安全的原型遍历:变量 'parentObject' 在循环中被其自身的属性更新。
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]不安全的原型遍历:变量 'parentObject' 在循环中被其自身的属性更新。
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsvalue[path[i]]value[path[i]]不安全的原型遍历:变量 'value' 在循环中被其自身的属性更新。
./tests.jsvalue[path[i]]c不安全的原型遍历:变量 'value' 在循环中被其自身的属性更新。
./tests.jsvalue[path[i]]c不安全的原型遍历:变量 'value' 在循环中被其自身的属性更新。
./tests.jsvalue[path[i]]value[path[i]]不安全的原型遍历:变量 'value' 在循环中被其自身的属性更新。
./vuln.jsparentObject[reference[key]]parentObject[reference[key]]不安全的原型遍历:变量 'parentObject' 在循环中被其自身的属性更新。
./vuln.jsvalue[path[i]]value[path[i]]不安全的原型遍历:变量 'value' 在循环中被其自身的属性更新。