티스토리 뷰
1. 대응 방안 및 예방 수칙 (Action Items)
- 즉시 업데이트: SandboxJS(@nyariv/sandboxjs) 라이브러리를 사용 중이라면 반드시 v0.8.31 이상으로 업데이트
- 의존성 체크: npm list @nyariv/sandboxjs 또는 yarn list @nyariv/sandboxjs 명령어로 프로젝트 내에 설치된 버전 확인
- 입력값 검증: 샌드박스 내부로 전달되는 사용자 입력 데이터에 대해 엄격한 화이트리스트 기반 필터링 적용
2. 나의 생각 (Author's Insight)
데이터를 배열에 넣었다 빼는 아주 일상적인 동작만으로 보안 로직이 무력화될 수 있다는게 경각심 유발
당연하게 믿고 쓰는 라이브러리들도 언제든 '양날의 검'이 될 수 있다
3. 공격 시나리오 재구성 (How it Works)
"Reference Tracking Failure를 이용해 Execution Context를 이탈한 뒤, Prototype Pollution을 통해 전역 런타임을 장악하는 전형적이면서도 치명적인 Logic Flaw 사례"
Prototype Pollution을 통한 Sandbox Escape
SandboxJS의 내부 검증 로직을 무력화하여, 제한된 실행 환경(Sandbox)을 탈출하고 메인 프로세스의 전역 객체를 오염
- Step 1: 검증 로직의 논리적 결함
SandboxJS는 사용자 코드가 전역 객체에 접근하거나 수정하는 것을 방지하기 위해 isGlobal과 같은 내부 플래그를 사용하여 엄격하게 통제
하지만 배열 등 특정 데이터 타입을 처리하는 과정에서 객체의 참조 관리 로직에 허점 존재
- Step 2: 컨텍스트 격리 무력화 (Context Isolation Bypass)
공격자가 특수하게 조작된 자바스크립트 구문을 샌드박스 내부에서 실행
이때 데이터를 배열에 삽입했다가 다시 추출하는 과정을 거침
샌드박스가 유지하던 읽기 전용 속성이나 격리 상태를 나타내는 메타데이터가 유실
샌드박스가 해당 객체를 더 이상 위험한 전역 객체로 인식하지 못하게 됨
- Step 3: 프로토타입 오염 (Prototype Pollution)
격리가 풀린 상태에서 공격자가 자바스크립트의 최상위 객체인 Object.prototype에 접근해서 악성 속성을 주입함
시스템 전체에서 공유되는 기본 동작을 변경
(__proto__를 통해 모든 객체에 특정 함수나 속성을 강제로 심어버리는 등 동작)
- Step 4: 원격 코드 실행(RCE)으로의 연쇄 공격
오염된 프로토타입은 템플릿 엔진, 커맨드 실행 함수 등과 같은 애플리케이션의 다른 로직과 결합
최종적으로 원격 코드 실행 (셸 권한 획득)
4. 관련 지표 및 자료 (References & Metrics)
CVE ID: CVE-2026-25881
위험도: CVSS v3.1 Score 9.1 (Critical)
주요 지표:
- Attack Vector: Network (원격 공격 가능)
- Privileges Required: None (권한 필요 없음)
- Impact: Confidentiality, Integrity, Availability 모두 High (완전 장악 가능)
5. 체크리스트 (Self-Check List)
[ ] 우리 프로젝트 패키지 목록에 @nyariv/sandboxjs가 포함되어 있는가?
[ ] 현재 사용 중인 버전이 0.8.31보다 낮은 버전인가? (맞다면 즉시 업데이트)
[ ] 외부 사용자가 입력한 코드가 샌드박스 환경에서 실행되는 구조인가?
[ ] 최근 보안 취약점 스캔 도구(snyk, npm audit 등)를 돌려보았는가?
https://github.com/nyariv/SandboxJS/security/advisories/GHSA-ww7g-4gwx-m7wj
@nyariv/sandboxjs has host prototype pollution from sandbox via array intermediary (sandbox escape)
### Summary A sandbox escape vulnerability allows sandboxed code to mutate host built-in prototypes by laundering the `isGlobal` protection flag through array literal intermediaries. When a global...
github.com
https://github.com/nyariv/SandboxJS/commit/f369f8db26649f212a6a9a2e7a1624cb2f705b53
fix(security): harden sandbox against code execution bypass (GHSA-ww7… · nyariv/SandboxJS@f369f8d
…g-4gwx-m7wj)
github.com
src/sandbox.ts 핵심수정사항:
- preventGlobalState 함수 강화: 객체가 전역 객체인지만 단순 체크 -> 객체의 속성 재귀적으로 확인
- 배열 및 이터러블 처리:
배열을 이용해 검증 우회하는 것을 방지하기 위해 Array.isArray(val) 및 Symbol.iterator 체크하는 부분이 추가
배열 내부 객체라도 끝까지 추적해서 isGlobal 상태를 유지하도록 강제
- getProp과 setProp 메서드:
샌드박스 내에서 속성을 읽거나 쓸 때 그 대상이 전역 객체의 프로토타입(Object.prototype)인지 한 번 더 검증
https://www.cve.org/CVERecord?id=CVE-2026-25881
https://www.cve.org/CVERecord?id=CVE-2026-25881
www.cve.org
https://www.boannews.com/media/view.asp?idx=142170&skind=5
‘CVE-2026-25881’ 취약점, 샌드박스JS 보호막 무력화
자바스크립트 라이브러리인 ‘샌드박스JS(SandboxJS)’에서 호스트 시스템을 장악할 수 있는 심각한 샌드박스 탈옥 취약점이 발견됐다.
www.boannews.com
https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71972&menuNo=205020
KISA 보호나라&KrCERT/CC
KISA 보호나라&KrCERT/CC
www.boho.or.kr:443
https://nvd.nist.gov/vuln/detail/cve-2026-25881
NVD - cve-2026-25881
CVE-2026-25881 Detail Awaiting Analysis This CVE record has been marked for NVD enrichment efforts. Description SandboxJS is a JavaScript sandboxing library. Prior to 0.8.31, a sandbox escape vulnerability allows sandboxed code to mutate host built-in prot
nvd.nist.gov
https://v.daum.net/v/20260213142623855
‘CVE-2026-25881’ 취약점, 샌드박스JS 보호막 무력화
격리된 환경의 핵심 보호 메커니즘이 사소한 로직 결함으로도 무너질 수 있다는 것 보여줘 [보안뉴스 김형근 기자] 자바스크립트 라이브러리인 ‘샌드박스JS(SandboxJS)’에서 호스트 시스템을 장
v.daum.net
[KISA 보안취약점 정보포털 진흥원] SandboxJS 보안 업데이트 권고 : 보안 동향 허브 | 정부·기관 보
확인 시간 : 2026-02-13 17:15KISA 보안취약점 정보포털 진흥원 : 취약점 정보 공유 > 보안공지[게시판] https://knvd.krcert.or.kr/securityNotice.do[게시글] https://knvd.krcert.or.kr/detailSecNo.do?IDX=6695제목 : SandboxJS 보
www.cela.kr
https://vulners.com/cve/CVE-2026-25881
CVE-2026-25881 - vulnerability database | Vulners.com
SandboxJS prior to version 0.8.31 contains a sandbox-escape vulnerability where sandboxed code can mutate host prototypes by laundering the isGlobal protection flag through array literals. Specifically, a global prototype reference (for example Map....
vulners.com
https://blog.ai.dmomo.co.kr/tech/20156
SandboxJS 프로토타입 오염 취약점 CVE-2026-25881, 어떻게 대처할까?
어떻게 안전하다고 믿었던 SandboxJS가 한 순간에 보안의 구멍으로 변할 수 있을까요? 최신 심각 취약점 CVE-2026-25881이 밝혀낸 샌드박스 우회 공격의 비밀은, “샌드박스는 신뢰할 수 없는 코드를
blog.ai.dmomo.co.kr
https://mondoo.com/vulnerability-intelligence/vulnerability/CVE-2026-25881
CVE-2026-25881
CVE-2026-25881 - CRITICAL severity: @nyariv/sandboxjs has host prototype pollution from sandbox via array intermediary (sandbox escape)
mondoo.com
'보안전문가로 취업할래요 > 취약점과 보안뉴스' 카테고리의 다른 글
| CVE-2026-3304 ExpressJS의 multer 취약점 (0) | 2026.03.08 |
|---|---|
| CVE-2025-59536 클로드 코드 원격 실행 가능 취약점 (0) | 2026.02.26 |
| Shannon(섀넌), 직접 공격해서 증거를 챙겨오는 자율형 AI 침투 테스터 (0) | 2026.02.18 |
| 윈도우 서버를 노리는 러시아산 Prometei 봇넷 변종 (0) | 2026.02.16 |
| 차세대 방화벽(NGFW), 김수키씨가 누구세요 (0) | 2026.01.12 |