🔍 CVE-2026-102904

5.4
CVSS Score
MEDIUM
2026-09-29
2026-09-30 21:17
✅ 완료

🇰🇷 한글 설명

JupyterLab의 PyPI 확장 관리자에서 확장 프로그램 삭제 요청 시 입력값 검증이 미흡하여 발생하는 취약점입니다. 인증된 사용자가 삭제 명령에 pip 옵션을 삽입하여 로컬 파일을 읽거나 내부 URL을 호출할 수 있으며, 로그 파일을 생성하거나 손상시킬 수 있습니다.

💡 쉬운 설명

확장 프로그램을 삭제하는 과정에서 악의적인 명령어를 섞어 넣을 수 있는 보안 허점이 발견되었습니다. 이를 통해 공격자는 서버 내부의 파일을 몰래 읽거나 시스템 파일을 망가뜨릴 위험이 있습니다.

🇺🇸 원문 (English)

JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Architecture. From JupyterLab 4.0.0 until 4.5.11 and 4.6.4, the PyPI Extension Manager uninstall request reaches ExtensionHandler.post, which validates extension names for installation but passes uninstall names to PyPIExtensionManager.uninstall and python -m pip uninstall without rejecting option-like values. The security impact requires that the PyPI Extension Manager is enabled, the account can call the extension API, and kernels and terminals are disabled or delegated to remote hosts; otherwise the user can already read files and make outbound requests directly. An authenticated user with extension API access can supply a pip requirements option to make the server read a local file or fetch an internal URL, and reflected parse errors can return the first unparsable line or response content. A pip log option can also create or corrupt a chosen path with pip-generated log text, but the requester cannot select an arbitrary disclosed line or arbitrary file content, and the injection does not add code execution or availability impact beyond ordinary package removal. This issue is fixed in JupyterLab 4.5.11 and 4.6.4.

📍 영향받는 시스템

JupyterLab 4.0.0 ~ 4.5.11 및 4.6.4 미만 버전

⚔️ 공격 벡터

인증된 사용자가 확장 프로그램 삭제 API 호출 시 pip 옵션(예: --requirement)을 포함한 특수 문자열을 전달

🛡️ 대응 방법

JupyterLab을 최신 보안 패치가 적용된 버전(4.5.11 또는 4.6.4 이상)으로 업데이트

🔧 검증 코드

출력된 버전이 4.5.11 또는 4.6.4보다 낮은지 확인하여 취약 여부를 판단합니다.

Shell / Script
pip show jupyterlab | grep Version

📊 CVSS Vector String

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