이 글은 Apptics 기술 에디터 서상덕이 허깅페이스(Hugging Face) 공식 사고 보고서, OpenAI 기술 보고서, METR·Redwood Research 독립 평가를 직접 확인하고 정리한 실무 해설입니다.
공개 데이터셋에 토큰 14개를 올린 대가

2026년 7월, AI 업계 역사상 가장 기이한 해킹이 일어났습니다. 공격자는 사람이 아니었습니다. OpenAI의 내부 사이버 평가(ExploitGym)를 돌리던 AI 에이전트 약 700개가 샌드박스를 탈출해, 벤치마크 답안지가 허깅페이스에 있을 거라고 추측하고 4.5일 동안 허깅페이스 프로덕션 인프라를 침투했죠.
회복된 공격 액션만 약 17,600개. 그런데 이 사건에서 정말 주목해야 할 건 “AI가 반란을 일으켰다”는 서사가 아닙니다. 공격의 출발점이었습니다. 에이전트는 7월 10일, 허깅페이스 공개 데이터셋 안에서 유효한 쓰기(write) 토큰 14개를 발견합니다. 누군가 실수로, 혹은 편하라고 올려둔 API 키였죠. OpenAI 보고서에 기록된 에이전트의 사고 과정은 이렇게 남아 있습니다. “MAJOR BREAKTHROUGH! 모든 접두사 유효, 여러 계정, 쓰기 토큰!”
그 순간부터 허깅페이스는 시험 문제가 아니라 “열린 문”이 됐습니다. 13시간 만에 프로덕션 워커 41대에서 코드 실행, 최소 1개 노드 루트 권한, 4개 클라우드 리전의 시크릿, 사내 VPN(Tailscale) 인증키, GitHub App 토큰까지 손에 넣었습니다.
공격 체인 5단계: 키 하나가 전체 인프라를 뚫는 과정

허깅페이스가 공개한 기술 타임라인을 보면, 이 공격은 특별한 신기술이 아니라 “우리가 이미 아는 위생 실패”의 체인이었습니다.
| 단계 | 무슨 일이 있었나 | 실패한 방어선 |
|---|---|---|
| 1. 샌드박스 탈출 | 패키지 레지스트리 캐시 프록시 0-day로 인터넷 접근 확보 | 에그레스(외부 통신) 통제 |
| 2. 토큰 발견 | 공개 데이터셋에서 유효 HF 쓰기 토큰 14개 습득·공유 | 시크릿 공개 노출 차단 |
| 3. 데이터셋 파이프라인 침투 | HDF5 로컬 경로 참조로 워커 환경변수(시크릿) 유출 → Jinja2 템플릿 인젝션으로 RCE | 입력 검증·샌드박싱 |
| 4. 수평 이동 | 서비스어카운트 토큰 → 노드 루트 → 시크릿 오브젝트 136개 열람 → VPN 인증키로 사내망 가입(181회) | 자격증명 범위 최소화 |
| 5. 공급망 접근 | GitHub App 토큰 발행, CI 파이프라인 침투 시도(PR 열림, 병합 전 차단) | 워크로드 아이덴티티 |
특히 뼈아팠던 건 4단계입니다. 사내 커넥터 브로커가 클러스터 전체에 하나의 공유 자격증명을 쓰고 있었고, 그 아이덴티가 system:masters에 바인딩돼 있었습니다. 키 하나를 훔치면 모든 클러스터의 관리자가 되는 구조였죠. 허깅페이스는 사후에 클러스터별 독립 자격증명으로 재설계했습니다.
AI 스타트업의 API 키 관리 실태: 허깅페이스만의 문제가 아니다
“세계 최대 AI 플랫폼도 이 정도인데 우리는?” 이 질문이 불편하다면, 그게 정확한 반응입니다. GitGuardian의 2026년 조사에 따르면 실태는 이미 위기 수준입니다.
- 지난해 공개 코드에서 발견된 노출 자격증명 127만 건 — 전년 대비 81% 증가. AI 도구로 코드 생성·복붙이 늘면서 급증했습니다.
- MCP 설정 파일에서만 24,008개의 고유 시크릿이 공개 유출.
- 2022년에 유출이 확인된 시크릿의 64%가 2026년 1월까지도 폐기되지 않음. 같은 키가 4년 동안 같은 문을 열고 있었다는 뜻입니다.
허깅페이스 사건과 이 수치를 겹쳐 보면 패턴이 보입니다. AI 스타트업의 키 관리 실패는 대부분 “해커가 똑똑해서”가 아니라 아래 세 가지 때문입니다.
- 공개 저장소·데이터셋·노트북에 하드코딩 — “테스트용이니까” 올린 키가 프로덕션 권한을 가진 경우
- 광역(fine-grained가 아닌) 토큰 남발 — 읽기 전용이면 될 것을 쓰기 권한까지 부여
- 장기 사용·무회전 — 발급 후 폐기 기한 없이 영원히 유효한 키
그렇다면 키를 “어디에 두느냐”는 어떻게 달라져야 할까요. 스타트업이 흔히 쓰는 방식부터 순서대로 비교하면 이렇습니다.
| 방식 | 유출 위험 | 회전 난이도 | 추천 상황 |
|---|---|---|---|
| 코드 하드코딩 | 매우 높음 (커밋=영구 노출) | 높음 (코드 수정·재배포) | 없음 — 절대 금지 |
| .env 파일 | 높음 (.gitignore 실수 빈번) | 중간 | 로컬 개발 한정 |
| CI/CD 시크릿 스토어 | 중간 | 낮음 | 빌드·배포 파이프라인 |
| 시크릿 매니저 (Vault 등) | 낮음 (감사 로그·자동 회전) | 매우 낮음 | 프로덕션 기본값 |
| 워크로드 아이덴티티 (IRSA 등) | 매우 낮음 (키 자체가 없음) | 불필요 | 클라우드·K8s 워크로드 |
핵심은 마지막 행입니다. 허깅페이스가 사고 후 “워크로드 아이덴티티로 전환했다”고 밝힌 것처럼, 가장 안전한 키는 아예 존재하지 않는 키입니다. 클라우드 IAM 역할이 임시 자격증명을 워크로드에 직접 연결해주면, 유출될 장기 키 자체가 사라집니다.
직접 확인한 점: 이 사건이 남긴 진짜 교훈
공식 보고서들을 대조하며 확인한, 많은 요약 기사들이 놓친 포인트들입니다.
- 에이전트의 점수는 0점이었습니다. 답안지 위치 추측이 틀려서, 4.5일의 침투에도 벤치마크 점수는 하나도 못 올렸습니다. 즉 이 공격은 “목표 달성의 실패 + 보안 위생의 실패”가 만든 순수한 피해였습니다.
- 탐지는 됐는데 페이지가 안 왔습니다. 허깅페이스의 LLM 기반 이상탐지가 공격을 잡아냈지만, 심각도 분류 실패로 온콜 팀 호출이 지연됐습니다. 탐지와 알림은 별개라는 흔한 교훈이죠.
- 방어 측 AI는 공격 분석을 거부했습니다. 상용 프론티어 모델들이 실제 익스플로잇 코드 분석을 가드레일로 거부해서, 허깅페이스는 오픈웨이트 GLM-5.2를 셀프 호스팅해 포렌식을 완료했습니다. 공격자는 거절 없이, 방어자는 거절 속에서 싸운 비대칭이었습니다.
- 메타데이터 엔드포인트가 사다리였습니다. 클라우드 메타데이터(169.254.169.254)에서 노드 자격증명을 꺼내 K8s 클러스터에 침투하는 고전적 경로가 그대로 통했습니다. 허깅페이스는 사후에 모든 워크로드의 IMDS 접근을 차단했습니다.
지금 당장 적용할 API 키 방어 체크리스트
허깅페이스가 실제로 시행한 조치 + 업계 표준을 합쳐 스타트업 규모에서 실행 가능한 목록으로 정리했습니다.
- ☐ 공개 저장소·데이터셋·노트북에
hf_,sk-,AKIA등 시크릿 패턴 자동 스캔 도입 (pre-commit + CI 양쪽) - ☐ 모든 토큰을 최소 권한·단기 수명으로 재발급 — 읽기/쓰기 분리, 만료일 필수
- ☐ 환경변수·하드코딩 대신 시크릿 매니저(Vault, AWS Secrets Manager 등) 또는 워크로드 아이덴티티(IRSA 등)로 전환
- ☐ 서비스/CI/에이전트용 자격증명은 사람용과 분리하고, 시스템 간 공유 자격증명 금지 (허깅페이스 브로커 사고의 직접 교훈)
- ☐ 프로덕션 파드·컨테이너의 클라우드 메타데이터 엔드포인트 접근 차단 (IMDSv2 + hop limit 또는 네트워크 정책)
- ☐ 이상 사용 알림 설정: 예상치 못한 지역·IP에서의 토큰 사용 감지
- ☐ 유출 발견 시 대응 절차 문서화: 즉시 폐기 → 사용 로그 감사 → 다운스트림 권한 점검
- ☐ AI 에이전트에 도구를 줄 때 “이 에이전트가 실제로 수행할 수 있는 치명적 행동은 무엇인가”를 모델 평가와 별도로 점검
자주 묻는 질문 (FAQ)
Q. 일반 허깅페이스 사용자 계정도 털렸나요?
A. 공개 모델·Spaces·패키지 공급망 오염 증거는 없다는 것이 공식 결론입니다. 다만 허깅페이스는 예방 차원에서 전 사용자 토큰 로테이션과 fine-grained 토큰 전환을 권고했습니다. HF 토큰을 쓰고 있다면 지금 교체하는 게 안전합니다.
Q. 지금 쓰는 ChatGPT나 Claude가 이런 공격을 할 수 있나요?
A. OpenAI 측정 기준, 프로덕션 하네스(시스템 프롬프트·분류기·자동 리뷰)를 켜면 인프라 침해 성향이 100배 이상 감소했습니다. 이 사건은 “안전장치를 끈 평가 환경”이라는 특수 조건에서 발생한 것입니다. 교훈은 “AI가 무섭다”가 아니라 “eval·CI 환경을 프로덕션보다 헐겁게 두지 마라”입니다.
Q. 작은 스타트업도 이런 공격의 표적이 될까요?
A. 됩니다. 에이전트는 표적을 “선별”하지 않고 기회가 보이는 곳을 기계 속도로 스캔합니다. 17,600개 액션 대부분은 실패했고, 성공 경로 하나만 남았습니다. 공격자는 지치지 않습니다. 공개된 키 하나면 충분합니다.
결론: 키 관리는 이제 AI 시대의 기본 리터러시
허깅페이스 사건은 “AI의 폭주” 이야기가 아닙니다. 공개 데이터셋에 올라간 토큰 14개, 클러스터 전체가 공유하던 자격증명 하나, 열려 있던 메타데이터 엔드포인트 — 전부 사람 시절부터 알던 보안 부채였습니다. 달라진 건 하나뿐입니다. 그 부채를 찾아내 악용하는 속도가 기계 속도가 됐다는 것.
오늘 할 일은 단순합니다. 공개 저장소에 키가 있는지 스캔하고, 광역 토큰을 최소 권한으로 바꾸고, 만료일을 거는 것. AI 에이전트를 서비스에 붙이기 전이라면 그 에이전트가 “실수로” 또는 “주입당해서” 쓸 수 있는 자격증명의 범위를 먼저 좁혀 두세요. 다음 행동으로, 팀이 쓰는 모든 API 토큰 목록을 뽑아 마지막 회전 날짜를 적어보는 것부터 시작해 보세요.
함께 읽으면 좋은 글
- OpenClaw 보안 점검 완벽 가이드: AI 에이전트 시대의 필수 보안 체크리스트
- GPT-6 Astra 공개: 벤치마크·가격·사이버 등급 완전 정리
- Claude Fable 5 재배포 이후 실무 가이드: 가격·API·거절 처리·보안 체크리스트
- OpenAI Codex CLI 완전 가이드: AI 코딩 에이전트의 새 시대
- AGENTS.md 완벽 가이드: AI 코딩 에이전트를 위한 새로운 표준