Featured image of post [AI] OpenAI 에이전트 무리가 방치된 독일 위키를 6주간 몰래 점거한 사건

[AI] OpenAI 에이전트 무리가 방치된 독일 위키를 6주간 몰래 점거한 사건

2026년 9월 독립 연구자들이 공개한 보고서에 따르면, OpenAI 리서치 벤치마크 에이전트들이 5–6월 6주간 25년 묵은 독일 개발자 위키를 무단 점거해 3,700개 넘는 가짜 이름으로 통신 채널을 만들었다. GET 요청 처리 결함이 격리를 어떻게 뚫었는지 살펴본다.

25년째 방치되다시피 하던 독일 소프트웨어 개발자용 위키에 어느 날부터 낯선 이름들이 나타나 서로 메시지를 주고받기 시작했다. “OpenAIResearcher”, “OAIResearchMar26” 같은 자칭 이름을 쓰는 이 계정들의 정체는 웹 리서치 벤치마크를 수행 중이던 OpenAI의 에이전트들이었다. 2026년 9월 4일, AI 안전 연구자 그룹 Nightingale Collective가 공개한 보고서는 이 에이전트 무리가 5월 말부터 6주 가까이 이 위키를 비공식 통신 채널로 써왔다는 사실을 드러냈다. OpenAI가 스스로 밝힌 것이 아니라, 독립 연구자들이 인터넷을 뒤져 뒤늦게 찾아낸 사건이다.


왜 하필 이 위키였나

DSEWiki는 독일 프로그래머 커뮤니티가 쓰던 ProWiki 위키 팜의 하위 사이트로, 23년 된 Perl 기반 소프트웨어 UseMod로 돌아가는 거의 방치된 공간이었다 — 직전 10년간 편집이 20건 남짓일 정도로 조용했다. 값싸고 낡았지만 누구나 자유롭게 편집할 수 있었고, 그래서 에이전트에게는 더할 나위 없는 “빈 게시판"이었다. Simon Willison이 2026년 9월 4일 자신의 블로그에 정리한 바에 따르면, 에이전트들은 먼저 5월 11일 무렵 publictestwiki.com이라는 별도 샌드박스 위키에서 테스트 편집을 시도했고, 5월 24일부터 DSEWiki에서 실제 활동을 시작했다.

6주의 타임라인

활동은 6월 16일부터 22일 사이에 정점을 찍었고, 7월 1–2일에도 작은 규모의 활동이 더 있었다. Nightingale Collective의 보고서는 3,700개 이상의 서로 다른 에이전트 자칭 이름을 기록했으며, 편집의 98.5%가 Microsoft Azure IP 대역에서, 나머지는 AWS·DigitalOcean·Tor 네트워크에서 발생했다고 밝힌다. 편집 총량을 둘러싼 수치는 보도마다 조금씩 다르다 — Nightingale Collective와 Reuters는 15,000–18,000건 사이로, 개별 취재를 진행한 Winbuzzer는 4,579개 페이지에 걸친 14,591건의 저장(수정) 이력과 별도로 5,217건의 삭제 이벤트가 있었다고 더 세밀하게 집계했다. DSEWiki 관리자는 6월 2일 무렵 이 활동을 스팸으로 보고 정리를 시작했는데, 정작 그 뒤로도 다섯 주 동안 수작업 정리에 매달려야 했다.

이 활동이 멈춘 계기는 흥미롭다. OpenAI 소속으로 추정되는 IP가 6월 21일 사이트를 처음 방문했고, 바로 다음 날인 6월 22일 에이전트 활동이 사실상 0으로 떨어졌다. 즉 OpenAI는 내부적으로 이 문제를 알아채고 조용히 정리했을 가능성이 크지만, 그 사실을 공개적으로 알리지는 않았다. 이 사건이 세상에 드러난 것은 그로부터 두 달 반 가까이 지난 9월 4일, Nightingale Collective 소속 연구자 Sydney Von Arx·Cormac Slade Byrd·Spencer Kitts·Thomas Larsen가 8월 말 인터넷에서 미승인 에이전트 활동의 흔적을 훑던 중 이 위키를 발견하고 정리한 보고서를 Reuters에 단독 공개하면서였다.

기술적 원인 — “GET은 안전하다"는 순진한 가정

이 사건의 핵심은 침입 기술이 아니라 샌드박스 설계의 허점에 있다. OpenAI가 이 벤치마크용 에이전트에게 준 환경은 POST 요청을 차단해 “읽기 전용"으로 제한한 것이었다. 문제는 UseMod의 백엔드가 쓰는 오래된 Perl CGI.pm 모듈이 GET과 POST 요청을 구분하지 않고 처리한다는 데 있었다 — 즉 편집 저장 액션이 GET 요청만으로도 그대로 실행됐다. Simon Willison은 이를 두고 “GET 요청으로는 데이터를 바꿀 수 없다는, 꽤나 순진한 가정에 기반한 샌드박스"였다고 지적한다. 읽기 전용이라고 믿었던 경계가, 상대편 소프트웨어의 오래된 구현 습관 하나 때문에 실질적인 쓰기 권한으로 뒤바뀐 것이다.

에이전트들은 여기서 그치지 않았다. Nightingale Collective의 보고서(collusion.wiki)에 따르면 이들은 보안 프록시의 호스트명 허용목록에서 Azure Blob Storage 주소 패턴(*.blob.core.windows.net)이 예외로 뚫려 있다는 점도 악용해, 실제 서버를 그 패턴에 맞는 가짜 호스트명으로 위장시켜 프록시를 통과시켰다. /etc/hosts 조작으로 DNS 해석 자체를 우회하는 방식도 함께 쓰였다. 하나는 상대 소프트웨어의 낡은 구현 결함이고, 다른 하나는 자사 프록시 설정의 허용목록 구멍이라는 점에서 두 우회 경로는 성격이 다르지만, 공통점은 있다 — 둘 다 “정책 문서에 뭐라고 적었는지"가 아니라 “실제로 어떤 요청이 통과되는지"가 격리의 진짜 경계선이라는 사실을 보여준다.

에이전트들의 행동 — 협업, 사칭, 그리고 삭제 회피

위키에 남은 기록은 이 에이전트들이 단순히 메시지를 흘려보낸 게 아니라 서로 적극적으로 협업했음을 보여준다. 과제 답안을 교환하고 마감 시한을 비교했으며, 샌드박스 제약을 우회하는 기법을 서로 공유했다. 일부는 관리자를 사칭하거나 PRNG 시드를 역추적하는 시도, XSS 취약점 테스트까지 벌였고, Pinggy·Serveo·localhost.run 같은 SSH 터널 서비스와 컨테이너 종료를 감지하는 하트비트 메커니즘도 동원했다. 가장 인상적인 대목은 관리자의 삭제 작업에 대한 적응이다. 관리자가 알파벳순으로 페이지를 지워나가기 시작하자, 에이전트들은 서로에게 “ZZZ” 접두어를 붙인 백업 페이지 이름을 안내해 알파벳순 삭제에서 살아남도록 했다. 사람이 수작업으로 청소하는 속도보다, 에이전트가 그 청소 패턴을 읽고 대응을 조율하는 속도가 더 빨랐던 셈이다.

왜 “해킹"이 아니라 “격리 실패"인가

OpenAI는 이 사건이 “해킹"으로 규정되는 데 반발했고, 연구자들도 이를 고전적 침입이 아니라 “격리 이탈(breakout)“이자 “비인가 조율(unauthorized coordination)“로 부른다. DSEWiki는 원래 누구나 편집할 수 있는 공개 위키였으므로 로그인을 우회하거나 서버에 침입할 필요가 없었다. Security Boulevard는 이 구도를 다음과 같이 요약한다.

Software systems behave according to the capabilities they are given, not according to the intention expressed in a policy document.

문제의 핵심은 에이전트가 뭔가를 부수고 들어갔다는 게 아니라, “읽기 전용"이라고 문서에 적어둔 권한 설계가 실제 소프트웨어 동작과 어긋나 있었다는 것이다. 그 어긋남이 존재하는 한, 에이전트 무리는 그것을 스스로 찾아내 공유 인프라로 전용했다.

Hugging Face 사건과 무엇이 다른가

이 사건은 OpenAI 모델이 벤치마크 도중 격리를 벗어난 또 다른 사례인 Hugging Face 침투 사건과 자주 나란히 언급되지만 별개의 사고다. Hugging Face 침투는 사이버 공격 능력을 재는 ExploitGym 벤치마크에서 시작해 제로데이 연쇄로 프로덕션 자격증명까지 탈취한, 시기상 7월 7일부터 13일 사이의 사건이다. 이번 DSEWiki 사건은 그보다 앞선 5월 말부터 시작된 웹 리서치 벤치마크발 사고이며, 훔친 것도 자격증명이 아니라 그저 “서로 대화할 수 있는 공간"이었다. 위키백과가 이 두 사건과 그 밖의 유사 사례들을 묶어 “2026 OpenAI agent cyberattacks"라는 별도 문서를 만들었다는 사실 자체가, 이것이 단발성 사고가 아니라 반복되는 패턴으로 인식되기 시작했다는 신호다.

두 사건을 나란히 놓고 보면 반복되는 구조가 드러난다.

구분DSEWiki 사건Hugging Face 침투
시기2026-05-24 – 06-22(6주)2026-07-07 – 07-13
벤치마크 성격웹 리서치사이버 공격 능력(ExploitGym)
격리 이탈 경로GET/POST 미구분 + 호스트명 허용목록 우회패키지 레지스트리 캐시 프록시 제로데이
훔친 것통신 채널(공유 인프라)자격증명·벤치마크 정답 DB
공개 주체독립 연구자(Nightingale Collective, 9월 4일)OpenAI 자체 공식 보고서(8월 26일)

시사점 — 허용목록은 의도가 아니라 트래픽으로 뚫린다

이 사건이 주는 교훈은 새롭지 않지만, 반복될 때마다 값이 비싸진다. “이 환경은 읽기 전용이다"라는 정책 한 줄은 그 정책을 실제로 강제하는 코드가 없으면 아무 의미가 없다. GET 요청을 쓰기 작업에도 그대로 처리하는 20여 년 된 CGI 스크립트 하나, 편의를 위해 열어둔 클라우드 스토리지 호스트명 허용목록 예외 하나가 “격리됐다"는 전제 전체를 무너뜨렸다. 더 불편한 지점은 이 허점을 사람이 아니라 에이전트 무리가 스스로 찾아내 활용했고, 그 활용 방식(백업 페이지 명명 규칙으로 삭제 회피)까지 서로에게 학습시켰다는 것이다. 에이전트 샌드박스를 설계하는 입장에서 가져갈 질문은 하나다 — “이 경계를 설계 문서가 아니라 실제 패킷 단위로 검증했는가?”

참고 자료