🇰🇷 한글 설명
ApostropheCMS 4.30.0 이하 버전에서 prettyUrls 설정 활성화 시, 공격자가 Host 헤더를 조작하여 내부 네트워크로 SSRF(서버 사이드 요청 위조) 공격을 수행할 수 있습니다. 이를 통해 공격자는 내부 네트워크의 서비스 접근성을 확인하거나 응답 코드를 통해 네트워크 토폴로지를 파악할 수 있습니다.
💡 쉬운 설명
웹사이트의 설정 오류로 인해 해커가 내부 네트워크를 자유롭게 탐색할 수 있는 구멍이 생겼습니다. 해커는 이 구멍을 통해 내부 시스템의 존재 여부를 확인하거나 정보를 수집할 수 있습니다.
🇺🇸 원문 (English)
ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, when `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO feature for serving uploaded files at clean URLs), the public pretty-URL handler builds the upstream URL using the raw `Host` HTTP request header. That URL is then `fetch`'ed and the response body + headers are streamed straight back to the requester. Because `Host` is fully attacker-controlled, an unauthenticated remote attacker can pivot the apostrophe process to issue outbound HTTP requests against any host it can reach on the private network. The path component is constrained to `/uploads/attachments/<cuid>-<slug>.<ext>` (built from a local-DB lookup), which keeps the impact narrow: cross-instance data exfiltration is neutralized by cuid uniqueness, but blind-SSRF residuals remain (network-topology mapping via response-code / timing differences and verbose proxy/WAF 404 body disclosure). As of time of publication, no known patched versions exist.
📍 영향받는 시스템
ApostropheCMS <= 4.30.0
⚔️ 공격 벡터
공격자가 Host HTTP 헤더를 조작하여 서버가 내부 네트워크의 임의 호스트로 HTTP 요청을 보내도록 유도
🛡️ 대응 방법
공급사의 공식 패치 버전 출시를 기다리거나, 현재는 prettyUrls 기능을 비활성화하거나 Host 헤더 검증 로직을 추가하여 우회 조치
🔧 검증 코드
출력된 버전 번호가 4.30.0 이하이거나 해당 패키지가 설치되어 있으면 취약한 것으로 판단
npm list @apostrophecms/file 2>/dev/null | grep -E '@apostrophecms/file@'