NLTK до версии 3.10.0 (затронутые версии <= 3.9.4) содержит уязвимость подделки запросов на стороне сервера (SSRF) в функции validate_network_url() в nltk/pathsec.py. Помощник _resolve_hostname() перехватывает OSError и ValueError во время выполнения функции socket.getaddrinfo() и возвращает пустой список; когда разрешение DNS не удается, цикл проверки не выполняет никаких проверок IP, и функция не открывается, что позволяет urlopen() продолжить работу без проверки. Злоумышленник, который может вызвать сбои разрешения DNS или использовать перепривязку DNS, может обойти защиту SSRF и получить доступ к ограниченным сетевым ресурсам, включая конечные точки облачных метаданных (например, 169.254.169.254).
Показать оригинальное описание (EN)
NLTK before 3.10.0 (affected versions <= 3.9.4) contains a server-side request forgery (SSRF) vulnerability in the validate_network_url() function in nltk/pathsec.py. The _resolve_hostname() helper catches OSError and ValueError during socket.getaddrinfo() and returns an empty list; when DNS resolution fails, the validation loop executes no IP checks and the function fails open, allowing urlopen() to proceed without validation. An attacker who can trigger DNS resolution failures or use DNS rebinding can bypass SSRF protections and reach restricted network resources, including cloud metadata endpoints (e.g., 169.254.169.254).
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Nltk Nltk
cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:*
|
— |
3.10.0
|