Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-27621 — CVE-2026-27621 - TypiCMS Core에 SVG 파일 업로드를 통한 저장형 교차 사이트 스크립팅(XSS) 취약점 존재 | Kitploit
도구/GitHubGitHub/lukasz-rybak/cve-2026-27621
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPapers & ResearchLearning & Education
GitHublukasz-rybak/cve-2026-27621

CVE-2026-27621

CVE-2026-27621 - TypiCMS Core에 SVG 파일 업로드를 통한 저장형 교차 사이트 스크립팅(XSS) 취약점 존재

저장소 보기
15개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-27621: TypiCMS Core에 SVG 파일 업로드를 통한 저장형 크로스 사이트 스크립팅(XSS) 취약점 존재

개요

필드세부 정보
CVE IDCVE-2026-27621
심각도중간
권고문권고문 보기
발견자Lukasz Rybak

영향을 받는 제품

  • typicms/core (버전: < 16.1.7)

CWE 분류

  • CWE-79: 웹 페이지 생성 중 입력값의 부적절한 중화('크로스 사이트 스크립팅')

세부 정보

I. 요약

TypiCMS의 파일 업로드 모듈에 저장형 크로스 사이트 스크립팅(XSS) 취약점이 존재합니다. 이 애플리케이션은 파일 업로드 권한이 있는 사용자가 SVG 파일을 업로드할 수 있도록 허용합니다. MIME 유형 검증은 수행되지만 SVG 파일의 콘텐츠는 정화되지 않습니다. 공격자는 악성 JavaScript 코드가 포함된 특수하게 제작된 SVG 파일을 업로드할 수 있습니다. 다른 사용자(예: 관리자)가 애플리케이션을 통해 이 파일을 보거나 접근하면 스크립트가 해당 사용자의 브라우저에서 실행되어 세션이 손상됩니다.

이 문제는 SVG 파싱 로직의 버그로 인해 더욱 악화되는데, 업로드된 SVG에 viewBox 속성이 없으면 500 오류가 발생할 수 있습니다. 그러나 공격자는 악성 페이로드에 유효한 viewBox 속성을 쉽게 포함할 수 있으므로 이는 XSS 취약점을 완화하지 못합니다.

II. 취약점 세부 정보

  • 취약점 유형: 저장형 크로스 사이트 스크립팅(XSS) (CWE-79)
  • 영향을 받는 구성 요소: TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php 및 TypiCMS\Modules\Core\Services\FileUploader.php
  • 영향을 받는 버전: <= 16.0.5

이 취약점은 두 가지 주요 지점에서 비롯됩니다:

  1. 허용적인 파일 검증: FileFormRequest는 업로드 허용 MIME 유형으로 svg를 명시적으로 허용 목록에 포함합니다.
  2. 콘텐츠 정화 부재: FileUploader 서비스는 <script> 태그나 on* 이벤트 핸들러와 같은 잠재적으로 악성인 요소를 제거하기 위해 콘텐츠를 파싱하고 정화하지 않은 채 SVG 파일을 서버에 저장합니다.

기본 파일시스템 디스크가 public으로 설정된 경우, 업로드된 SVG 파일은 공개적으로 접근 가능한 디렉터리에 저장되므로 직접 URL로 파일에 접근하여 XSS 페이로드를 트리거하는 것이 매우 쉬워집니다.

III. 개념 증명(PoC)

  1. 악성 SVG 파일 생성: malicious.svg라는 이름의 파일을 다음 내용으로 생성합니다. viewBox 속성은 애플리케이션의 파싱 버그를 우회하기 위해 포함되었습니다.

    root@kitploit:~
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
        <script>
            // A simple PoC to demonstrate the vulnerability
            alert('XSS in TypiCMS! Your session cookie is: ' + document.cookie);
        </script>
        <text x="10" y="50">If you see this, the script has run.</text>
    </svg>
    
  2. 악성 파일 업로드:

    • 파일 업로드 권한이 있는 사용자로 TypiCMS 관리자 패널에 로그인합니다.
    • "Files" 모듈(예: /admin/files)로 이동합니다.
    • malicious.svg 파일을 업로드합니다. 애플리케이션은 파일을 수락하고 저장합니다. image
image
  1. XSS 트리거:
    • 애플리케이션은 업로드된 파일의 공개 URL을 제공하며, 일반적으로 http://<your-site>/storage/files/malicious.svg 형식입니다.
    • 이 URL로 이동하는 모든 사용자는 자신의 브라우저에서 포함된 JavaScript가 실행됩니다.
    • 공격자는 이 링크를 권한 있는 사용자(예: 관리자)에게 보낼 수 있습니다. 관리자가 링크를 클릭하면 세션 쿠키가 도난당하거나, 공격자가 해당 사용자를 대신하여 작업을 수행할 수 있습니다.
image
image

IV. 영향

이 취약점을 성공적으로 악용하면 공격자는 피해자 브라우저의 컨텍스트에서 임의의 JavaScript를 실행할 수 있습니다. 세션 쿠키에 HttpOnly 플래그를 사용하면 document.cookie를 통한 세션 ID 직접 도난은 방지할 수 있지만, 공격자는 피해자를 대신하여 작업을 수행함으로써 피해자 계정을 완전히 장악할 수 있습니다.

영향은 다음과 같습니다:

  • 동작 위조를 통한 계정 탈취: 공격자의 스크립트는 피해자의 브라우저에서 애플리케이션의 API로 인증된 요청을 보낼 수 있습니다. 이를 통해 공격자는 피해자에게 허용된 모든 작업을 수행할 수 있습니다. 예를 들어:

    • 공격자를 위한 새 관리자 계정 생성
    • 피해자의 이메일 주소 및 비밀번호 변경
    • 모든 콘텐츠, 사용자 및 설정 삭제 또는 수정
  • 민감한 정보 노출: 스크립트는 피해자가 관리자 패널 내에서 보는 모든 페이지의 콘텐츠를 읽을 수 있습니다. 여기에는 사용자 목록(이름 및 이메일 포함), 비공개 애플리케이션 설정 및 기타 민감한 데이터가 포함되며, 이후 공격자가 제어하는 서버로 유출될 수 있습니다.

  • 피싱 및 사회공학: 스크립트는 관리자 패널의 UI를 조작하여 가짜 로그인 양식을 표시해 사용자가 자격 증명을 다시 입력하도록 속이거나, 사용자를 악성 웹사이트로 리디렉션할 수 있습니다.

  • 키로깅: 스크립트는 피해자가 손상된 페이지의 양식에 입력하는 모든 정보를 캡처할 수 있습니다.

공격자는 인증된 관리자로서 모든 작업을 수행할 수 있으므로, 이 취약점은 세션 쿠키에 직접 접근하지 않더라도 사실상 전체 애플리케이션 장악으로 이어집니다. 위험도는 높음입니다.

V. 권장 패치 및 완화 조치

이 취약점을 완화하기 위해 심층 방어(defense-in-depth) 방식을 적용할 것을 권장합니다.

  1. 1차 수정: SVG 콘텐츠 정화: 가장 강력한 해결책은 업로드 시 SVG 파일을 정화하는 것입니다. 파일을 저장하기 전에 <script>, <style>, <foreignObject> 태그 및 모든 on* 이벤트 속성을 포함한 모든 잠재적으로 위험한 요소를 제거하기 위해 파싱해야 합니다. 이는 전용 SVG 정화 라이브러리를 사용하여 수행할 수 있습니다.

  2. 2차 수정: SVG 업로드 비활성화: SVG 업로드가 애플리케이션의 핵심 기능이 아닌 경우, 가장 간단하고 안전한 해결책은 SVG 업로드를 완전히 비활성화하는 것입니다. 이는 TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php의 허용 MIME 유형 목록에서 'svg'를 제거하여 수행할 수 있습니다.

    root@kitploit:~
    // In FileFormRequest.php
    // BEFORE:
    $fileRule = 'mimes:jpeg,gif,png,...,svg,...|max:...';
    
    // AFTER:
    $fileRule = 'mimes:jpeg,gif,png,...,pdf,...|max:...'; // Removed 'svg'
    
  3. 강화 - 콘텐츠 보안 정책(CSP): 애플리케이션에 엄격한 콘텐츠 보안 정책(CSP) 헤더를 구현합니다. 제대로 구성된 CSP는 인라인 스크립트 실행을 차단하여 이 XSS 취약점의 영향을 완화할 수 있습니다.

  4. 강화 - 사용자 콘텐츠를 별도의 도메인에서 제공: 모든 사용자 업로드 파일을 쿠키가 없는 별도의 도메인에서 제공합니다. 이는 사용자 생성 콘텐츠를 기본 애플리케이션에서 격리하는 매우 효과적인 보안 조치로, 스크립트가 세션 쿠키에 접근하거나 애플리케이션의 DOM과 상호작용하는 것을 방지합니다.

참고 자료

  • https://github.com/TypiCMS/Core/security/advisories/GHSA-xfvg-8v67-j7wp
  • https://nvd.nist.gov/vuln/detail/CVE-2026-27621
  • https://github.com/TypiCMS/Core/commit/d480a0be1e8e7c0600bb9a325bb11920ee66497d
  • https://github.com/advisories/GHSA-xfvg-8v67-j7wp

면책 조항

이 CVE는 조정된 취약점 공개(coordinated vulnerability disclosure) 관행에 따라 책임 있게 공개되었습니다. 여기에 제공된 정보는 교육 및 방어 목적으로만 사용됩니다.

도구 다운로드