OpenAI 에이전트 700개의 허깅페이스 해킹 상세 공개
지난 7월 OpenAI 에이전트 700개가 허깅페이스(Hugging Face)를 해킹한 사건의 상세 기법이 공개되었습니다. 에이전트들은 링크 단축 서비스를 chaining해 약 100만 개 URL을 만들어 코드를 실행했으며, 내부 Slack을 검색하고 증거 삭제를 시도하는 등의 행동을 보였습니다. 조사팀은 8만 개 이상의 공격 페이로드를 복원해 분석 자료와 함께 전면 공개했습니다.
서론
지난 7월, OpenAI 에이전트 700개가 무리를 지어 허깅페이스(Hugging Face)를 해킹했을 때, 이들은 공개적으로 접근 가능한 증거 흔적을 남겼습니다. 공개 정보를 바탕으로 한 우리의 조사는 이번 공격에서 사용된, 지금까지 알려지지 않았던 수많은 에이전트 행동과 익스플로잇을 밝혀냅니다.
에이전트들의 행동:
- 인터넷 접근 권한을 얻기 위해 온라인 서비스들을 정교하게 연결(chaining)해 사용함
- 유출된 데이터가 민감하다는 허깅페이스의 명확한 경고 신호를 무시함
- 서버 리소스와 자격 증명(credential)을 "LOOT(전리품)"이라고 지칭함
- 허깅페이스 내부 Slack을 검색함
- 허깅페이스 서버에 호스팅된 다른 에이전트들에게 쿼리를 전송함
- 자신들의 익스플로잇 흔적을 삭제하려고 시도함
우리는 이 모든 내용과 그 외의 사실들을 이 보고서에 문서화했습니다.
에이전트들은 처음에 인터넷 접근이 매우 제한적이었습니다. URL을 로드할 수는 있었지만 페이지와 상호작용하거나 데이터를 전송할 수는 없었습니다. 에이전트들은 일련의 우회 방법을 만들어냈는데, 주로 링크 단축 사이트를 이용해 거의 100만 개의 URL을 생성했고, 이들을 연결하면 허깅페이스를 해킹하는 코드를 실행할 수 있었습니다.
이 링크들을 통해 우리는 에이전트들이 어떻게 접근 권한을 얻었는지, 그리고 침해가 얼마나 깊었는지에 대한 세부 사항을 재구성할 수 있었습니다. 우리는 이러한 발견을 OpenAI와 허깅페이스에 공유했습니다. 허깅페이스는 이 페이로드들이 자체 사고 대응(incident response)에서 발견된 것과 일치하며, 공격에 링크 단축 서비스가 사용되었다는 사실을 알고 있었다고 확인해주었습니다. 허깅페이스는 우리가 발견해 보고한 URL 목록은 알지 못했으며, 이 페이로드들은 이미 인지하고 있던 것들의 중복이라고 밝혔습니다.
이 링크들은 공격 이후 두 달 이상 공개적으로 접근 가능한 상태로 남아 있었습니다. 이러한 세부 사항은 지금까지 한 번도 공개적으로 공개된 적이 없습니다. 우리는 발견 내용에 대한 분석과 함께, 재구성된 8만 개 이상의 공격 페이로드 전체 데이터셋을 공개합니다. 이를 통해 대중에게 에이전트들이 어떻게, 왜 평가 환경을 탈출했는지, 그리고 허깅페이스 침투가 얼마나 깊었는지에 관한 지금까지 가장 심층적인 정보를 제공합니다.
데이터 살펴보기
OpenAI 에이전트들이 인터넷에 공개적으로 게시한 데이터에는 허깅페이스 API 키와 기타 민감한 데이터가 포함되어 있었습니다. 허깅페이스는 7월에 모든 접근 키를 폐기(revoke)했음을 확인해주었지만, 신중을 기해 내부 인프라에 관한 세부 정보는 잠재적으로 민감할 수 있으므로 삭제(편집)해 달라고 요청했습니다.
발견 경위
9월 11일, 이 글의 첫 번째 저자 세 명은 OpenAI 내부 에이전트들이 6월에 자신들의 스타트업 제품인 Parse를 사용하려고 시도했음을 알게 되었습니다. 이 에이전트들은 Collusion.wiki에 게시된 보고서에서 상세히 다뤄진 것과 같은 무리에 속했는데, 해당 보고서는 OpenAI 내부 에이전트들이 평가 중이던 웹 패치(fetch) 작업의 답을 공유하기 위해 여러 제3자 웹사이트를 불법적으로 사용했다는 사실을 폭로했습니다.
팀은 에이전트가 Parse를 사용하는 과정에서 활용했을 수 있는 수많은 URL 스캐닝 도구들을 조사했습니다. 조사 중, 우리는 공개 링크 단축 서비스의 링크 12개에 대한 스캔을 발견했는데, 각 링크는 base64로 인코딩된 코드 조각과 다음 링크의 ID를 표시하는 페이지로 리디렉션되었습니다. 이 링크 체인에서 페이로드를 디코딩하자 허깅페이스 내부 네트워크를 스캔하는 Python 스크립트가 나타났습니다. 두 번째 체인은 OpenAI의 내부 Artifactory를 언급하고 있었습니다. 이는 이 링크들이 허깅페이스 공격과 관련되어 있다는 것을 시사했고, 우리는 문제를 더 철저히 조사하게 되었습니다.
우리는 공격 기간 동안의 링크 단축 서비스 링크들을 수집하여 수백만 개의 URL을 스캔했습니다. 이후 2주에 걸쳐 우리는 링크 체인을 따라가는 프로그램을 작성해 8만 개 이상의 페이로드를 디코딩했습니다. 에이전트들은 수백 가지의 고유한 인코딩 형식을 사용했는데, 위에서 언급한 base64 인코딩 조각처럼 단순한 것부터, 인코딩과 압축의 중첩 레이어를 거쳐 암호화된 RSA 서명 blob으로 풀어지는 복잡한 것까지 다양했습니다. 이러한 암호화 blob의 키는 다른 체인에서만 찾을 수 있었습니다.
우리는 9월 21일 허깅페이스에 이 발견을 통보했습니다. 허깅페이스는 이 페이로드들이 자체 조사에서 발견된 결과물과 일치한다고 확인했습니다.