🇰🇷 한글 설명
Astro 웹 프레임워크의 이미지 파이프라인 버그로 인해 image.domains 및 image.remotePatterns 제한을 우회할 수 있습니다. inferSize 옵션 사용 시 도메인 검증이 수행되지 않아, 공격자가 임의의 호스트로부터 콘텐츠를 가져오게 하여 SSRF 공격을 수행할 수 있습니다.
💡 쉬운 설명
웹사이트가 허락된 이미지 주소만 가져오도록 설정되어 있음에도 불구하고, 특정 기능을 사용하면 공격자가 지정한 엉뚱한 주소로 서버가 접속하게 만들 수 있습니다. 이를 통해 서버 내부 네트워크나 중요한 정보에 몰래 접근할 위험이 있습니다.
🇺🇸 원문 (English)
Astro is a web framework. In versions 9.0.0 through 9.5.3, a bug in Astro's image pipeline allows bypassing `image.domains` / `image.remotePatterns` restrictions, enabling the server to fetch content from unauthorized remote hosts. Astro provides an `inferSize` option that fetches remote images at render time to determine their dimensions. Remote image fetches are intended to be restricted to domains the site developer has manually authorized (using the `image.domains` or `image.remotePatterns` options). However, when `inferSize` is used, no domain validation is performed — the image is fetched from any host regardless of the configured restrictions. An attacker who can influence the image URL (e.g., via CMS content or user-supplied data) can cause the server to fetch from arbitrary hosts. This allows bypassing `image.domains` / `image.remotePatterns` restrictions to make server-side requests to unauthorized hosts. This includes the risk of server-side request forgery (SSRF) against internal network services and cloud metadata endpoints. Version 9.5.4 fixes the issue.
📍 영향받는 시스템
Astro versions 9.0.0 through 9.5.3
⚔️ 공격 벡터
사용자 입력이나 CMS 콘텐츠를 통해 조작된 이미지 URL을 전달하여 inferSize 기능이 실행되도록 유도
🛡️ 대응 방법
Astro 버전을 9.5.4 이상으로 업데이트
🔧 검증 코드
명령어 결과에 [email protected] ~ 9.5.3 사이의 버전이 나타나면 취약한 상태입니다.
npm list astro | grep -E 'astro@9\.(0\.[0-9]|1\.[0-9]|2\.[0-9]|3\.[0-9]|4\.[0-9]|5\.[0-3])'