CVE-2026-23745: 파멸의 타르피트: node-tar에서 루트 탈출
Source: Dev.to
파멸의 타르피트: node-tar에서 루트 탈출
취약점 ID: CVE-2026-23745
CVSS 점수: 8.2
공개일: 2026-01-16
범용 node-tar 라이브러리의 심각한 경로‑트래버설 취약점으로, 악성 아카이브가 추출‑루트 제한을 우회할 수 있습니다. 하드링크와 심볼릭링크 대상에 절대 경로를 삽입하면, 공격자는 임의의 시스템 파일을 덮어쓰거나 심볼릭 링크를 오염시켜 표준 압축 해제 작업을 무기로 전환할 수 있습니다.
TL;DR
node-tar ≤ 7.5.2는 하드링크와 심볼릭링크의 대상 경로를 정화하지 못했습니다. 아카이브에 절대 경로(예: /etc/passwd)를 가리키는 링크가 포함되면, node-tar는 추출 디렉터리를 무시하고 해당 경로에 파일을 생성합니다. 이는 임의 파일 덮어쓰기와 구성 파일 조작을 통한 잠재적 RCE를 초래합니다.
⚠️ Exploit Status: Proof of Concept
기술 세부 정보
- CWE ID: CWE‑22 (경로 트래버설)
- CVSS 4.0: 8.2 (높음)
- 공격 벡터: 로컬 (아카이브 업로드)
- 영향받는 구성 요소:
unpack.ts(링크/심볼릭링크 처리) - 영향: 임의 파일 덮어쓰기 / 심볼릭링크 오염
- Exploit Status: Proof of Concept Available
영향을 받는 시스템
node-tar를 사용하는 Node.js 애플리케이션- 신뢰할 수 없는 아카이브를 처리하는 CI/CD 파이프라인
- 파일 업로드/추출 기능을 제공하는 서버‑사이드 애플리케이션
취약한 버전: node-tar ≤ 7.5.2
패치된 버전: 7.5.3
코드 분석
Commit: 340eb28 – Fix: strip absolute paths from link targets
@@ -150,7 +150,8 @@
- if (!this[CHECKPATH](entry))
+ if (
+ !this[STRIPABSOLUTEPATH](entry, 'path') ||
+ !this[STRIPABSOLUTEPATH](entry, 'linkpath')
+ )
Exploit Details
- Advisory with PoC: GitHub Security Advisory (GHSA‑8qq5‑rm4j‑mr97) demonstrates arbitrary file overwrite.
완화 전략
- 입력 검증: 파일 시스템 작업을 수행하기 전에 모든 아카이브 항목에 대해 경로 트래버설 검사를 수행합니다.
- 최소 권한 원칙: 제한된 파일 시스템 접근 권한을 가진 샌드박스 환경에서 추출 프로세스를 실행합니다.
- 의존성 관리: 깊은 의존성을 정기적으로 감사하고 최신 버전으로 업데이트합니다.
복구 단계
npm audit또는yarn audit를 사용해 취약 인스턴스를 식별합니다.node-tar를 7.5.3 이상 버전으로 업그레이드합니다.preservePaths옵션이 반드시 필요하지 않은 한 비활성화합니다.- lockfile을 재생성하여 하위 의존성이 패치된 버전을 사용하도록 합니다.