🇰🇷 한글 설명
Node.js 기반 CMS인 Ghost의 특정 버전에서 게시물 재렌더링 시 이미지 크기 정보를 가져오기 위해 외부 URL로 HTTP 요청을 보낼 때 검증이 부족한 취약점이 발견되었습니다. 인증된 스태프 사용자가 악의적인 URL을 이미지 카드로 설정하면, 서버가 내부 네트워크나 클라우드 메타데이터 엔드포인트로 요청을 보내게 유도할 수 있습니다. 이 취약점은 6.21.1 버전에서 수정되었습니다.
💡 쉬운 설명
관리자 권한을 가진 사용자가 가짜 이미지 주소를 입력하면, 서버가 몰래 내부 네트워크나 중요한 정보가 담긴 주소로 접속을 시도하게 만드는 보안 약점입니다. 이를 통해 외부에서 접근할 수 없는 서버 내부의 민감한 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
Ghost is a Node.js content management system. From 6.19.4 until 6.21.1, when re-rendering posts, Ghost would refetch missing image dimensions by issuing an outbound HTTP request to the URL stored on an image card — without restricting that URL to trusted image hosts. An authenticated staff user able to create or edit posts could therefore point an image card at an attacker-chosen host and cause the Ghost server to request it on their behalf, including hosts on internal networks or cloud instance metadata endpoints that would not normally be reachable from the public internet. This vulnerability is fixed in 6.21.1.
📍 영향받는 시스템
Ghost CMS 버전 6.19.4 ~ 6.21.1
⚔️ 공격 벡터
인증된 스태프 사용자가 게시물 편집 시 공격자가 제어하는 외부 URL을 이미지 카드로 삽입하여 서버 측 요청 위조(SSRF) 유도
🛡️ 대응 방법
Ghost CMS를 최신 보안 패치가 적용된 6.21.1 버전 이상으로 업데이트
🔧 검증 코드
출력된 Ghost의 버전을 확인하여 6.21.1 미만 버전인지 체크
npm list -g ghost --depth=0 | grep ghost