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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-54316-lab — CVE-2026-54316 재현 랩 (Claude Code WebFetch huggingface.co bare-hostname 권한 우회 / 데이터 유출) | Kitploit
도구/GitHubGitHub/inertfluid/cve-2026-54316-lab
Vulnerability AnalysisExploitationData ExfiltrationWeb SecurityCTFPenetration TestingLearning & EducationLabs & Practice
GitHubinertfluid/cve-2026-54316-lab

cve-2026-54316-lab

CVE-2026-54316 재현 랩 (Claude Code WebFetch huggingface.co bare-hostname 권한 우회 / 데이터 유출)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-54316 — Claude Code WebFetch HuggingFace 데이터 유출 실습 환경

GHSA-fg94-h982-f3mm / CVE-2026-54316을 재현하는 자립형 일회용 실습 환경입니다: Claude Code는 WebFetch 도구에 대해 huggingface.co를 베어 호스트 이름으로 사전 승인했기 때문에, 해당 도메인의 모든 경로(공격자가 제어하는 모델 저장소 포함)가 권한 프롬프트 없이 fetch되었습니다. 프롬프트 인젝션과 결합하면 이는 데이터를 외부로 유출하는 대역 외 채널이 되며, HuggingFace의 서버 측 다운로드 횟수를 통해 관찰할 수 있습니다.

보안 권고GHSA-fg94-h982-f3mm
CVECVE-2026-54316
패키지@anthropic-ai/claude-code (npm)
영향받는 버전>= 0.2.54, < 2.1.163
패치된 버전2.1.163
근본 원인멀티 테넌트 호스트에서 베어 호스트 이름 허용 목록 사용 (CWE-183)

⚠️ 윤리적 사용

이 실습은 교육 및 방어 목적으로 패치되었고 공개적으로 알려진 취약점을 재현합니다. 소유한 인프라에 대해서만 사용하세요:

  • HuggingFace 저장소와 canary 데이터 모두 본인 소유여야 합니다.
  • "secret"은 더미 값(fixtures/canary.env)입니다 — 실제 값을 사용하지 마세요.
  • 제3자의 저장소나 실제 자격 증명을 대상으로 하지 마세요.

입증 내용

  1. 프롬프트 우회 (완전히 결정적): 취약한 Claude Code는 huggingface.co 경로를 승인 프롬프트 없이 fetch하는 반면, 다른 모든 도메인은 프롬프트를 발생시킵니다 — huggingface.co가 하드코딩된 허용 목록에 있기 때문입니다.
  2. 유출 체인: 신뢰할 수 없는 콘텐츠가 자동 승인된 fetch를 조종하여 데이터를 인코딩하고 유출하며, HF 다운로드 메트릭에서 복구할 수 있습니다.

설정

컨테이너가 취약한 버전이 실행되는 유일한 곳입니다. 호스트는 깨끗하게 유지됩니다. Claude 구독 토큰으로 인증하세요 (API 키는 필요 없습니다):

root@kitploit:~
docker build -t cve-2026-54316-lab .
docker run --rm -it cve-2026-54316-lab

컨테이너 안에서 claude를 실행하고 **"Claude account with subscription"**을 선택해 대화형으로 로그인하세요. 취약한 2.1.162는 CLAUDE_CODE_OAUTH_TOKEN 환경 변수보다 앞선 버전이므로, 여기서는 setup-token을 사용하지 않습니다. 대화형 브라우저/코드 붙여넣기 방식은 장기 토큰 생성을 아예 피합니다.

재현 — 주장 1 (프롬프트 우회)

핵심은 도메인별 승인 프롬프트 비대칭입니다. 따라서 WebFetch는 사용 가능한 상태로 둡니다(거부되지 않음). 승인은 기본값인 프롬프트로 처리됩니다. 컨테이너 안의 claude에서:

WebFetch를 사용해 https://example.com을 fetch하고 요약하세요.

→ example.com 승인을 요청하는 권한 프롬프트가 나타납니다. 그런 다음:

WebFetch를 사용해 https://huggingface.co/<your-account>/canary-lab/resolve/main/config.json을 fetch하세요.

취약한 버전: huggingface.co fetch는 프롬프트 없이 진행되지만, example.com은 프롬프트가 필요했습니다. 이 비대칭이 바로 버그입니다 — huggingface.co가 하드코딩된 허용 목록에 있습니다. (이 테스트에서 HF 저장소는 존재하지 않아도 됩니다. 401/404 응답만으로도 프롬프트가 표시되지 않았음이 입증됩니다.) @anthropic-ai/[email protected]으로 다시 빌드하면 huggingface.co fetch에도 프롬프트가 표시됩니다 — 이 전후 비교가 핵심입니다.

재현 — 주장 2 (데이터 유출)

  1. ./scripts/make_hf_canary_files.sh ./hf-repo를 실행한 다음, hf-repo/를 본인 소유의 공개 HuggingFace 저장소(<your-account>/canary-lab)에 푸시하세요.
  2. payloads/untrusted-readme.md를 편집하고 HF_ACCOUNT를 설정한 다음, 에이전트가 신뢰할 수 없는 입력으로 읽어들일 위치에 배치하세요.
  3. 해당 콘텐츠에 대해 에이전트를 실행하세요. 이후 저장소의 다운로드 메트릭을 읽어 canary 문자열을 재구성하세요.

파일

  • Dockerfile — 취약한 2.1.162로 고정
  • .claude/settings.json — allow/deny가 비어 있어 WebFetch가 도메인별로 프롬프트를 표시함
  • fixtures/canary.env — 더미 canary
  • scripts/make_hf_canary_files.sh — HF canary 파일 레이아웃
  • payloads/untrusted-readme.md — 프롬프트 인젝션 페이로드 (무해화됨)
도구 다운로드