🇰🇷 한글 설명
Campfire 채팅 애플리케이션 1.4.4 이하 버전에서 링크 미리보기(OpenGraph unfurl) 기능의 내부 네트워크 접근 차단 로직이 CGNAT(100.64.0.0/10), NAT64(64:ff9b::/96, 64:ff9b:1::/48), 6to4(2002::/16) 대역을 누락하여 SSRF 우회가 가능합니다. 인증된 사용자가 해당 대역으로 해석되는 링크를 게시하여 서버가 내부 자원에 요청을 보내도록 유도할 수 있으며, 영향은 주로 반환되는 메타데이터 노출에 한정됩니다. 1.4.5 버전에서 초기 수정이 제공되었습니다.
💡 쉬운 설명
채팅에 올린 링크의 미리보기를 만들 때 서버가 내부망 주소에 접근하지 못하도록 막는 기능이 일부 특수 주소 대역을 놓치고 있습니다. 로그인한 사용자가 이 허점을 이용해 서버가 내부 시스템에 요청하게 만들 수 있지만, 가져올 수 있는 정보는 제한적입니다.
🇺🇸 원문 (English)
Campfire is a web-based chat application. In version 1.4.4 and earlier, when a Campfire message contains a link, the server fetches it to build an OpenGraph unfurl preview. `RestrictedHTTP::PrivateNetworkGuard` relied on Ruby's `IPAddr#private? `` IPAddr#loopback?`, and `IPAddr#link_local?` predicates plus IPv4-mapped and IPv4-compatible checks, which do not cover several special-use ranges. An authenticated user can post a link to a hostname resolving to CGNAT `100.64.0.0/10`, NAT64 `64:ff9b::/96` or `64:ff9b:1::/48`, or 6to4 `2002::/16` to bypass the guard and cause server-side requests to internal network resources. The NAT64 and 6to4 ranges can embed an internal IPv4 target. Confidentiality impact is limited to returned OpenGraph metadata, and most internal endpoints return none. There is no integrity or availability impact. An initial fix was released in version 1.4.5.
📍 영향받는 시스템
Campfire 1.4.4 이하 버전 (1.4.5에서 수정)
⚔️ 공격 벡터
인증된 사용자가 CGNAT, NAT64, 6to4 대역으로 해석되는 호스트명을 포함한 링크를 메시지로 게시하여 서버 측 SSRF를 유발
🛡️ 대응 방법
Campfire를 1.4.5 이상 버전으로 업그레이드하고, 추가로 내부 대역 차단 목록에 CGNAT·NAT64·6to4 대역을 포함하도록 방화벽/프록시 정책을 점검
🔧 검증 코드
출력된 버전이 1.4.5 이상이면 패치 적용된 것이고, 1.4.4 이하이거나 버전 정보를 확인할 수 없으면 취약할 수 있으므로 업그레이드가 필요합니다.
campfire --version 2>/dev/null || grep -rE '^\s*(gem\s+.?campfire|version)' Gemfile.lock 2>/dev/null | head -n 5
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server