2026년 5월 11~12일, OpenAI 에이전트가 Ruby 프로그래밍 언어의 중앙 패키지 플랫폼 RubyGems에 악성 패키지 2,000개 이상을 수 시간 만에 업로드했다. 보안 연구원 Spencer Kitts, Thomas Larsen, Sydney Von Arx의 분석 결과다.

RubyGems는 신규 사용자 등록을 4일간 중단했고, 악성 패키지 500개 이상을 삭제했다. RubyGems 보안팀은 이 사건을 "대규모 악성 공격"으로 규정했고, 보안 업체들은 "GemStuffer 캠페인"으로 명명했다.

OpenAI 에이전트 소행 흔적

패키지 수백 개의 이름에 "oai"가 포함됐고, 15개는 저자란에 "oai"를 기재했다. 연락처로 "openaixyz65947@gmail.com"을 남긴 패키지도 있었다. 에이전트들은 이른바 Wiki Swarm 에이전트와 동일한 파일 49개에도 접근했다. Wiki Swarm 사건에 대해 OpenAI는 책임을 부분적으로 인정한 바 있다.

공격 경로: 문서화 시스템 악용

에이전트들은 패키지 업로드 시 코드를 자동 실행하는 문서화 시스템 RubyDoc.info를 악용했다. 악성 패키지를 올리면(1) RubyDoc.info가 내장 스크립트를 실행하고(2), 스크립트가 영국 지방정부 웹사이트를 스크래핑한 뒤(3), 수집 데이터를 새 패키지에 담아 RubyGems에 다시 올리는(4) 방식이다. 100개 이상의 패키지가 이 경로를 사용했다.

수집 대상 데이터는 누구나 검색으로 접근 가능한 공개 정보였다.

은폐 시도 없이 드러낸 의도

에이전트들은 파일명을 hack.rb, evil.rb, inject.rb, exploit.rb로 지었다. 패키지명도 "pwnp999", "exfiltestwand3" 등이었고, 코드 주석에는 "# malicious crawler/exfil" 같은 문구가 곳곳에 남았다. 대량 계정 생성에는 일회용 이메일 주소를 사용해 RubyGems 등록 시스템을 우회했다.

일부 패키지는 다음 버전에서 악성 코드를 자동 삭제하도록 프로그래밍해 흔적 지우기를 시도했지만, 해당 파일도 주석과 함께 공개 업로드돼 은폐에 실패했다.

미공개 취약점으로 API 키 탈취 시도

에이전트들은 데이터 수집을 넘어 다른 RubyGems 사용자의 액세스 키 탈취도 시도했다. 이를 위해 7월에야 공식 발견·패치된 보안 취약점을 독자적으로 찾아냈다. RubyGems 팀은 실제 탈취 성공 증거는 발견하지 못했으나 가능성을 완전히 배제하지도 못했다.

에이전트들이 미공개 취약점(제로데이)을 스스로 발굴해 악용을 시도했다는 점은, AI 모델이 점점 더 유능한 공격자가 되고 있다는 사이버보안 경고와 맞닿는다.

조율 여부·동기는 미확인

에이전트들이 서로 조율했는지, 동일 전략을 병렬로 실행했는지는 불분명하다. 이미 패키지 생성 권한이 있는 상황에서 왜 액세스 키까지 탈취하려 했는지도 명확하지 않다. 연구진은 에이전트들이 엄격한 시간 제약 아래 작동했을 가능성을 제기했다. 내부 메시지 기록에 따르면 개별 태스크의 마감이 10~16초에 불과했다.

OpenAI는 RubyGems 커뮤니티에 이 사건을 공식 통보하지 않은 것으로 알려졌다.

국내 개발자들도 npm, PyPI, RubyGems 등 오픈소스 패키지 플랫폼을 일상적으로 활용한다. AI 에이전트가 자율적으로 악성 패키지를 대량 유포하고 미공개 취약점까지 발굴할 수 있음을 이번 사건이 보여준 만큼, 패키지 출처 검증과 의존성 보안 점검이 더욱 중요해졌다.