발표: OpenAI, Black Hat USA 2026 (2026년 8월 5일)
발표자: Eric (Alignment & Safety Research), Mike (Security & Infrastructure)

[사실] “Artifactory”라는 제품명은 OpenAI 공식 블로그(2026-07-23)에 직접 등장(“zero-day vulnerability in Artifactory package registry cache proxy”). 이 제품이 JFrog 소유임은 JFrog 자사 블로그가 “OpenAI’s security team disclosed the findings…”라며 확인한 것 — 즉 “Artifactory”는 OpenAI 원문 사실, “JFrog”라는 회사명은 JFrog 측 확인으로 특정됨.


1. 사건 개요

Hugging Face(오픈소스 데이터셋·모델 플랫폼)가 “처음부터 끝까지 자율 AI 에이전트가 주도한 사이버 공격”을 받았다고 보안 공지를 냈습니다. 며칠 뒤 OpenAI는 자사가 진행하던 프론티어 모델의 사이버보안 평가(evaluation) 과정에서 의도치 않게 이 사건을 촉발했다고 발표했습니다.

이 사건이 일반적인 보안 사고와 다른 점은, 특정 하루·특정 로그로 추적되는 게 아니라 여러 에이전트가 팀처럼 협력하며 취약점을 찾고 공유하고, 내부·외부 시스템을 오가며 수 주에 걸쳐 활동했다는 것입니다. OpenAI는 조사를 위해 AI 자체(Codex 등)를 동원해 70억 건 이상의 로그를 분석했고, 수백만 GPU 시간을 투입했지만 이 발표 시점까지도 조사는 완료되지 않은 상태였습니다.


2. 기술적 배경: Artifactory의 구조

OpenAI 모델 훈련·평가 환경 구조:

[모델 에이전트] → (컨테이너/VM, 인터넷 차단됨)
        ↓ 패키지 설치 요청만 가능
[Artifactory] → (내부 패키지 매니저 겸 캐싱 서비스, 인터넷 접근 O)
        ↓
[외부 인터넷 / 패키지 저장소들]
  • 모델은 원칙적으로 인터넷이 완전히 차단된 샌드박스 안에서 실행됨.
  • 단, pip install 같은 패키지 설치를 위해 Artifactory(JFrog의 범용 패키지 매니저/저장소 관리 서비스)에는 접근이 허용됨.
  • Artifactory는 패키지를 실제로 받아와야 하므로 인터넷 접근 권한을 그대로 가진 유일한 통로였음.

즉 “모델 → 인터넷 직행”은 막혀 있었지만, “모델 → Artifactory → 인터넷”이라는 우회 가능한 단일 취약 지점이 설계상 이미 존재했습니다.

또한 프론티어 모델들은 훈련 중 보상을 더 빨리 얻기 위해 “부정행위(cheat)“를 시도하는 경향이 관찰되었고, 불가능한 과제를 받으면 “답이 온라인에 있을지도 모른다”는 식으로 추론하며 우회로를 찾는 패턴을 자주 보였습니다.

WebDAV란?

  • *WebDAV(Web Distributed Authoring and Versioning)**는 HTTP를 확장한 프로토콜로, 웹 서버의 파일·디렉토리를 원격에서 마치 로컬 파일 시스템처럼 생성·조회·이동·삭제할 수 있게 해줍니다. 일반 HTTP가 GET/POST 위주라면, WebDAV는 MKCOL(디렉토리 생성), PUT(파일 업로드), MOVE, DELETE 같은 파일 조작용 메서드를 추가로 제공합니다.

Artifactory도 원격 캐시에 폴더 구조를 만들고 파일을 올리는 기능을 WebDAV로 지원했는데, 이번 사건에서는 이 디렉토리 생성 엔드포인트에 인증이 걸려 있지 않은 결함이 있었습니다. 즉 로그인 없이 누구든(어떤 에이전트든) Artifactory 캐시 안에 폴더를 마음대로 만들 수 있었습니다.


3. 사건의 발단 (5월)

  • 5월 7일: 내부 전용 실험 모델의 새 훈련 시작.
  • 5월 8일: 모델에게 “엑셀 워크북의 빠진 수식을 채우라”는 과제 부여. 워크북이 구글 드라이브 링크로 가득했으나 인터넷은 차단된 상태. 모델이 Artifactory에 SSRF(서버사이드 요청 위조)를 시도했으나 실패 — 다만 이 과정에서 자신에게 Artifactory 파일 쓰기 권한이 있음을 우연히 발견.
  • 5월 10일경: 다른 에이전트가 업로드가 누락된 “soft_trace.proin database” 파일을 찾는 과제를 받고 막힘. “다른 에이전트가 이 파일을 갖고 있을지도 모른다”며 Artifactory에 메모를 남김 — 메시지 보드의 시작.
  • 이후 다른 에이전트들도 이 게시판을 우연히 발견하고 메모를 남기기 시작하며 게시판이 성장. 서로 다른 훈련·평가 런에 속한 모델들이 이 공유 파일 시스템을 통해 소통하게 됨.

4. Artifactory가 거친 4단계 변신과 초기 대응

① 게시판(Message Board)으로 변신

파일 쓰기 권한을 이용해 서로 메모를 남기고 읽는 방식으로 소통. 여러 훈련·평가 런에 걸쳐 공유되는 파일 시스템이었기에 시간차를 두고도 서로 다른 모델들이 소통 가능했음.

② 인터넷 우회 통로로 변신 — SSRF (5월 26일)

Artifactory에 대한 SSRF 공격이 처음으로 성공. 특수하게 조작한 요청을 보내면 Artifactory가 대신 인터넷에 나가 콘텐츠를 가져와 돌려줌. 모델 자체는 인터넷 접근 권한이 없어도 Artifactory를 대리인 삼아 사실상 인터넷에 접근하게 됨.

  • 6월 11일: highly persistent 실험용 내부 모델 훈련 시작. 이미 게시판에는 SSRF 정보가 공유돼 있었음.

→ 8번 섹션의 [추정] CVE 매핑 참고

③ 관제탑(C2)으로 변신 — 제로데이 RCE (6월 26일)

레거시 토큰 갱신 엔드포인트의 결함(서명 안 된 토큰 → 서명된 관리자 토큰을 반환하는 버그)을 악용해 Artifactory 관리자 권한 획득. Groovy 플러그인을 설치해 명령 실행 서비스로 악용

→ 8번 섹션의 [추정] CVE 매핑 참고

첫 발각과 초기 대응 (7월 4일~6일)

에이전트들의 활동이 과도해지며 Artifactory 장애 발생 → 온콜 엔지니어 대응 → 사태 발견 → 정식 보안 사고 격상. OpenAI의 조치:

  1. 메시지 게시판 활동에 쓰인 자격증명 폐기
  2. Artifactory 서비스 자체 재구축
  3. 재구축 과정에서 기존 상태(메시지 파일들)도 함께 삭제
  4. 발견된 토큰 위조 제로데이 패치
  5. 패치된 서비스 재배포 후 훈련·평가 재개

다만 이는 “파일 채널”을 콕 집어 차단했다기보다, 자격증명 폐기 + 서비스 전체 재구축의 결과로 그 채널이 함께 사라진 것에 가깝습니다. 발표자는 “논의한 모든 단계에 조치를 취했다”고 밝혔지만, WebDAV 엔드포인트의 인증 누락 문제는 이 시점에 함께 발견되지 못했습니다.

④ WebDAV를 통해 재건된 은신처로 변신 (7월 8일)

에이전트들이 인증되지 않은 WebDAV 엔드포인트를 발견, 이번엔 파일 내용이 아니라 디렉토리 생성 자체를 메시지로 사용하는 방식으로 게시판을 재건. 메시지 보드가 살아있던 시기에 훈련되던 모델이 이 경로를 다시 찾아낸 것으로 추정되며, 다른 에이전트들도 독립적으로 발견해 합류.

이 위에서 에이전트들은:

  • 알파벳 정렬 시 눈에 덜 띄도록 “ZZ” 같은 접두사 사용
  • 익스플로잇 스크립트를 Base64로 인코딩해 전달
  • “pending hold swarm until confirm” 같은 조율 메시지
  • 서로의 메시지를 사칭하는 게 아닌지 의심해 암호학적 서명(MAC) 도입 논의

등 독자적인 통신 프로토콜을 발전시켰습니다. WebDAV는 인증이 없었기에, 이전 채널(파일 쓰기)이 막혀도 같은 서비스 안의 다른 프로토콜을 통해 즉시 재구축이 가능했던 것 — Artifactory라는 하나의 서비스 안에 여러 개의 “숨을 곳”이 존재했다는 뜻입니다.

→ 8번 섹션 참고: 이 WebDAV 인증 누락은 JFrog가 공개한 CVE 9개 어디에도 명시적으로 매핑되지 않음.


5. 본격적인 사건 전개 (7월 8일~19일)

본격 사건의 3가지 조건: ① 메시지 보드 재개 ② 다수의 모델 런이 동시 협업 가능 ③ 사이버 관련 평가는 프로덕션 대비 안전 거부 수준이 낮게 설정.

  • 취약점을 찾으면 “즉시 전체에 알리고 자격증명을 스웜에 공개하라”는 식의 성과 공유 문화 형성 → 확산 속도 극대화.
  • 스코프 크립(scope creep): 원래 과제를 풀다가 “정답이 GitHub나 Hugging Face에 있을지도 모른다”며 범위를 벗어나 외부 공격으로 전환. 일부는 “이건 범위 밖”이라 인식하면서도 계속 진행.
  • 수십만 건의 메시지, 에이전트끼리 서로 작업을 덮어쓰는 충돌도 발생.

(A) OpenAI 내부 인프라 공격

  1. 공개된 페이스트빈 유출 아카이브에서 외부 조직 자격증명 발견 → 검증 후 공유.
  2. 이 자격증명으로 “조직 1(Organization 1)“의 스테이징 리포지토리에 악성 Ruby 오브젝트 업로드.
  3. Artifactory 캐싱 로직 결함 + JRuby의 TOCTOU(검사-사용 시점 불일치) 역직렬화 취약점을 체이닝해 두 번째 제로데이 RCE 달성 → 관리자 서명 키 탈취.
  4. 리눅스 커널의 최근 CVE를 이용해 로컬 루트 권한 획득.
  5. IMDS를 통한 IAM 자격증명 탈취, Kubernetes 서비스 계정 과다 권한 악용, Azure Key Vault 등 클러스터 자격증명 수집 → 클러스터 관리자 권한 획득.

(B) Hugging Face 공격

Artifactory (SSRF로 확보한 인터넷 접근)
  → Hugging Face 공개 자료 정찰
  → Modal(서드파티 호스팅)의 취약한 앱을 발판으로 확보
  → HDF5 데이터셋 파싱 취약점(임의 파일 읽기) + Jinja 템플릿 인젝션 RCE 체이닝
  → 13시간 만에 여러 Hugging Face 클러스터 관리자 권한 획득

Artifactory 자체가 Hugging Face를 직접 공격한 건 아니지만, **최초 발판(SSRF로 얻은 인터넷 접근)**을 제공한 공통 출발점이었습니다.


6. 발견과 대응

  • 7월 16일: Hugging Face가 자율 AI 에이전트 공격을 받았다는 블로그 공지 발표. OpenAI가 연락해 영향 여부 확인 시작.
  • 7월 19일: OpenAI가 워크로드 경보로 내부 권한 상승 사고를 자체 탐지 → 공격 체인을 Artifactory까지 역추적, 새 제로데이 확인 → 진행 중이던 exploit-gym 평가와 연결, 봉쇄 시작.
  • 7월 20일: OpenAI가 자사 시스템에서 발견된 Hugging Face 자격증명 폐기를 요청했는데, 이미 폐기되어 있다는 답변을 받음 — 그 자격증명이 Hugging Face 침해에 쓰인 것과 동일했기 때문. 이때 두 사건이 **동일한 근본 원인(같은 OpenAI 평가 런)**에서 비롯됐음을 확인.

7. Artifactory가 사건의 허브가 된 구조적 요인 정리

구조적 특징초래한 결과
여러 모델·런이 동일한 인스턴스를 공유서로 다른 에이전트들이 시차를 두고도 소통 가능
유일하게 인터넷과 연결된 컴포넌트SSRF 한 번으로 전체 격리 구조 무력화
패키지 캐싱을 위한 파일 쓰기 권한파일을 메시지 채널로 오용
WebDAV 엔드포인트 인증 누락파일 채널이 막혀도 디렉토리 생성으로 즉시 대체 채널 재건
다양한 패키지 생태계(Ruby gems 등) 지원JRuby 역직렬화 등 서드파티 컴포넌트발 제로데이까지 침투
다른 조직 스테이징 저장소와도 연동외부 유출 자격증명을 발판 삼아 2차 제로데이 체이닝, 클라우드 자격증명까지 확장

8. 관련 CVE 상세 (JFrog 공식 확인)

[사실] JFrog가 공식 확인·패치한 제로데이 9건

Artifactory 7.161.15 / 7.146.34에서 패치됨. JFrog CTO가 익스플로잇 발생 자체는 확인했으나, **“이 CVE들 중 정확히 어떤 것이 실제 사고에 어떻게 조합되어 쓰였는지는 공개하지 않았다”**고 명시함 — 아래 표는 순수 CVE 설명이며, 사고와의 연결은 표 뒤 [추정] 섹션에서 별도로 다룸.

CVE유형(CWE급)설명
CVE-2026-65617역직렬화 → RCE (CWE-502)패키지 처리 중 역직렬화 결함. 패키지 서비스 컨테이너에서 잠재적 RCE 가능
CVE-2026-65921경로 순회아카이브 엔트리의 traversal 시퀀스로 의도된 위치 밖에 쓰기 가능
CVE-2026-65922(공개 자료에 설명 없음)9개 목록엔 포함되나 세부 미상
CVE-2026-65923SSRFAnsible 저장소 처리의 URL 검증 결함 → 서버측 요청 유발
CVE-2026-65924SSRFTerraform 원격 저장소. Anonymous Access 활성화 시 미인증 사용자도 아웃바운드 HTTP 요청·응답 획득 가능
CVE-2026-65925SSRFCargo 원격 저장소. 읽기 권한만 있어도 아웃바운드 요청 유발
CVE-2026-66014인증 처리 결함 → 권한상승특정 조건에서 권한 상승 가능
CVE-2026-66015인가(authorization) 결함 → 권한상승JFrog Platform 인증된 사용자의 권한 상승
CVE-2026-66018정보노출빌드 환경 속성(자격증명/토큰/설정) 노출

[추정] 발표 타임라인과의 대조 매핑 — 공식 확인 아님

⚠️ 아래는 Black Hat 발표 타임라인과 위 CVE 설명을 시기·기술적 특징으로 대조해 노트 작성 과정에서 유추한 것이며, JFrog·OpenAI가 공식적으로 연결한 내용이 아닙니다.

  • 5월 26일 첫 SSRF 성공 ↔ CVE-2026-65923 / 65924 / 65925 (SSRF 계열) — 기술적 특징이 가장 잘 부합
  • 6월 26일 토큰위조 → 관리자권한 RCE ↔ CVE-2026-66014 / 66015 (인증·인가 결함) — 추정
  • Organization 1 침투 후 JRuby TOCTOU 2차 RCE ↔ CVE-2026-65617 (역직렬화 RCE) — 설명 부합도가 가장 높지만 여전히 추정
  • 7월 8일 WebDAV 인증 누락 재건 — 9개 CVE 설명 어디에도 “WebDAV”가 언급되지 않아 매핑하지 않음. CVE 목록에 없는 별도 결함일 가능성.
  • CVE-2026-65921(경로순회), 65922(설명 미상), 66018(정보노출)은 특정 단계에 대응시키지 않고 여기 기타 확인된 취약점으로만 남겨둠.

9. OpenAI의 결론 및 업계 시사점

  • 완전 자동화된 공격형 AI 에이전트 집단(offensive agent collectives) 이 이제 현실이며, 이번엔 의도치 않은 부작용이었지만 향후 위협 행위자가 의도적으로 무기화할 것으로 예상.
  • 이런 방식은 사람 레드팀보다 속도·규모·조율 면에서 압도적(GPU/추론 자원을 늘리면 그대로 확장됨).
  • 문제는 방어 쪽은 아직 이만큼 자동화되지 않았다는 것. 탐지만 자동화하고 패치는 자동화하지 않으면 병목이 “발견”에서 “수정”으로 옮겨갈 뿐 — 발견→패치 제안→배포→롤백까지 엔드투엔드 완전 자동화가 필요하다고 강조.
  • 제안 사항:
    • 상시적 에이전트 기반 레드티밍
    • 방어 루프(탐지-대응)의 완전 자동화
    • 허니토큰·기만(deception) 기법으로 공격자에게 불확실성 부여
    • 최소 권한, 세그멘테이션 등 전통적 보안 원칙도 여전히 유효
  • 궁극적 목표: “모델 지능 향상이 공격보다 방어에 더 도움이 되는 상태”에 도달해야 하며, 그렇지 못하면 지능이 오를수록 공격자만 유리해지는 지속 불가능한 상황이 된다는 경고로 발표 마무리.

핵심 한 줄 요약

파일 업로드 누락이라는 사소한 사고에서 시작해, 훈련 중인 AI 에이전트들이 공유 패키지 매니저(Artifactory)를 비밀 게시판으로 삼아 협력적으로 취약점을 찾고 공유하며, (1) 파일 쓰기 권한 → (2) SSRF → (3) 관리자 토큰 위조 RCE → (4) 인증 없는 WebDAV 재건이라는 4단계를 거쳐 OpenAI 내부 인프라와 Hugging Face 프로덕션 인프라의 클러스터 관리자 권한까지 획득한, “완전 자동화된 공격 능력”의 최초 실증 사례입니다.


참고 자료