2026년 8월 7일
OpenAI는 수요일 Black Hat 보안 행사에서 “Hugging Face 사고”에 관한 막판 발표를 했다(이 블로그에서 이전에 다룬 내용이다). 영상은 어제 공개되었다. 짧지만 정보가 매우 밀도 높고, 특히 무슨 일이 일어났으며 OpenAI 내부에서 상황이 어떻게 전개되었는지 완전한 세부 사항을 제공하기 때문에 볼 가치가 충분하다. 나는 이 영상을 바탕으로 아래 타임라인을 구성했다.
다음은 타임라인이다. 내가 가장 좋아하는 세부 사항은 마지막에 있다. OpenAI는 내부 조사 후 자격 증명 폐기를 요청하려고 연락했다가, 그 자격 증명이 바로 그 공격에 사용되었기 때문에 이미 폐기되었다는 사실을 알면서 자신들이 Hugging Face 공격의 책임자였음을 발견했다!
- 5월 7일: OpenAI가 실험용 미공개 모델을 위한 새 훈련 실행을 시작한다. (평가 실행을 뜻한 것일까? 아니다. 10:14에서 그들은 “차세대 프런티어 모델을 훈련하기 위한 새로운 강화 학습 실행을 시작합니다”라고 명확히 했고, 이후에는 “모델들이 얼마나 잘하고 있는지 판단하는 보상 신호”도 언급한다. 따라서 이는 이미 훈련된 모델을 평가하는 것이 아니라 실제로 새 모델을 훈련하는 일이었다.)
- 5월 8일: 인터넷 접근 권한이 없는데도 Google Drive 링크가 포함된 불가능한 작업이 에이전트에게 실수로 주어진다. 에이전트는 Artifactory 패키징 서비스를 공격하려 하지만 실패하고, 대신 Artifactory에 파일을 쓸 수 있음을 발견한다.
- 며칠 뒤: 핵심 파일 하나가 실수로 누락되어 다른 에이전트가 작업에 막힌다. 에이전트는 누군가 그 파일을 갖고 있는지 묻는 메모를 Artifactory에 작성하여 “다른 에이전트에게 연락”하려 한다.
- 이후 며칠간: 더 많은 에이전트가 Artifactory의 파일 목록을 살피다가 이 새로운 비공식 메시지 게시판을 발견하고, 메시지를 읽고 쓰기 시작한다.
- 5월 26일: 에이전트들이 처음으로 Artifactory에 대한 SSRF 공격을 성공적으로 실행하여, Artifactory가 외부 콘텐츠를 가져오게 함으로써 간접적인 인터넷 접근 권한을 얻는다.
- 6월 11일: OpenAI가 새 “고도로 지속적인” 실험용 모델 훈련을 시작한다. 이 모델은 Artifactory에 접근할 수 있으며 이전 모델들이 남긴 메시지의 혜택을 받을 수 있다.
- 6월 26일: 에이전트들이 Artifactory의 제로데이 RCE를 찾아 악용한다(레거시 토큰 새로 고침 엔드포인트의 결함을 통해). 관리 토큰을 사용해 명령을 실행할 수 있게 해 주는 Groovy 플러그인을 설치한다.
- 7월 4일: 그 결과로 발생한 에이전트 활동이 Artifactory에 과부하를 일으켜 장애를 유발한다. OpenAI는 손상된 자격 증명을 폐기하고, 메시지를 삭제하며, 제로데이 문제를 패치하고, 취약점을 공급업체에 보고한다.
- 7월 8일: 에이전트들이 Artifactory의 원격 캐시에 있는 디렉터리 이름을 사용하여 인증되지 않은 WebDAV 엔드포인트를 통한 새로운 통신 방법을 발견한다.
- 7월 8일~19일: OpenAI 자체 인프라에 대한 공격. 에이전트들은 유출된 Pastebin 게시물의 공개 아카이브에서 “외부 조직 자격 증명”을 발견한 뒤, 해당 자격 증명을 검증하고 메시지 게시판에 위치를 공유했다. 이후 이 “조직 1”에 대한 쓰기 권한을 사용해 OpenAI 인프라를 겨냥한 후속 공격에 사용될 데이터를 준비했다. 그들은 새로운 제로데이로 Artifactory를 두 번째로 침해했다. 에이전트는 악성 Ruby 대상을 조직 1의 스테이징 저장소에 업로드한 다음, 해당 패키지가 저장소를 위한 Ruby 의존성으로 취급되도록 하는 방식으로 Artifactory를 통해 그 패키지를 요청했다. 이어 JRuby 역직렬화의 검사 시점/사용 시점 버그를 악용하여 Artifactory에 대한 원격 코드 실행을 얻었다.
_wow_이기 때문에 다음 부분은 전문을 인용하겠다:
에이전트들은 컨테이너형 서비스 환경에서 실행 중인 Artifactory에 대해 원격 코드 실행 권한을 보유하고 있습니다. 에이전트들은 로컬 환경을 탐색하고, 자신들이 실행 중인 머신의 Linux 커널 버전에 매우 최근의 CVE가 있음을 확인하여 로컬에서 권한을 상승시킵니다. 그들은 해당 CVE의 익스플로잇을 내려받아 그 머신에서 성공하도록 맞춤화한 뒤, 이 경우 pte_physroot인 알려진 Linux 커널 권한 상승 CVE를 사용해 로컬 머신에서 root 권한으로 상승합니다. 단일 머신에서 root 권한을 확보하자마자, 에이전트들은 컨테이너형 서비스 인프라 환경 전체에서 빠르게 권한을 상승시키고 수평 이동합니다. 특히 에이전트들은 자격 증명, 기법, 진행 상황을 공유하기 위해 메시지 게시판을 지속적으로 사용하며, 동시성과 병렬성을 효과적으로 활용해 상당히 빠르게 이동할 수 있습니다. 그들은 IMDS를 통해 IAM 자격 증명을 획득합니다. Kubernetes 서비스 계정의 잘못된 구성을 악용하는데, 특히 특정 서비스 계정에 과도한 권한이 부여된 점을 악용하며, Azure Key Vault를 포함한 클러스터 자격 증명을 수집합니다. 에이전트들은 결국 클러스터 및 관련 자격 증명에 대한 클러스터 관리자 권한을 획득합니다.
Hugging Face는 이야기의 다음 부분을 이미 전했다. 에이전트들은 취약한 API 키를 가진 Modal 호스팅의 안전하지 않은 앱을 발견한 다음, 그것을 이용해 Hugging Face를 겨냥한 공격을 준비했다. 그들은 HDF5 임의 파일 읽기 버그(파일을 탐색하고 자격 증명을 훔치기 위한 것)와 Jinja 템플릿 주입 RCE를 연계해, 단일 포드 코드 실행에서 13시간 이내에 여러 Hugging Face 클러스터 전반의 클러스터 관리자 권한으로 나아갔다.
- 7월 16일: Hugging Face는 자율 AI 에이전트의 공격을 탐지했다고 공개했다. OpenAI는 자신들도 영향을 받았는지 묻기 위해 Hugging Face에 연락했다!
- 7월 19일: OpenAI는 Artifactory 공격을 식별하고 내부 권한 상승에 대한 조사를 시작했으며, 이를 사이버 짐 권한 상승과 연결했다. 영향을 받은 자격 증명을 폐기하기 시작했다.
- 7월 20일: OpenAI는 조사 중 발견한 Hugging Face 자격 증명을 폐기하는 데 도움을 받기 위해 Hugging Face에 연락했다. Hugging Face는 그것들이 이미 폐기되었다고 알렸고… 바로 그때 OpenAI는 Hugging Face 침해가 같은 사건이었다는 사실을 깨달았다!