🇰🇷 한글 설명
Shiny for Python 1.4.0부터 1.6.4 버전까지, 북마크 복구 기능에서 클라이언트가 제공한 state_id를 검증 없이 디렉토리에 결합하는 취약점이 존재합니다. 공격자는 경로 조작을 통해 서버의 임의 파일을 읽거나, 특정 설정 환경에서 공격자가 선택한 파일을 복사하여 노출시킬 수 있습니다.
💡 쉬운 설명
웹 애플리케이션의 북마크 기능을 악용하여 서버에 저장된 중요한 파일을 몰래 훔쳐볼 수 있는 보안 결함입니다. 공격자가 파일 경로를 조작하여 원래 접근해서는 안 되는 시스템 파일에 접근할 수 있게 만듭니다.
🇺🇸 원문 (English)
Shiny for Python is a framework for building interactive web applications in Python. From 1.4.0 until 1.6.4, bookmark restore accepts a client-supplied state_id and joins it into the server-side shiny_bookmarks directory without validating that it is a single safe path segment. An unauthenticated request can use parent-directory segments or an absolute path to make the server open input.json and values.json outside the bookmark store, even when bookmark_store is set to disable. In applications configured with bookmark_store set to server and using ui.input_file(), the restore handler can additionally copy and expose an attacker-selected file from an attacker-selected directory. This issue is fixed in version 1.6.4.
📍 영향받는 시스템
Shiny for Python 1.4.0 ~ 1.6.4
⚔️ 공격 벡터
인증되지 않은 사용자가 조작된 state_id를 포함한 요청을 보내 경로 조작(Path Traversal) 공격 수행
🛡️ 대응 방법
Shiny for Python을 최신 보안 패치가 적용된 버전인 1.6.4 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 Version이 1.6.4 미만이면 취약한 버전이므로 업데이트가 필요합니다.
pip show shiny | grep -E 'Version'