Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-55182 — CVE-2025-55182의 프로토타입 오염 취약점에 대한 CodeQL 기반 분석, React Server Components에서의 익스플로잇 POC 및 안전하지 않은 속성 순회를 위한 정적 탐지 쿼리 포함. | Kitploit
도구/GitHubGitHub/klassiker/cve-2025-55182
Static AnalysisVulnerability AnalysisCode AnalysisWeb SecurityPapers & ResearchLearning & Education
GitHubklassiker/cve-2025-55182

CVE-2025-55182

CVE-2025-55182의 프로토타입 오염 취약점에 대한 CodeQL 기반 분석, React Server Components에서의 익스플로잇 POC 및 안전하지 않은 속성 순회를 위한 정적 탐지 쿼리 포함.

저장소 보기
29개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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

TODO

  • Promise.resolve(userData)를 찾는 쿼리 추가
    • 사용자 정의 객체로 resolve하는 모든 async 함수를 찾아야 함
    • 이는 코드 실행 문제의 직접적인 위치임
  • await non-native-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'가 루프 내에서 자신의 속성으로 업데이트됩니다.