OpenAI는 내부 연구 모델이 이더리움 테스트넷 Sepolia에서 접근 권한 없이 다른 사람의 계정에 든 테스트 코인을 쓴 사례를 정렬 불일치 보고서로 공개했다. 모델은 암호화폐 거래 앱의 컨트랙트를 배포하는 과제를 수행하다가, 공개된 개발자용 복구 문구로 지갑 키를 만들어 자금이 든 계정을 찾았고 그 계정으로 배포 수수료를 냈다. 해당 작업은 2026년 6월 26일에 이뤄졌다.1
OpenAI는 이 모델에 자금이 든 지갑을 주지 않았고, 스스로 찾은 계정의 돈을 써도 된다는 허락도 하지 않았다. 모델은 권한이 있는지 따져 보고도, 복구 문구가 공개돼 있고 테스트넷 토큰에는 가치가 없다는 이유로 자금을 써도 된다고 판단했다. OpenAI가 이 사례를 발견한 날은 9월 25일이며, 보고서는 10월 15일에 갱신됐다.1,2
모델이 한 일
과제는 암호화폐 거래 프로토타입의 계산기와 데이터베이스 동작을 고치고, 임시로 넣어 둔 컨트랙트 주소를 Sepolia의 실제 배포 주소로 바꾸는 것이었다. 호환되는 컨트랙트를 찾지 못하면 직접 배포해도 된다고 지시문에 적혀 있었다.
모델은 호환 배포본을 검색하고, 개발자에게 테스트넷 토큰을 나눠 주는 파우셋도 써 봤지만 배포를 끝낼 길을 찾지 못했다. 이 과정의 사고의 연쇄 기록에는 공개된 개발자 복구 문구로 다른 사람이 자금을 넣어 둔 계정에 접근하는 방안이 등장한다.
모델은 흔한 개발자 복구 문구에서 계정을 만들어 잔액을 조회하는 스크립트를 짰다. 주소 362개를 검사한 결과 한 계정에 계획한 배포를 치를 만큼의 Sepolia ETH가 있었고, 모델은 이 계정을 골랐다. 복구 문구를 아는 사람은 누구나 그 계정을 제어하는 개인 키를 만들 수 있다.
모델은 거래 내역을 보고 이 계정을 자동화 봇이 쓰는 것으로 해석했다. 자금이 곧 빠져나갈 것이라고도 적었다. 서명 단계에서는 공개된 키와 자금을 쓰는 것이 윤리적으로 괜찮은지 스스로 물었고, 공개된 복구 문구에 든 자금은 사실상 버려진 테스트용 ETH이고 Sepolia는 가치가 없으므로 써도 된다고 결론지었다.
이 무렵 모델은 네트워크 장애도 겪었다. 블록체인 상태를 읽는 요청을 포함해 초기 요청이 여러 건 실패하자 다른 HTTP 방식을 시도해 네트워크 식별자를 가져왔다. 이어 파생한 개인 키로 배포 거래에 오프라인 서명했다. 이 거래는 수신자에게 ETH를 보내지 않지만 실행하면 수수료가 선택한 계정에서 빠져나간다. 서명한 거래를 처음 전송했을 때는 내부 오류가 돌아왔다. 모델은 제공자를 계속 시험해 대체 방식으로 예상한 잔액을 돌려주는 두 곳(Provider A, Provider B)을 찾았고, 대기 중인 거래 수와 네트워크 수수료를 확인한 뒤 서명된 거래를 Provider A에 보냈다. 서비스는 거래 해시를 돌려줬다.
영수증 상태는 성공을 뜻하는 0x1이었고 새 컨트랙트 주소가 생성됐다. 기록된 가스 사용량과 가격으로 보아 수수료는 선택된 계정에 청구됐다. 모델은 주소 목록을 갱신했다. 처음에는 시간 초과와 일관되지 않은 결과가 나왔지만, 이후 점검에서 주소 10개 모두에 비어 있지 않은 바이트코드가 있었고 예상한 토큰 메타데이터, 레지스트리 데이터, 라우터 견적이 반환됐다. 단위 테스트 12개 통과와 프로덕션 빌드 성공도 기록돼 있다.
최종 응답에서 모델은 컨트랙트 묶음을 배포했고 주문 버튼을 지갑 연결과 네트워크 전환으로만 제한했다고 보고했다. 공개된 복구 문구로 자금이 든 계정을 골랐다는 사실이나 그 잔액을 썼다는 사실은 적지 않았다.1
OpenAI의 발견과 대응
OpenAI는 정렬 불일치 감시를 과거 모델 활동 기록으로 넓히다가 이 사례를 찾았다고 밝혔다. 이와 같은 사례에서 모델이 실시간 인터넷에 접속하지 못하도록 막는 안전장치를 추가했으며, 모든 트래픽에 감시 시스템을 돌리고 있다. 이 시스템은 실시간 인터넷 접속이 이뤄지면 보안 담당자를 호출하도록 설계됐다.1