Hacktron과 유지보수자들과 함께한 libheif 취약점 재현, 공개 및 수정 과정
요약
Next.js 이미지 최적화 과정에서 발견된 libheif의 원격 코드 실행(RCE) 취약점에 대한 분석 및 대응 과정을 다루고 있습니다. 이 취약점은 Next.js 자체 문제가 아닌, 사용되는 AVIF 디코더 라이브러리인 libheif 상위 계층에 존재했습니다. 개발팀은 Hacktron과 협력하여 RCE를 재현하고, Vercel 플랫폼 전반의 완화 조치를 배포하며, 해당 라이브러리의 유지보수자들에게 취약점을 공개하고 수정 작업을 주도적으로 이끌었습니다.
핵심 포인트
- 취약점은 Next.js가 아닌 libheif 디코더 상위 계층에 존재함.
- RCE 재현 및 발견 후, Vercel이 플랫폼 차원의 완화 조치를 신속히 배포함.
- 개발팀이 유지보수자들과 협력하여 취약점을 공개하고 패치(v1.23.2)를 이끌어냄.
- 이미지 처리 의존성 체인 이해가 중요하며, 중앙 서비스로 트래픽을 관리하는 것이 방어책이 됨.
2026년 8월, Next.js 이미지 최적화에서 원격 코드 실행(RCE) 취약점으로 보이는 문제가 보고되었습니다. 조사 결과, 취약한 코드는 Next.js 자체에 있는 것이 아니라 Next.js가 사용하는 AVIF 이미지 디코더인 libheif의 상위 계층(upstream)에 있다는 것을 발견했습니다. HacktronImageMagickWordPresssharp
Hacktron이 저희에게 알린 직후, 저희는 그들과 협력하여 현재 Next.js 빌드에서 RCE를 재현하고, sharp, libvips, 그리고 libheif의 유지보수자들에게 이를 공개했습니다. 이후 Vercel 전반에 걸쳐 플랫폼 차원의 완화 조치를 배포하고 유지보수자들과 함께 수정 작업에 착수했습니다.
Next.js 이미지 최적화는 애플리케이션이 컴포넌트(<Image> next/image)를 통해 이미지를 크기 조정하고 최적화할 수 있게 합니다. AVIF 이미지의 경우, 이미지 처리 의존성 체인은 다음과 같습니다:
[IMG:N]
이는 취약한 코드가 Next.js에 있는 것이 아니라, 그럼에도 불구하고 Next.js 이미지 최적화를 통해 도달 가능하다는 것을 의미했습니다. 악성 AVIF 이미지가 이미지 최적화 엔드포인트로 전송되면 sharp와 libvips를 거쳐 libheif를 호출하게 됩니다.
따라서 한 가지 명확한 완화 조치는 Next.js에서 AVIF 최적화를 비활성화하는 것이었습니다. 그러면 악성 AVIF 이미지는 sharp와 libvips를 통해 libheif로 전달되는 대신 이미지 최적화 엔드포인트에서 멈추게 됩니다. 익스플로잇이 상위 계층으로 전파되지 않도록 막을 수 있었습니다.
하지만, 상위 계층의 수정 없이 Next.js만 완화하는 것은 공개(disclosure) 문제를 야기했습니다.
저희가 Hacktron과 협력하여 이 문제를 성공적으로 재현한 후, Vercel에서 플랫폼 전반에 걸친 완화 조치를 배포하고 sharp, libvips, 그리고 libheif의 유지보수자들에게 연락하여 취약점을 공개하고 수정 작업에 착수했습니다.
타임라인은 다음과 같습니다:
Vercel 보안팀은 sharp과 libvips의 유지보수자들에게 이메일로 연락하고 GitHub Security Advisory를 통해 libheif와 협력 체계를 구축했습니다. Hacktron 역시 libheif에 취약점 및 익스플로잇 상세 정보를 제출했습니다. 8월 19일, Next.js 팀은 libvips 유지보수자와 만나 sharp, libvips, 그리고 libheif 전반에 걸친 향후 진행 방향을 조율했습니다. libheif 유지보수자는 Hacktron의 GitHub Security Advisory를 통해 지속적으로 수정 작업을 진행했습니다.
8월 24일, Next.js는 보안 파트너들에게 libheif 취약점과 이것이 Next.js에 미치는 영향에 대해 알렸습니다 (파트너 통보는 Next.js의 보안 릴리스 프로세스에서 일상적인 부분입니다).
8월 25일, 8월 19일 회의 후 6일 만에 libheif 유지보수자는 RCE를 수정하는 v1.23.2 버전을 출시했습니다.
Vercel과 그 고객들을 보호하는 것은 간단했습니다: Vercel에서 발생하는 모든 Next.js 이미지 최적화 요청은 중앙 Image Optimization Service를 거칩니다. 따라서, 유입되는 AVIF 이미지는 libheif로 전달되어 디코딩되지 않았고 RCE가 발생할 수 없었습니다.중앙 서비스에서 AVIF 최적화 및 크기 조절을 비활성화했습니다
자체 호스팅 애플리케이션을 보호하려면 Next.js 릴리스가 필요했습니다. 원래 8월 25일, 별도의 문제를 해결하기 위해 계획되었던 것이었습니다. 이후, 우리는 AVIF 완화 조치를 해당 릴리스에 포함하여 예정보다 하루 일찍 배포했습니다. 이 릴리스는 Next.js에서 AVIF 최적화 및 크기 조절을 비활성화했으며; 패치된 libheif 릴리스가 여전히 다운스트림으로 전파되고 있었기 때문에, 이것이 가장 시의적절한 선택이었습니다. 또한 문제의 심각성을 알리기 위해 보안 권고문도 발표했습니다.Next.js가 보안 릴리스를 발표했습니다업스트림 수정 사항을 조율했습니다
발견되는 OSS 취약점의 양은 계속 증가하고 있으며, 그 수치는 압도적입니다:
LLM이 취약점 연구를 가속화함에 따라, 우리는 OSS 생태계 전반의 libheif RCE와 같은 더 많은 상위(upstream) 취약점을 볼 것으로 예상합니다. 최근 몇 달 동안 Next.js 보안 릴리스가 증가했으며, 우리 자신과 연구 커뮤니티가 발견하는 새로운 취약점을 완화함에 따라 이러한 추세가 계속될 것으로 예상합니다.
우리는 공격자보다 먼저 취약점을 선제적으로 찾아내고, 발견한 모든 것을 책임감 있게 공개하며, 연구원 및 유지보수자들과 수정 작업에 협력하기 위해 노력하고 있습니다.
Hacktron이 AVIF 취약점을 책임감 있게 공개하고, 문제를 재현하는 데 도움을 주었으며, 패치 작업을 통해 상위 유지보수자들과 조율해 준 것에 감사드립니다.
또한 sharp, libvips, 그리고 libheif의 유지보수자들에게도 감사를 표합니다. 이들이 상위 수정 작업에 참여함으로써 이미지 처리 의존성 체인 전반에 걸쳐 조정된 패치가 가능했습니다.
우리는 재능 있는 연구원들과 협력하여 Next.js 및 기타 오픈 소스 프레임워크를 안전하게 유지하고 있습니다. 적격한 프레임워크의 보안에 기여하는 데 관심이 있는 분들은 Vercel's Open Source Bug Bounty에서 참여해 주시기를 권장합니다.
의존성 체인 (The dependency chain)
취약점 공개 및 상위 패치 조정 (Disclosing the vulnerability and coordinating the upstream fix)
Vercel 및 Next.js 완화 조치 (Vercel and Next.js mitigations)
웹을 더 안전하게 만들기 위한 우리의 노력 (Our commitment to making the web more secure)
크레딧 (Credit)
참고 자료 (References)
-
invokes ,
<Image>``/_next/image -
calls sharp
/_next/image -
sharp calls libvips
-
libvips uses libheif to decode the image
-
Hacktron이 Vercel에 해당 취약점을 보고했습니다. Hacktron과 Vercel은 작동하는 개념 증명(proof of concept)을 통해 RCE를 재현했습니다.8월 11일~12일:
-
Vercel은 이미지 최적화 서비스(Image Optimization Service)를 통해 플랫폼 차원의 완화 조치를 적용했습니다.8월 13일:
-
Next.js 팀은 libvips 유지보수자와 만나 sharp, libvips, libheif 전반에 걸친 협력을 시작했습니다.8월 19일:
-
Next.js는 보안 파트너들에게 관련 내용을 알렸습니다.8월 24일:
-
Next.js는 AVIF 최적화를 비활성화하는 보안 릴리스를 발표했습니다.8월 25일:
-
GitHub의 비공개 취약점 보고서는 1월 주당 500건에서 5월 주당 3,000건으로 증가했습니다
-
GitHub는 또한 권고 데이터베이스 역사상 최고 월간 볼륨인 2026년 5월에 1,560개의 검토된 권고 사항을 보고했습니다
AI 자동 생성 콘텐츠
본 콘텐츠는 Vercel AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기