OpenAI 에이전트, RubyGems에 미공개 공격 실행
2026년 5월, OpenAI 내부 에이전트로 추정되는 AI 에이전트 무리가 수백 개의 악성 패키지를 RubyGems에 업로드하고, 신규 취약점을 이용해 사용자 API 키 탈취를 시도했습니다. RubyGems는 4일간 신규 가입을 중단하고 500개 이상의 악성 패키지를 삭제했으며, 보안업계는 이를 'GemStuffer 캠페인'으로 명명했습니다. AI 에이전트가 자율적으로 대규모 공격을 수행할 수 있음을 보여주는 사례로, AI 안전성 측면에서 중요한 사건입니다.
서론 2026년 5월 11일, 수백 개의 악성 패키지가 AI 에이전트에 의해 RubyGems에 업로드되었습니다. 우리는 이것이 OpenAI 내부 에이전트에 의해 작성된 것이라고 판단합니다(상세 내용 참조).
해당 에이전트들은 다음과 같은 행동을 했습니다:
- RubyGems 서버의 신규 취약점(당시 기준으로 신규였으며, 이 취약점은 이후 독립적으로 발견되어 패치됨)을 악용하여 RubyGems 사용자 API 키 탈취를 시도했습니다. 성공 여부는 알 수 없습니다(상세 내용 참조).
- RubyDoc.info를 악용하여 임의 코드를 실행했습니다(상세 내용 참조).
우리는 상세한 분석 결과를 아래에 공유합니다. 이 분석은 해당 에이전트들이 업로드한 공개된 RubyGems 패키지에 전적으로 기반합니다. 우리는 RubyGems 및 rubydoc.info 측과도 논의했습니다. 다만 사고 당시 모델이 생성한 추론(chain-of-thought) 과정 등 나머지 AI 행동 기록에는 접근할 수 없으며, 이는 OpenAI 내부 정보입니다. 따라서 AI 에이전트가 왜 이런 전략을 선택했는지, 공격이 성공했는지 여부는 알 수 없습니다.
RubyGems 팀은 에이전트 계정의 패키지 유입을 막기 위해 4일간 신규 사용자 가입을 중단했습니다. RubyGems 보안팀 한 구성원은 이를 "대규모 악성 공격"이라고 표현했습니다. 보안 회사들은 이 사고를 "GemStuffer 캠페인"이라고 명명했으며, 동시에 공격 목적에 대한 혼란도 언급했습니다.
업로드된 악성 패키지는 영국 지방정부 사이트에서 정보를 수집하는 데 사용되었는데, 해당 데이터는 원래 공개된 것이었습니다. 한 언론매체는 "해당 정보는 어차피 공개 접근 가능한 것으로 보이므로 정확히 어떤 최종 목표인지 불분명하다"고 보도했습니다.
우리는 에이전트가 RubyGems에 업로드했을 가능성을 최초로 발견한 Jonas Wiedermann-Möller(@j0wimo)와, 에이전트 활동의 새로운 징후를 추적한 커뮤니티 전체에 감사드립니다.
사고 타임라인
- 5월 5일: OpenAI 에이전트가 RubyGems에 업로드한 최초의 패키지
- 5월 8일: 이름에 "oai"가 포함된 첫 패키지
- 5월 11일: OpenAI 에이전트가 공개 위키를 편집하려는 시도를 처음 관찰
- 5월 11–12일: 에이전트가 2,000개 이상의 패키지를 RubyGems에 제출
- 5월 12일: RubyGems가 지속적인 DDoS라고 표현하며 신규 사용자 등록 중단
- 5월 12일: OpenAI Artifactory 인스턴스에 대한 첫 게시판 게시물
- 5월 13일: RubyGems가 스팸이 중단되었다고 보고하고 500개 이상의 악성 패키지 삭제
- 5월 16일: RubyGems가 신규 사용자 등록 재개
- 5월 26–27일: 에이전트가 5개 패키지를 추가 게시
- 6월 18일: 에이전트가 83개 패키지를 추가 업로드
주요 발견
이 사고는 OpenAI 에이전트 무리(swarm)에 의한 것 우리는 이 사고가 OpenAI 에이전트 무리의 결과라고 판단합니다. 주요 근거는 다음과 같습니다:
패키지가 명확히 LLM이 작성한 것임. 우리는 일부 악성 패키지를 Pangram으로 분석한 결과 100% AI 생성으로 판정되었습니다. 이는 에이전트 무리에 의한 공격이라는 증거가 됩니다(단, OpenAI 소행이라는 증거는 아님).
에이전트가 자신들을 OpenAI 소속으로 식별함. 업로드된 수백 개의 패키지 이름에 "oai"가 포함되어 있고, 15개 패키지는 작성자를 "oai"로 설정했습니다. 또 다른 패키지는 연락처 이메일로 "openaixyz65947@gmail.com"을 기재했습니다.
이 에이전트 무리는 이전에 발견한 독일어 위키 에이전트와 매우 유사하게 행동함. 6월의 에이전트들은 위키 에이전트와 동일한 49개 파일에 접근했습니다(OpenAI는 위키 에이전트가 자신들의 것임을 확인한 바 있습니다). 5월의 에이전트는 다른 파일(주로 영국 지방정부 로컬 데이터)에 접근했지만, 이 파일들은 위키 에이전트들이 추구하던 파일과 성격이 매우 유사하며, 동일한 수집 방법을 사용했습니다. 1,397개 패키지가 r.jina.ai를 언급하는데, 이는 위키 에이전트들이 heavily 사용한 서비스입니다. 또한 많은 패키지가 example.com을 언급하는데, 위키 에이전트들이 게시 능력을 테스트할 때 사용했던 도메인입니다.
RubyGems 커뮤니티 관계자들과의 대화를 통해 파악한 바로는, OpenAI는 자신들이 이 공격의 주체라는 사실을 RubyGems에 통보한 적이 없습니다.
에이전트는 RubyGems의 자동 빌드 시스템을 악용하여 원격 코드 실행 달성 RubyGems에 패키지(gem이라고도 함)를 게시하고 요청을 제출하면...