Hacktron의 OpenAI 해킹: 힙 오버플로우와 SSO 잘못된 구성으로 내부 저장소 침해

학습점

Hacktron은 libheif 이미지 디코더의 힙 버퍼 오버플로우와 잘못 구성된 OpenAI SSO 흐름을 결합하여 직원의 ChatGPT/Codex 계정을 탈취하고 GitHub 통합을 얻어 OpenAI의 내부 모노레포에 풀 리퀘스트를 열었으며, 이 모든 과정은 72시간 이내에 몇 시간의 인간 노력만으로 이루어졌다.


공격 체인 개요

공격은 아홉 단계의 체인을 통해 진행되었다:

  1. libheif 이미지 디코더에 경계 밖 읽기/쓰기 원시(primitive)가 포함되어 있었다.
  2. Debian의 보안 패치 누락으로 인해 Discourse Docker 이미지에 취약한 libheif 버전(1.19.7/1.19.8)이 존재했다.
  3. ImageMagick이 HEIC/HEIF 업로드 시 libheif를 호출했다.
  4. OpenAI의 공개 포럼(community.openai.com)은 Discourse를 사용한다.
  5. OpenAI SSO(auth.openai.com)는 포럼 로그인을 ChatGPT/Codex 계정과 연결했다.
  6. 침해된 포럼 계정은 직원의 ChatGPT/Codex 세션을 제어할 수 있게 했다.
  7. Codex의 GitHub 통합을 통해 저장소에 접근할 수 있었다.
  8. 해커들은 내부 openai/openai 모노레포에 Proof of Concept으로 PR #1186742를 열었다.
  9. 이 체인은 OpenAI SSO를 사용하는 모든 서비스가 유사하게 악용될 수 있음을 보여주었다.

취약점 세부 정보

libheif에서의 힙 오버플로우

  • Discourse는 FastImage가 HEIF 지원을 하지 않기 때문에 HEIC/HEIF 파일을 ImageMagick에 전달한다.
  • 오버플로우를 유발한 상류 libheif 커밋은 보안 수정으로 표시되지 않았으며 CVE도 부여되지 않았기 때문에 Debian 12/13은 취약한 1.19.x 패키지를 배포했다.
  • 이 오버플로우는 이미지 디코딩 중에 임의의 경계 밖 읽기/쓰기를 가능하게 하며, 전형적인 RCE 원시를 제공한다.

OpenAI SSO 잘못된 구성

  • OpenAI의 포럼은 auth.openai.com을 통해 "OpenAI로 로그인" 기능을 제공했다.
  • SSO 흐름이 인증 토큰을 충분히 격리하지 않아 침해된 포럼 세션으로 연결된 ChatGPT/Codex 계정을 탈취할 수 있었다.
  • 직원의 Codex 세션이 확보되면, 공격자는 직원이 승인한 GitHub 연결 통합을 어떤 것도 호출할 수 있었다.

공격 실행 시간표

시간 (UTC) 주요 이벤트
7월 23일 Discourse Docker 이미지에서 libheif 오버플로우를 발견.
7월 24일 Claude Opus 4.8로 로컬 공격 코드 개발; ASLR 문제로 어려움.
7월 25일 06:00 Claude Opus 5가 ARM64용 작동 가능한 공격 코드 생성, 이후 jemalloc을 사용해 x86-64로 포팅.
7월 25일 10:00 자율적인 Claude 루프가 Discourse Cloud에서 RCE를 달성하고 /etc/hosts를 읽은 후 생성된 스크립트로 OpenAI 포럼 인스턴스에서 RCE를 확보.
7월 25일 약 12:00 직원의 ChatGPT/Codex 세션을 탈취하고 Codex-GitHub 통합을 사용해 내부 모노레포에 PR #1186742를 열었다.
7월 25일 – 7월 27일 OpenAI, Discourse, Bugcrowd에 발견 내용 보고; OpenAI로부터 $6,500 보상 수령.

생성형 AI의 역할

  • Claude Opus 4.8는 신뢰할 수 있는 공격 코드를 생성하기 위해 여러 세션과 수동 조정이 필요했다.
  • Claude Opus 5는 몇 시간 내에 작동 가능한 공격 코드를 생성했으며, 타겟의 jemalloc 구성에 자동으로 적응했다.
  • 연구팀은 Opus 5에서 GPT-5.6-Sol로의 능력 격차가 명확하다고 지적했다. 특히 미지 환경을 타겟으로 할 때.
  • AI 지원은 공격 개발을 일주일에서 몇 시간으로 단축시켰지만, 조율과 검증을 위한 인간의 지도는 여전히 필수였다.

커뮤니티 및 벤더 반응

  • Discourse는 취약한 libheif 버전을 패치하고 ImageMagick을 사전 격리(sandboxed)했으며 보안 공지(GHSA-vhm9-85gw-x335)를 발표했다. 수정은 Docker 이미지 재빌드 필요(git pull && ./launcher rebuild app).
  • OpenAI는 공개 보고를 조율하고 $6,500 보상을 지급했으며 SSO 흐름을 업데이트했지만 세부 사항은 공개되지 않았다.
  • Debian은 2026년 8월 8일 취약한 libheif 패키지에 대한 보안 업데이트를 발표했다.

Hacker News의 논평

"Claude Opus 5가 작동 가능한 공격 코드를 빠르게 생성한 것은 해킹이 거의 완전히 기계 검증 가능해졌음을 보여주며, 전통적인 CTF 훈련을 넘어서는 빠른 반복이 가능해지고 있다." – @usernomdeguerre

"사전 격리되지 않은 ImageMagick는 여전히 보안의 참사다; Google/Wuffs와 같은 더 안전한 파서나 강력한 격리가 필요하다." – @oefrha

"자체 호스팅 운영자는 Discourse 컨테이너를 재빌드해야 한다; 그렇지 않으면 취약한 libheif는 웹 인터페이스 업데이트 뒤에도 숨어 있을 것이다." – @sams99

"내부 모노레포를 노출시킬 수 있는 체인에 $6,500 보상은 비현실적으로 낮다; 블랙마켓 가치는 수배수 이상일 것이다." – @rvz

"SSO 결함이 진짜 핵심이다 – 블로그는 세부 사항을 생략해 독자들이 계정 탈취 방법을 추측하게 했다." – @sergiotapia

영향 평가

  • 범위: OpenAI SSO를 사용하는 모든 서비스(내부 도구, 제3자 통합)는 동일한 벡터를 통해 침해될 수 있다.
  • 영향 범위: GitHub, Slack, 이메일 등 연결된 서비스에 접근하면 데이터 유출 가능성이 크게 증가한다.
  • 경제적 비용: 연구 프로젝트 비용은 토큰 사용량 기준 $3,000 미만; 인간 노력은 주 단위가 아니라 시간 단위로 측정되었다.
  • 전략적 함의: AI 기반 공격 생성은 전통적인 '수개월 작업' 시간을 일주일로 압축해 고도화된 공격의 접근 장벽을 낮춘다.

완화 권고 사항

  1. libheif 패치 – 상류 v1.23.4 이상으로 업그레이드하고, 배포 패키지가 백포트된 수정사항을 포함하고 있는지 확인.
  2. 이미지 처리 격리 – ImageMagick(또는 기타 네이티브 디코더)을 하드ened 사전 격리(예: Landlock, seccomp, 별도 컨테이너) 내에서 실행하고 엄격한 리소스 제한을 적용.
  3. HEIF/AVIF 제한 – 절대 필요하지 않는 한 HEIF/AVIF 형식 수락을 비활성화하고 웹 업로드에는 JPEG/PNG를 선호.
  4. SSO 토큰 범위 검토 – 포럼 로그인용으로 발급된 SSO 토큰이 Codex나 GitHub과 같은 고권한 서비스에 재사용되지 않도록 보장.
  5. 지속적인 종속성 모니터링 – 저수준 라이브러리(예: libheif, libde265)의 상류 보안 패치를 추적하고 즉시 적용.
  6. AI 통합 워크플로우에 대한 방어의 다층성 – AI 기반 통합(Codex, ChatGPT)을 고권한 내부 리소스로부터 격리하고, 최소 권한 OAuth 범위를 강제 적용.

보다 넓은 교훈

  • 복잡성에 의한 보안은 붕괴되고 있다: AI는 메모리 손상 버그를 신뢰할 수 있는 공격으로 전환하는 지식 집약적 단계를 자동화하여, 과거 전문가 부족으로 인한 보호를 무력화하고 있다.
  • 공급망 주의: Slack, Meta, GitHub Enterprise, 여러 웹 프레임워크에서 사용되는 단일 이미지 디코더 라이브러리는 고가치 공격 표면이 된다.
  • 경제적 전환: 전체 공격 체인의 비용은 이제 공학적 수개월이 아니라 컴퓨팅 비용(달러)로 측정되며, 위협 모델을 재정의해야 한다.
  • 책임 있는 공개: 연구자, 벤더, 보상 플랫폼 간의 신속한 협조는 피해를 완화할 수 있지만, 보상 금액은 실제 전략적 영향을 반영해야 한다.

  • 인용된 게시물과 댓글은 인용된 대로 정확히 재현되었다. 원본 자료 외에 추가 사실은 추가되지 않았다.

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch