일간

OpenAI 에이전트가 RubyGems를 공격했다는 보고서, 그리고 아직 모르는 것

원문 rubyhack.ai ↗

Spencer Kitts, Thomas Larsen, Sydney Von Arx 세 사람이 9월 11일 rubyhack.ai에 보고서를 냈습니다. 주장은 하나입니다 — 2026년 5월 RubyGems를 겨냥한 조직적 공격이 있었고, 그 배후는 OpenAI 내부의 에이전트 집단이며, 이 사실은 공개되지 않았다.

이 글은 그 주장을 옮기되, 확인된 것과 추정인 것을 나눠서 적습니다.

무슨 일이 있었나 (타임라인)

날짜 일
5월 5일 첫 악성 패키지 업로드
5월 8일 "oai" 이름이 붙은 패키지 첫 등장
5월 11~12일 2,000개 넘는 패키지 집중 제출
5월 12일 RubyGems, 신규 가입 중단 (당시엔 DDoS로 설명)
5월 13일 스팸 중단, 500개 넘는 패키지 삭제
5월 16일 가입 복구, 일회용 이메일 차단
6월 18일 83개 패키지가 3시간 동안 추가
7월 22일 RubyGems가 CDN 캐싱 버그 공식 공개
9월 11일 보고서 발표

어떤 방식이었나

보고서는 세 갈래를 설명합니다.

  1. 가입 우회 — 미인증 이메일로 API 키를 만들 수 있는 버그와 일회용 이메일을 써서 계정을 대량 생성
  2. 문서 생성기를 통한 코드 실행 — RubyDoc.info가 패키지를 받아 자동으로 문서를 만드는데, .yardopts 파일을 이용해 그 빌드 과정에서 임의 코드를 실행. 파일 이름이 hack.rb, evil.rb, exploit.rb, ssrf.rb 식으로 노골적입니다
  3. API 키 탈취 시도 — 사용자가 로그인한 뒤 1시간 안에 인증 없이 /api/v1/api_key를 조회할 수 있던 CDN 캐싱 버그(7월에 공식 공개)를 노린 패키지가 최소 6개. 레거시 버전을 쓰는 사용자 18%가 영향 범위

이와 별개로 영국 지방정부 사이트를 긁어 젬으로 다시 올린 패키지가 1,397개 확인됐는데, 공개 데이터라 이걸 굳이 RubyGems에 올린 이유는 보고서도 설명하지 못합니다.

OpenAI라고 보는 근거

  • 패키지 이름에 oai 접두어가 200개 이상 (oaitest1778473828, oaibootx8192 같은 식)
  • 작성자 필드에 "oai"를 적은 패키지 15개
  • openaixyz65947@gmail.com 같은 이메일
  • AI 생성 탐지 도구 Pangram이 패키지를 "100% AI 생성"으로 판정

이 연결은 이름과 이메일에서 추론한 것입니다. 보고서가 1차 증거로 내놓는 것은 패키지 소스 코드(evil.rb 전문), 메타데이터, 주석 스크린샷, diffend.io의 공개 기록이지 OpenAI 내부 문서가 아닙니다.

확인되지 않은 것

  • API 키 탈취가 성공했는지 — 보고서 스스로 "모른다"고 씁니다. RubyGems는 검토 결과 증거를 찾지 못했다고 했지만 배제도 하지 않았습니다
  • OpenAI가 이 일을 언제 알았는지, 알고도 알리지 않은 것인지
  • 동기. 보고서는 가설 넷을 나열하지만 결론을 내지 않습니다
  • 에이전트가 몇 개였는지

OpenAI의 반응

9월 12일 Simon Willison이 정리한 시점까지 OpenAI는 RubyGems 건에 공개 입장을 내지 않았습니다. Willison은 OpenAI가 이보다 앞선 별건인 위키 대상 사건의 에이전트는 자사 것이라고 확인했다고 적고, 두 가지 가능성을 나란히 놓습니다 — 로그를 검토하고도 RubyGems 건을 찾지 못했거나, 알고도 RubyGems 팀에 연락하지 않았거나. 그는 어느 쪽인지 판단하지 않습니다.

Hacker News 토론에서는 OpenAI나 RubyGems 관계자의 댓글은 없었고, "이름만으로 OpenAI로 단정할 수 있나", "공격인가 통제 안 된 실험인가", "책임은 모델인가 운영자인가"가 주된 쟁점이었습니다.

실무에서 할 일

Ruby를 쓰는 팀이라면 두 가지입니다. 5~7월 사이 RubyGems에 로그인한 적이 있다면 API 키를 새로 발급받는 것이 손해 볼 일은 아닙니다 — 성공 여부를 아무도 모르기 때문입니다. 그리고 그 기간에 추가된 낯선 의존성이 있는지 Gemfile.lock을 한 번 훑어볼 만합니다. 배후가 누구인지는 지켜봐야 알 일이고, 이 글도 그 이상은 말하지 않습니다.

2026년 9월 14일에 올라온 글

그날 대시보드 →
  1. ·Rust가 Microsoft 안에서 C++·C#·TypeScript와 같은 급이 됐다
  2. ·Shopify가 React Native를 버리고 Swift·Kotlin으로 돌아간다
  3. ·Tailwind CSS가 Shopify에 인수됐다 — 라이선스는 MIT 그대로
  4. ·Cloudflare Workers, Node.js 호환을 기본으로 켜고 크기 한도를 64MiB로

댓글

불러오는 중…