🇰🇷 한글 설명
NLTK의 nltk.data.load() 함수에서 nltk: URL 스킴을 사용할 때 경로 탐색(Path Traversal) 취약점이 발견되었습니다. URL 인코딩된 경로 구분자와 탐색 세그먼트가 보안 검사를 우회하여 공격자가 파일 시스템의 임의 파일을 읽을 수 있습니다. 이 문제는 검사 후 디코딩이 이루어지는 로직 결함으로 인해 발생합니다.
💡 쉬운 설명
특수하게 암호화된 주소를 입력하면 보안 검사를 통과하여 컴퓨터 내부의 중요한 파일을 몰래 읽어갈 수 있는 문제입니다. 마치 검문소에서 암호로 적힌 통행증을 검사한 뒤, 나중에 암호를 풀어서 금지된 구역으로 들어가는 것과 같습니다.
🇺🇸 원문 (English)
NLTK (Natural Language Toolkit) is a suite of open source Python modules, data sets, and tutorials supporting research and development in Natural Language Processing. Prior to 3.10.0-rc1, nltk.data.load() in NLTK is vulnerable to path traversal via URL-encoded path separators and traversal segments when using the nltk: URL scheme. The unsafe-path regex check is performed before url2pathname() decodes the %xx sequences (a classic decode-after-check / TOCTOU-style flaw), allowing an attacker to bypass the protection documented in NLTK's SECURITY.md and read arbitrary files from the filesystem. While literal traversal strings such as ../../../etc/passwd are correctly blocked, encoded variants such as %2fetc%2fpasswd, %2e%2e%2f..., and ..%2f..%2f slip past the regex and are subsequently decoded into a real filesystem path. This vulnerability is fixed in 3.10.0-rc1.
📍 영향받는 시스템
NLTK 버전 3.10.0-rc1 미만 모든 버전
⚔️ 공격 벡터
URL 인코딩된 경로(예: %2e%2e%2f)를 포함한 nltk: URL 스킴을 사용하여 nltk.data.load() 호출
🛡️ 대응 방법
NLTK를 3.10.0-rc1 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 3.10.0-rc1보다 낮은지 확인하십시오.
python3 -c 'import nltk; print(nltk.__version__)'