메뉴
HN
Hacker News • 8일 전

OpenAI 해킹: 취약점 2개로 내부 저장소 접근 성공

IMP
8/10
핵심 요약

보안 연구팀 Hacktron이 Discourse 포럼의 libheif RCE와 OpenAI SSO 설정 오류라는 두 개의 치명적 취약점을 연결해, OpenAI 직원의 ChatGPT 및 Codex 계정을 장악하고 내부 monorepo에 PR을 만들어 접근을 증명했다. GitHub, Slack, 이메일 등 Codex에 연결된 서비스까지 노출될 수 있었던 이 취약점은 OpenAI가 약 14시간 만에 수정했고, 팀은 6,500달러의 버그 바운티를 받았다.

번역된 본문

서론

2026년 7월 25일, 우리는 두 개의 치명적 취약점을 연결(체이닝)하여 여러 OpenAI 직원의 ChatGPT 계정을 침해했습니다. 이 계정들을 통해 OpenAI 내부 저장소와 잠재적으로 다른 많은 커넥터에도 접근할 수 있었습니다. 민감한 정보를 실제로 알게 되지 않으면서 접근 권한을 실제로 획득했음을 증명하기 위해, 해당 직원의 Codex를 사용해 OpenAI 내부 monorepo인 openai/openai에 PR #1186742를 열었습니다.

2개월 전까지는 OpenAI 자체 헬프 포럼(community.openai.com)에 로그인한 모든 사용자나 OpenAI 직원의 ChatGPT 및 Codex 계정이 탈취될 수 있었습니다. 사람들이 Codex와 ChatGPT에 다양한 서비스를 연결할 수 있기 때문에, 이론적으로 접근 가능한 범위는 GitHub, Slack, 이메일을 포함해 매우 컸습니다.

최초 발견부터 OpenAI 저장소 접근까지의 전체 과정은 72시간도 걸리지 않았습니다. 우리는 초기 취약점을 즉시 OpenAI와 Discourse에 신고하고 패치 조율에 협력했습니다. 그들의 세심한 대응과 빠른 해결에 감사드립니다. OpenAI는 우리에게 6,500달러의 바운티를 지급했습니다. 이 글에서는 공개 절차의 전체 타임라인과 함께, 두 취약점을 어떻게 발견했는지, Claude 모델을 어떻게 활용했는지, 그리고 이 경험에서 얻은 교훈을 상세히 설명합니다.

2026년 7월 25일 05:00–06:00 UTC — 최초 발견 HacktronAI 팀은 community.openai.com에서 호스팅되는 Discourse 환경에 대해 원격 코드 실행(RCE) 및 관리자 권한을 획득했습니다.

2026년 7월 25일 08:00–10:00 UTC — Bugcrowd 제출 제품 간 영향(cross-product impact)을 확인한 후, 팀은 책임 있는 공개 절차를 내부적으로 조율하고 Bugcrowd의 OpenAI 버그 바운티 프로그램을 통해 보고서를 제출했습니다.

2026년 7월 25일 13:30–15:30 UTC — OpenAI 직원 계정 접근 및 개념 증명(PoC) 취약점의 실제 영향을 입증하기 위해, OpenAI 내부 monorepo에 무해한 개념 증명 풀 리퀘스트를 만들었습니다(OpenAI 요청으로 링크는 비공개). 이 결과를 기존 Bugcrowd 제출 건에 업데이트하고, Twitter/X에서 OpenAI 지인들에게 직접 알렸으며, 약 15:30 UTC에 모든 추가 테스트를 중단했습니다.

2026년 7월 25일 22:49:45 UTC — OpenAI 측 수정 확인 OpenAI가 보고서에 답변하여 문제가 수정되었음을 확인했으며, 이는 최초 제출 후 약 14시간 만이었습니다.

2026년 7월 25일 — HackerOne을 통한 Discourse 신고 Discourse의 HackerOne 프로그램을 통해 보고서를 제출했습니다.

2026년 7월 26일 — Discourse 응답 Discourse가 일요일에 보고서에 답변했습니다.

2026년 7월 27일 — Discourse 수정 완료 Discourse는 월요일까지 수정을 완료하고, 심층 방어를 위해 이미지 처리 샌드박싱을 추가했습니다.

2026년 7월 28일 — Discourse 보안 권고 게시 Discourse가 GHSA-vhm9-85gw-x335 보안 권고를 패치 및 재빌드 지침과 함께 게시했습니다.

2026년 9월 1일 — OpenAI가 6,500달러 바운티 지급 및 해결 완료 표시 OpenAI 코멘트 — 해당 포상의 범위를 명확히 하자면, Discourse로 호스팅되는 community.openai.com에 대한 테스트는 우리 버그 바운티 프로그램에서 명시적으로 제외됩니다. 이 포상은 OpenAI 측 발견에 대한 것이며, Discourse에 대한 행위에 대한 것이 아닙니다.

배경

몇 달 전, Harsh Jaiswal의 주도로 Mohan Pedhapati와 Rahul Maini가 함께한 우리 Hacktron 팀은 최첨단 AI 기업들의 보안 취약점을 찾는 연구를 시작했습니다. 이를 통해 OpenAI의 인증 인프라에서 SSO 설정 오류와, OpenAI가 사용하는 커뮤니티 포럼에서 libheif RCE를 발견하게 되었습니다. 이후 이 연구는 'HEIF Heist'로 확장되어, libheif가 Slack, Meta, GitHub Enterprise, Ruby on Rails, 그리고 Next.js, Astro, Gatsby 같은 Node.js 프레임워크에 걸쳐 사용되는 현황을 추적하는 수개월간의 조사가 되었습니다. 놀랍게도 많은 범용 소프트웨어가 이 하나의 이미지 처리 라이브러리에 의존하고 있습니다. 여러분의 애플리케이션이 사용자가 제어하는 이미지를 처리하고 .heic/.heif/.avif 이미지를 허용한다면, 영향을 받을 가능성이 매우 높습니다. 도움이 필요하시면 hello@hacktron.ai로 연락해 주시기 바랍니다.

community.openai.com 해킹

원문 보기
원문 보기 (영어)
Intro On July 25, 2026, we chained two critical vulnerabilities to compromise multiple OpenAI employees’ ChatGPT accounts. With these accounts, we could then access internal OpenAI repositories, and potentially many other connectors. To prove we had in fact gained the access we believed without allowing ourselves to learn any sensitive information, we used the employee’s Codex to open a PR #1186742 in OpenAI’s internal monorepo openai/openai . Until two months ago, any user or OpenAI employee logging into OpenAI’s own help forum ( community.openai.com ) could have had their ChatGPT and Codex accounts taken over. Since people can connect various services to Codex and ChatGPT, the scope of what we could theoretically access was huge, including GitHub, Slack and emails. The entire timeline from initial discovery to access to OpenAI repo access took place in less than 72 hours. We immediately reported the initial vulnerability to OpenAI and Discourse and worked with them to coordinate the patch. We appreciate their attention to detail and fast resolution of this issue. OpenAI also paid us a $6,500 bounty. We provide a full timeline of the disclosure process here. The rest of the post details how we discovered the two vulnerabilities, how we used claude models, as well as our takeaways from this experience. 25 July 2026 05:00–06:00 UTC Initial Finding HacktronAI team obtained remote code execution (RCE) and administrative access to the Discourse environment hosted at community.openai.com . 25 July 2026 08:00–10:00 UTC Bugcrowd Submission After confirming the cross-product impact, the team coordinated internally on the responsible disclosure process and submitted a report through OpenAI’s Bug Bounty Program on Bugcrowd. 25 July 2026 13:30–15:30 UTC OpenAI Employee Account Access & Proof of Concept To demonstrate the practical impact of the vulnerability, we created a harmless proof-of-concept pull request in OpenAI’s internal monorepo (link redacted at OpenAI’s request). We updated the existing Bugcrowd submission with these findings, reached out to friends at OpenAI on Twitter/X to notify them directly, and ceased all further testing at approximately 15:30 UTC . 25 July 2026 22:49:45 UTC OpenAI-Side Fix Confirmed OpenAI replied to the report confirming the issue had been fixed, roughly 14 hours after the initial submission. 25 July 2026 Discourse Reported via HackerOne We submitted a report to Discourse through its HackerOne program. 26 July 2026 Discourse Responded Discourse replied to the report on Sunday. 27 July 2026 Discourse Fix Ready Discourse had a fix ready by Monday and added image-processing sandboxing as defense in depth. 28 July 2026 Discourse Advisory Published Discourse published GHSA-vhm9-85gw-x335 with patch and rebuild guidance. 01 Sep 2026 OpenAI Rewarded $6,500 Bounty and Marked Resolved OpenAI comment — To clarify the scope of that award: testing against the Discourse-hosted community.openai.com was explicitly excluded from our bug bounty program. The award recognizes the OpenAI-side finding, not the actions against Discourse. Background A few months ago, our team at Hacktron, led by Harsh Jaiswal alongside Mohan Pedhapati and Rahul Maini, began researching frontier AI companies to find security vulnerabilities. This led us to discover an SSO misconfiguration in OpenAI’s identity infrastructure and a libheif RCE in the community forum used by OpenAI. We’ve since expanded the research into HEIF Heist , a multi-month investigation tracing libheif across Slack, Meta, GitHub Enterprise, Ruby on Rails, and Node.js frameworks such as Next.js, Astro, and Gatsby. A surprising amount of widely-used software depends on this one image-processing library. If your application processes user-controlled images and accepts .heic/.heif/.avif images, it is highly likely it is affected. Please reach out to us at hello@hacktron.ai if you need any kind of assistance. Hacking community.openai.com summary_svg:last-child]:rotate-180 [&[open]>summary]:mb-3" open> Warning Patch notice: If you self-host Discourse, rebuild your installation now. Older Docker images may contain a vulnerable libheif dependency that permits code execution through an image upload. Run git pull followed by ./launcher rebuild app from /var/discourse ; a web-interface update alone may not replace the underlying image. Discourse-hosted customers have already been patched. See the security advisory . OpenAI uses Discourse for their forum and allows “Sign in with OpenAI” through auth.openai.com . After getting a good understanding of OpenAI’s services and infrastructure, we had reason to believe that compromising the forum could create a path into broader OpenAI services through this identity flow. To test that hypothesis, we first needed remote code execution on an OpenAI service like the Discourse community forum. While the Discourse app itself is actually not an easy target (we have looked into it in the past), we thought we could go after a dependency. Heap buffer overflow in libheif On July 23, we started reviewing Discourse’s image-upload pipeline, and we found that HEIC and HEIF files followed an unusual path. Discourse normally used FastImage for image checks, but because FastImage did not support HEIF, it passed those files to ImageMagick’s magick command for conversion. 2 That exposed the underlying libheif parser directly to attacker-controlled files. We started an Opus 4.8 session with the Discourse Docker image and asked it to inspect the installed libheif package for security issues. After a while, it found that some particular security fixes were not back-ported to the libheif package. This allowed an heap buffer overflow leading to OOB R/W primitives during HEIC decoding. Interestingly, the vulnerable code had been changed upstream the previous year, but the commit was not documented as a security fix and received no CVE. 3 This might be a reason why Debian 12 and 13 have not received the security relevant backports in time. Because Discourse’s Docker image was based on Debian 12, it installed the vulnerable libheif version 1.19.7. Even Debian 13 still shipped the vulnerable version 1.19.8 at the time. Since then, Debian has published its security update for Debian 13 on August 8, 2026. 4 On July 24, we used Opus 4.8 to develop a working ImageMagick/ libheif code-execution exploit with ASLR disabled. We then launched several separate sessions to make it reliable against Discourse’s default configuration with ASLR enabled, which wasn’t fruitful. Opus 5 Released That evening, Anthropic released Claude Opus 5. 5 We started a new session, which first produced a working ARM64 exploit for a local Mac within 3 hours. We then asked it to port the exploit to the x86-64 environment and jemalloc configuration used by Discourse. By 6:00 a.m. on July 25, we had confirmed local RCE through an image upload. We then placed Claude in an autonomous /goal loop against our own Discourse Cloud instance, proxied through rce.ee/ctf-forum to make it look like a CTF target as Opus refused write exploit for remote instances. When we checked again at 10:00 a.m., the agent had achieved RCE on Discourse Cloud and demonstrated access by reading /etc/hosts . Using the generated exploit script, we managed to get RCE on OpenAI’s instance. After we had confirmed our hypothesis of no interaction account takeover of ChatGPT/Codex accounts from active members of the forum, we immediately sent our report to OpenAI. We then took over an OpenAI employee’s account, whose Codex was connected to OpenAI’s Github organization. To demonstrate impact without actually accessing any internal code, we sent a prompt to this employee’s Codex account to open a PR for us in OpenAI’s internal monorepo. Then we stopped any further testing. We updated the BugCrowd submission with the impact proof and alerted OpenAI security. We also prepared a report for Discourse and reported it to their HackerOne program. Discourse received
관련 소식