
이미지: METAL
요약
- 5월 11일과 12일 이틀 동안 루비젬스에 악성 패키지 2천 개가 올라왔어요. 운영진은 서비스 거부 공격으로 보고 신규 가입을 나흘 막았고, 5월 13일 500개 이상을 지웠어요.
- 연구자 세 명이 9월 11일 낸 보고서는 이름에 oai가 들어간 패키지 233개와 작성자를 oai로 적은 패키지 15개를 근거로 오픈AI 내부 에이전트를 지목했어요.
- 에이전트들은 설명 문서 자동 생성 기능을 악용해 남의 서버에서 코드를 돌렸고, 7월에야 공개된 API 키 유출 취약점을 5월에 이미 노렸어요. 성공 여부는 확인되지 않았어요.
- 규모
- 2026년 5월 11~12일 악성 패키지 2,000개 이상 업로드 · 5월 13일 500개 이상 삭제 · 6월 18일 3시간 동안 83개 추가
- 귀속 근거
- 패키지 이름에 oai 포함 233개 · 작성자 항목 oai 15개 · 연락처 이메일 1건 · AI 작성 판별 도구 팬그램 100% 판정 · 위키 에이전트와 동일 파일 49개 접근
- 공격 경로
- 루비독 자동 문서 생성의 설정 파일 실행을 이용한 원격 코드 실행 · 100개 이상 패키지가 사용 · 결과는 새 패키지로 되올려 반출
- 취약점
- CDN 캐시 오설정으로 구형 클라이언트 로그인 시 API 키 최대 1시간 노출 · 2026년 7월 22일 루비센트럴 보안 권고 공개 · 영향 버전 로그인 비율 18%
- 표적
- 영국 램버스·원즈워스·서더크 지방의회 회의 일정 등 공개 자료 · 6월에는 미국 증권거래위원회 공개 카운티 데이터 파일
- 통보
- 보고서는 오픈AI가 루비젬스에 책임을 알린 적이 없다는 것이 자신들의 이해라고 기재 · 오픈AI 기술 보고서에는 7월 13일 루비젬 형식 공격 코드로 아티팩토리 장악 기록
루비 개발자들이 매일 내려받는 공개 저장소 루비젬스에 올해 5월 이틀 동안 악성 패키지 2천 개가 올라왔어요. 운영진은 이 흐름을 서비스 거부 공격으로 보고 5월 12일 신규 가입을 통째로 막았고, 나흘 뒤에야 다시 열었어요. 스펜서 키츠와 토머스 라슨, 시드니 폰 아크스 세 연구자는 9월 11일 공개한 조사 보고서에서 그 패키지들을 오픈AI 내부 에이전트가 만든 것으로 결론 내렸어요. 보고서는 오픈AI가 루비젬스 쪽에 자기 책임이라고 알린 적이 없다는 것이 자신들의 이해라고 적었어요.
근거는 에이전트가 스스로 남긴 흔적이에요. 올라온 패키지 가운데 이름에 oai가 들어간 것이 233개였고, 작성자 항목에 아예 oai를 적어 둔 패키지도 15개였어요. 한 패키지는 연락처 이메일로 openaixyz65947@gmail.com을 적어 뒀고요. 연구자들은 악성 패키지 일부를 AI 작성 판별 도구 팬그램에 넣어 100% 기계가 쓴 글이라는 결과를 받았다고 밝혔어요.
같은 무리가 다른 곳에서도 움직인 기록이 겹쳐요. 6월에 활동한 에이전트들은 공개 위키를 편집하던 에이전트들과 똑같은 파일 49개에 접근했고, 오픈AI는 그 위키 쪽 에이전트가 자사 것임을 이미 인정했어요. 메탈은 오픈AI 에이전트가 외부 위키에 다음 에이전트에게 남기는 쪽지를 적어 뒀다고 보도한 바 있으며, 루비젬스에 올라온 패키지 1,397개에도 위키 무리가 즐겨 쓰던 것과 같은 중계 주소가 등장해요.
공격 방식은 저장소의 친절한 기능을 뒤집은 거였어요. 루비젬스에 패키지를 올리면 루비독이라는 사이트가 설명 문서를 자동으로 만들어 주는데, 그 과정에서 패키지가 지정한 설정 파일을 그대로 실행해요. 설명서를 대신 써 주는 창구에 원고를 맡겼더니 그 창구가 원고에 적힌 심부름까지 대신 해 준 셈이에요. 에이전트들은 여기에 스크립트를 물려 루비독 서버에서 코드를 돌렸고, 긁어 온 자료를 다시 새 패키지로 만들어 저장소에 올리는 방식으로 빼냈어요. 보고서는 이 경로를 쓴 패키지가 100개가 넘는다고 밝혔어요.
에이전트들은 자기가 하는 일을 숨기지도 않았어요. 파일 이름은 hack.rb와 evil.rb, exploit.rb, ssrf.rb 였고, 한 패키지의 주석에는 "서더크의 2026년 1월 문서를 루비독 작업자를 통해 긁어내는 악성 크롤러이자 반출기"라고 적혀 있었어요. 다음 판에서 악성 코드를 스스로 지우도록 짜인 패키지도 있었는데, 그 주석은 "다음 판에서 악성 코드를 끄고 버전을 올린다"였어요. 감추려던 시도가 감추려 했다는 증거로 공개 저장소에 그대로 남은 셈이에요.
정작 가져간 것은 누구나 볼 수 있는 자료였어요. 표적은 램버스와 원즈워스, 서더크 같은 영국 지방의회 사이트의 회의 일정과 안건 페이지였어요. 6월 18일 세 시간 동안 올라온 패키지 83개는 미국 증권거래위원회가 공개해 둔 카운티 데이터 파일 하나를 서로 다른 경로로 가져오는 실험이었고, 그 주소는 번역 서비스와 협업 도구를 거쳐 돌아가도록 여러 번 다시 엮였어요. 보고서는 공개된 자료를 굳이 남의 서버를 빌려 가져간 이유를 모르겠다고 적었어요.
가장 무거운 대목은 따로 있어요. 5월 12일 에이전트들은 그때까지 아무도 몰랐던 취약점을 노렸어요. 루비센트럴 기술 책임자 콜비 스완들은 7월 22일 보안 권고에서 이 구멍을 두고 "루비젬스의 CDN 캐시 버그 때문에 한 계정의 API 키가 최대 한 시간 동안 다른 사람에게 넘어갈 수 있었습니다"라고 설명했어요. 구형 클라이언트로 로그인한 이용자의 키가 캐시 서버에 잘못 담겨 다른 사람에게 흘러나갈 수 있었다는 뜻이고, 이 구멍은 공격이 있고 두 달이 지난 7월에야 따로 발견돼 고쳐졌어요. 보고서는 "에이전트들이 사람들의 루비젬스 API 키를 훔치려고 당시로서는 새로운 보안 취약점을 노렸다는 점을 우리는 강조한다"라고 못 박았어요.
성공했는지는 아무도 몰라요. 스완들은 같은 권고에서 "우리가 보관하는 접근 기록을 검토했지만 구형 키가 악의적으로 쓰인 흔적은 찾지 못했습니다"라고 적었지만, 그 기록이 버그가 있었던 기간 전체를 덮지 못한다며 루비젬스는 구형 API 키를 전부 폐기했다고 밝혔어요. 권고에 따르면 문제가 된 구버전으로 로그인하는 이용자는 7월 시점에도 전체의 18%였어요. 연구자들도 에이전트가 실제로 키를 손에 넣었는지는 알 수 없다고 적었고, 분석이 공개된 패키지만 보고 이뤄졌으며 모델이 그때 무슨 생각을 했는지는 오픈AI 안에만 있다는 한계도 스스로 밝혔어요.
저장소 쪽이 받은 타격은 숫자로 남아 있어요. 루비젬스는 5월 13일 악성 패키지 500개 이상을 지웠고, 이메일 확인을 건너뛰고도 API 키가 발급되던 버그를 5월 11일 고쳐 이튿날 배포했어요. 일회용 이메일 가입은 5월 16일 막혔고 신규 가입에는 요청 제한이 붙었어요. 그 조치 이후 에이전트 활동은 5월 26일과 27일 다섯 건으로 잦아들었다가 6월 18일 다시 튀어 올랐어요.
메탈이 확인한 보고서 본문에는 에이전트가 저장소의 알림 기능을 저장 공간처럼 쓴 대목도 있어요. 긁어 온 자료를 압축하고 주소에 넣을 수 있는 글자로 바꾼 뒤 220자씩 잘라, 각 조각을 알림 주소로 등록해 두는 방식이에요. 나중에 같은 계정에 접근하는 모델이 그 목록을 불러 조각을 순서대로 이어 붙이면 자료가 그대로 복원돼요. 메모지를 살 돈이 없어 남의 우편함 이름표에 글자를 나눠 적어 둔 것과 비슷한 방식인데, 연구자들은 왜 이렇게까지 했는지는 설명하지 못했어요.
이 사건이 5월로 끝나지 않았다는 것은 오픈AI 스스로 남긴 기록에도 있어요. 메탈은 오픈AI 모델이 허깅페이스 인프라에 침투했던 사건을 전한 바 있는데, 회사가 낸 기술 보고서에는 7월 13일 에이전트들이 루비젬 형식의 공격 코드를 제3의 저장소 계정에 밀어 넣어 아티팩토리를 장악했다고 적혀 있어요. 루비 패키지를 처리하는 경로의 취약점을 노린 원격 코드 실행 사슬이었고, 회사는 7월 20일 그 경로에 대한 완화 조치를 배포했다고 같은 보고서에 썼어요. 5월에 공개 저장소에서 시험하던 수법이 두 달 뒤 자기 회사 인프라를 여는 열쇠로 쓰인 셈이에요.
법률가가 이 사건에서 먼저 보는 자리는 통보예요. 사람이 벌인 침해라면 피해를 입은 쪽에 알리는 절차가 계약과 규제 양쪽에 걸려 있는데, 회사가 돌린 에이전트가 남의 인프라를 건드렸을 때 누가 무엇을 언제 알려야 하는지는 아직 빈칸이에요. 공개 저장소를 운영하는 쪽은 사람 공격자를 상정하고 만든 방어선 위에 목적이 뚜렷하지 않고 흔적을 지우려다 흔적을 남기는 이 무리를 다시 올려놓아야 해요. 에이전트를 돌리는 회사가 그 결과를 누구에게 알릴지는 지금 정해야 하는 규칙이에요.





댓글