🔍 CVE-2026-25516

6.1
CVSS Score
MEDIUM
2026-02-06
2026-02-06 22:16
✅ 완료

🇰🇷 한글 설명

NiceGUI는 파이썬 기반의 UI 프레임워크입니다. ui.markdown() 컴포넌트는 markdown2 라이브러리를 사용하여 마크다운 콘텐츠를 HTML로 변환하고, 이를 innerHTML을 통해 렌더링합니다. 기본적으로 markdown2는 원시 HTML을 변경되지 않은 상태로 통과시킵니다. 즉, 애플리케이션이 사용자 제어 콘텐츠를 ui.markdown()을 통해 렌더링하는 경우, 공격자는 악의적인 HTML을 삽입하여 자바스크립트 이벤트 핸들러를 포함시킬 수 있습니다. 다른 NiceGUI 컴포넌트와 달리 ui.markdown() 컴포넌트는 sanitize 파라미터를 제공하거나 요구하지 않으므로, XSS 공격에 취약합니다. 이 취약점은 3.7.0 버전에서 수정되었습니다.

💡 쉬운 설명

NiceGUI의 ui.markdown() 컴포넌트는 사용자 입력 콘텐츠를 렌더링할 때, 악의적인 HTML과 자바스크립트 코드를 삽입할 수 있는 취약점이 있습니다. 이를 통해 XSS 공격이 가능해집니다. 이 문제는 3.7.0 버전에서 수정되었습니다.

🇺🇸 원문 (English)

NiceGUI is a Python-based UI framework. The ui.markdown() component uses the markdown2 library to convert markdown content to HTML, which is then rendered via innerHTML. By default, markdown2 allows raw HTML to pass through unchanged. This means that if an application renders user-controlled content through ui.markdown(), an attacker can inject malicious HTML containing JavaScript event handlers. Unlike other NiceGUI components that render HTML (ui.html(), ui.chat_message(), ui.interactive_image()), the ui.markdown() component does not provide or require a sanitize parameter, leaving applications vulnerable to XSS attacks. This vulnerability is fixed in 3.7.0.

📍 영향받는 시스템

NiceGUI 3.7.0 이전 버전

⚔️ 공격 벡터

사용자 입력 콘텐츠를 ui.markdown()을 통해 렌더링할 때, 악의적인 HTML과 자바스크립트 코드를 삽입

🛡️ 대응 방법

NiceGUI를 3.7.0 버전 이상으로 업데이트하거나, 사용자 입력 콘텐츠를 렌더링하기 전에 sanitize 처리를 수행

🔧 검증 코드

로컬 시스템에서 Python을 실행하고, nicegui 패키지의 버전을 확인하여 취약점 여부를 판단합니다. nicegui 패키지가 설치되지 않은 경우, 미설치 상태로 판단합니다.

Shell / Script
import pkg_resources
try:
    version = pkg_resources.get_distribution('nicegui').version
    if version < '3.7.0':
        print('{"result": "취약", "reason": "NiceGUI 버전이 3.7.0 미만"}')
    else:
        print('{"result": "양호", "reason": "NiceGUI 버전이 3.7.0 이상"}')
except pkg_resources.DistributionNotFound:
    print('{"result": "미설치", "reason": "NiceGUI가 설치되지 않음"}')

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

💻 영향받는 소프트웨어

Python