🔍 CVE-2026-9318

5.4
CVSS Score
MEDIUM
2026-08-12
2026-10-24 13:10
✅ 완료

🇰🇷 한글 설명

tablib 3.10.0 이전 버전의 HTML 내보내기 기능에 저장형 크로스사이트 스크립팅(XSS) 취약점이 존재합니다. 데이터셋 제목이 이스케이프 없이 HTML에 삽입되어 악성 스크립트가 실행될 수 있습니다.

💡 쉬운 설명

악의적인 사용자가 엑셀이나 YAML 파일의 시트 이름에 스크립트를 숨겨 두면, tablib로 HTML을 만들어 브라우저에서 열 때 그 스크립트가 실행됩니다. 이로 인해 로그인 세션이 탈취되거나 민감한 정보가 노출될 수 있습니다.

🇺🇸 원문 (English)

tablib prior to 3.10.0 contains a stored cross-site scripting vulnerability in the HTML export functionality that allows attackers to execute arbitrary JavaScript by embedding malicious payloads in dataset titles, which are interpolated unsanitized into HTML output via the export_book method in the _html.py format handler. Attackers can rename worksheet sheets in imported files such as XLSX, ODS, XLS, or YAML with script payloads that are assigned to the Dataset title attribute and rendered unescaped inside an HTML h3 tag, leading to session hijacking, unauthorized administrative actions, and sensitive data exposure when the output is rendered in a browser.

📍 영향받는 시스템

tablib 3.10.0 미만 버전을 사용하는 Python 애플리케이션 (HTML 내보내기 기능 사용 시)

⚔️ 공격 벡터

악성 스크립트가 포함된 시트 이름을 가진 XLSX/ODS/XLS/YAML 파일을 가져와 HTML로 내보낸 결과를 피해자가 브라우저에서 열람하도록 유도

🛡️ 대응 방법

tablib을 3.10.0 이상으로 업그레이드하고, 신뢰할 수 없는 데이터를 HTML로 출력하기 전 이스케이프 처리를 적용

🔧 검증 코드

출력된 Version 값이 3.10.0 이상이면 패치가 적용된 것이고, 3.10.0 미만이면 취약한 버전이므로 업그레이드가 필요합니다.

Shell / Script
pip show tablib 2>/dev/null | grep -i version

📊 CVSS Vector String

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