🇰🇷 한글 설명
Arcane 1.19.0 미만 버전에서 발생하는 취약점으로, 인증되지 않은 사용자가 특정 API 엔드포인트의 color 파라미터를 통해 악성 스크립트를 주입할 수 있습니다. SVG 문서 내의 style 태그를 조작하여 관리자의 브라우저에서 자바스크립트를 실행시키고, 이를 통해 관리자 계정의 JWT 쿠키를 탈취하여 계정을 완전히 장악할 수 있습니다.
💡 쉬운 설명
공격자가 특수하게 조작된 링크를 관리자에게 보내면, 관리자의 브라우저에서 몰래 악성 코드가 실행됩니다. 이 코드는 관리자의 로그인 정보를 훔쳐가서 공격자가 관리자 권한을 가질 수 있게 만듭니다.
🇺🇸 원문 (English)
Arcane is an interface for managing Docker containers, images, networks, and volumes. Prior to 1.19.0, the unauthenticated GET /api/app-images/logo endpoint reflects a user-supplied color query parameter into the body of an SVG document via strings.ReplaceAll with no escaping. The substitution lands inside a <style> element of the embedded logo.svg, allowing an attacker to close the style block and inject executable <script> content. Because the response is served as image/svg+xml and Arcane sets no Content-Security-Policy or X-Content-Type-Options headers, navigating a logged-in admin victim to a crafted URL executes attacker-controlled JavaScript in Arcane's origin and rides the victim's HttpOnly JWT cookie to fully compromise the admin account. This vulnerability is fixed in 1.19.0.
📍 영향받는 시스템
Arcane 버전 1.19.0 미만
⚔️ 공격 벡터
인증되지 않은 사용자가 조작된 URL을 통해 관리자의 브라우저에서 스크립트를 실행시키는 XSS 공격
🛡️ 대응 방법
Arcane를 최신 보안 패치가 적용된 1.19.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
해당 엔드포인트가 응답하며 SVG 형식을 반환하는지 확인하고, 설치된 Arcane 버전을 체크하여 1.19.0 미만인지 확인합니다.
curl -s http://<target-ip>:<port>/api/app-images/logo?color=test | grep -q 'image/svg\+xml' && echo 'Vulnerable or Active'