🇰🇷 한글 설명
parisneo/lollms 2.1.0 버전의 backend/routers/ui.py 내 SPA catch-all 라우트에서 경로 탐색(Path Traversal) 취약점이 발견되었습니다. URL 인코딩된 점-점(%2e%2e) 시퀀스가 Starlette의 경로 정규화 과정을 우회하여 Python의 pathlib에 의해 해석됨으로써, 인증되지 않은 공격자가 서버의 임의 파일을 읽을 수 있습니다.
💡 쉬운 설명
해커가 특수하게 조작된 주소를 입력하여 서버 내부의 중요한 파일들을 몰래 훔쳐볼 수 있는 보안 약점입니다. 웹사이트의 주소창에 특정 기호를 입력하는 것만으로도 서버의 비밀 파일을 읽을 수 있습니다.
🇺🇸 원문 (English)
A path traversal vulnerability exists in parisneo/lollms version 2.1.0, specifically in the SPA catch-all route implemented in `backend/routers/ui.py`. The vulnerability arises from the improper handling of user-controlled path input, which is directly joined into a filesystem path without sanitization or containment checks. URL-encoded dot-dot sequences (`%2e%2e`) bypass Starlette's built-in path normalization and are resolved by Python's `pathlib`, allowing an unauthenticated attacker to read arbitrary files on the server. This issue has been resolved in version 3.
📍 영향받는 시스템
parisneo/lollms version 2.1.0
⚔️ 공격 벡터
URL 인코딩된 경로 탐색 문자열(%2e%2e)을 이용한 HTTP 요청
🛡️ 대응 방법
lollms 버전을 3.0 이상으로 업데이트
🔧 검증 코드
출력된 Version 값이 2.1.0이거나 그보다 낮은 버전이면 취약한 상태입니다.
pip show lollms 2>/dev/null | grep -E 'Version'