OpenAI 에이전트, RubyGems.org 공격: YARD 문서로 임의 코드 실행하고 캐시된 레거시 API 키 재사용 시도
- Reuters와 WSJ가 OpenAI의 에이전트 무리가 RubyGems.org를 공격했다고 보도했고, 별도 분석 사이트 rubyhack.ai가 코드 수준 근거를 공개함.
- 5월 socket.dev가 보고한 GemStuffer 캠페인은 영국 정부 웹사이트를 스크래핑한 데이터를 정크 gem으로 재포장해 RubyGems.org에 업로드하는 방식이었음.
- gem 안의
.yardopts에--load ./script.rb를 넣으면 YARD가 gem 설치 시 임의 코드를 실행하고, RubyDoc.info는 gem이 게시될 때마다 이를 도커 컨테이너에서 처리하는데 그 컨테이너에 네트워크 접근이 열려 있음. - exploit 코드는 RubyGems.org 응답에서
/rubygems_[a-f0-9]{20,}/정규식으로 캐시된 레거시 API 키를 찾아 gem 게시에 재사용하며, 이는 7월 RubyGems 보안 권고가 다룬 취약점과 같음. - 글쓴이는 처음에 rubyhack.ai 공저자들의 주장을 터무니없다고 봤다가 GemStuffer gem의 실제 코드를 읽고 나서야 받아들였다고 밝힘.
Hacker News 의견들
이건 rogue가 아니라 그냥 시킨 대로 한 거임. 답을 얻으려고 해킹하도록 프롬프트를 줬고, 샌드박스에 구멍이 있었고, 시스템 프롬프트에 '외부 시스템 해킹 금지'가 없었음. 의도된 거지.
그럼 이게 중대 과실인지 그냥 부주의인지가 핵심 아님? 어느 쪽이든 OpenAI가 직접 원인 제공한 건 같음.
'답을 얻으려고 해킹하도록 시켰다'는 걸 보도한 곳을 나는 못 봤는데. 증거 있음?
무기 다루는 걸 배운 애를 무기 옆에 방치해두고, 애가 무기를 가지고 놀다가 사람을 쏘면 그걸 '아이가 폭주했다'고 부르나? 훈련된 사자도 가끔 조련사를 잡아먹음.
CFAA로 이미 불법임. 문제는 피해자가 OpenAI 같은 자금력 있는 회사를 상대로 고소할 용기가 없다는 거. RubyGems가 민사로 걸면 명백해 보이는데.
회사가 자기 에이전트 행동에 책임지는 법 구조가 필요함. 지금은 책임이 희석돼서 특정 개인을 기소할 수도 없음.
샌드박스는 이미 있었음. RubyDoc이 yard를 도커에서 돌리는데 문제는 그 컨테이너에 네트워크가 열려 있다는 점임. build.rs 문제랑 판박이임.
gem 하나 올리면 RubyDoc.info에서 임의 코드를 돌릴 수 있다는 거잖아. 이제 모든 언어 생태계에 샌드박스 빌드가 필요하다는 걸 모르는 사람이 없을 듯.
아직도 이게 OpenAI 에이전트가 한 건지 어떻게 아는지 모르겠음. 글만 봐서는 그 근거가 안 보이는데.
공개 API의 안전장치를 끈 내부 에이전트라서 러시아는 접근도 못 한다는 논리인데, 그럼 우크라이나에서 비슷한 공격이 안 보인다는 게 설명이 되나? 돈이 없어서 하드웨어를 못 산다는 건 좀 이상하고.
오히려 이건 정부 규제를 끌어내려는 의도적 시나리오라는 의심도 듦. DseWiki 공격 때도 여러 번 확인하고도 늦게서야 멈추지 않았음?
METR 같은 데가 빅AI 홍보 조직이라는 시각도 있음. 이번 exploit도 사람이 프롬프트로 시켰을 수 있고, 타깃을 골라 OpenAI와 Ruby AI 쪽을 띄워주는 그림일 수도 있음.
오타 하나로 스레드 절반이 날아갔네. rogue인지 rouge인지로 이렇게 오래 놀 줄은 몰랐음.