🇰🇷 한글 설명
nltk 3.9.4 버전 및 개발 브랜치에서 SSRF 취약점이 발견되었습니다. nltk.pathsec.validate_network_url() 함수가 RFC 6598 공유 주소 공간(100.64.0.0/10)을 차단하지 못해, 공격자가 내부 인프라에 접근할 수 있는 위험이 있습니다.
💡 쉬운 설명
프로그램이 내부 네트워크 주소를 막아야 하는데, 특정 특수 주소 범위를 놓치는 보안 구멍이 발견되었습니다. 이를 통해 공격자가 허가되지 않은 내부 서버에 몰래 접속을 시도할 수 있습니다.
🇺🇸 원문 (English)
A Server-Side Request Forgery (SSRF) vulnerability exists in nltk/nltk versions 3.9.4 and the current develop branch. The `nltk.pathsec.validate_network_url()` function, intended to prevent SSRF by rejecting internal network addresses, fails to reject IPs in the RFC 6598 shared address space (`100.64.0.0/10`). This occurs because Python's `ipaddress` module does not classify such addresses as `is_private` or `is_global`, and the current guard only checks `is_private` and a few explicit categories. An attacker who can influence a URL passed to NLTK's network-loading helpers can exploit this vulnerability to make a strict-mode application send requests to shared-address-space hosts, potentially exposing non-public infrastructure reachable from the application host. The impact is limited to SSRF-style confidentiality exposure, with no code execution claimed.
📍 영향받는 시스템
nltk 3.9.4 및 현재 develop branch
⚔️ 공격 벡터
NLTK의 네트워크 로딩 도구에 조작된 URL(100.64.0.0/10 범위)을 전달하여 내부 서버로 요청 유도
🛡️ 대응 방법
nltk 라이브러리를 최신 보안 패치가 적용된 버전으로 업데이트하거나, 입력 URL에 대한 추가 검증 로직 구현
🔧 검증 코드
출력된 버전이 3.9.4 이하이거나 develop 브랜치인 경우 취약할 수 있음
pip show nltk | grep Version