🇰🇷 한글 설명
Nuxt OG Image의 특정 설정에서 인증되지 않은 사용자가 /_og/d/** 경로를 통해 폰트 파라미터를 조작할 수 있는 취약점이 존재합니다. 공격자는 이를 악용하여 서버 내부 네트워크나 클라우드 메타데이터 서비스로 SSRF(Server-Side Request Forgery) 공격을 수행할 수 있습니다. 이 문제는 버전 6.7.0에서 수정되었습니다.
💡 쉬운 설명
웹사이트의 미리보기 이미지를 만드는 기능의 허점을 이용해, 공격자가 서버 내부의 비밀 정보에 접근하거나 내부 네트워크를 탐색할 수 있는 문제입니다. 폰트 파일을 불러오는 과정에서 검증 없이 외부 주소를 호출할 수 있는 점을 악용합니다.
🇺🇸 원문 (English)
Nuxt OG Image generates OG Images with Vue templates in Nuxt. From 6.0.2 until 6.7.0, nuxt-og-image exposes the unauthenticated /_og/d/** route when the documented defaults security.strict = false and security.secret = "" are used, and base64url-decodes the fonts parameter through decodeOgImageParams. Attacker-controlled fonts[].path values flow through loadDefinedFonts into the font-assets/node.js binding, which performs a server-side fetch without validating the URL scheme, origin, resolved address, or redirects. This permits blind requests to loopback, private, link-local, cloud metadata, and other internal HTTP services, while differences in the outer response status and timing can reveal service reachability. Slow targets can also occupy OG image render workers for the configured fetch and render timeouts. This issue is fixed in version 6.7.0.
📍 영향받는 시스템
nuxt-og-image 6.0.2 ~ 6.7.0 (security.strict = false 및 security.secret = "" 설정 시)
⚔️ 공격 벡터
조작된 fonts[].path 파라미터를 포함한 HTTP 요청을 통해 서버 내부로 요청을 전달하는 SSRF 공격
🛡️ 대응 방법
nuxt-og-image를 6.7.0 버전 이상으로 업데이트하거나, security.strict를 true로 설정하고 보안 비밀값을 적용하십시오.
🔧 검증 코드
출력된 버전이 6.7.0 미만(6.0.2~6.7.0 사이)이라면 해당 취약점에 노출되어 있을 가능성이 높습니다.
npm list nuxt-og-image | grep nuxt-og-image