CVE-2026-23745: 파멸의 타르피트: node-tar에서 루트 탈출

발행: (2026년 1월 17일 오전 07:08 GMT+9)
4 min read
원문: Dev.to

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: 340eb28Fix: 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

완화 전략

  • 입력 검증: 파일 시스템 작업을 수행하기 전에 모든 아카이브 항목에 대해 경로 트래버설 검사를 수행합니다.
  • 최소 권한 원칙: 제한된 파일 시스템 접근 권한을 가진 샌드박스 환경에서 추출 프로세스를 실행합니다.
  • 의존성 관리: 깊은 의존성을 정기적으로 감사하고 최신 버전으로 업데이트합니다.

복구 단계

  1. npm audit 또는 yarn audit를 사용해 취약 인스턴스를 식별합니다.
  2. node-tar7.5.3 이상 버전으로 업그레이드합니다.
  3. preservePaths 옵션이 반드시 필요하지 않은 한 비활성화합니다.
  4. lockfile을 재생성하여 하위 의존성이 패치된 버전을 사용하도록 합니다.

참고 자료

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...