Уязвимость отравления веб-кэша через некорректную обработку параметров в компоненте "urllib.parse" в Python
Описание
Пакеты python/cpython с версией от 0 до 3.6.13, от 3.7.0 до 3.7.10, от 3.8.0 до 3.8.8 и от 3.9.0 до 3.9.2 уязвимы к атаке "отравление веб-кэша" (Web Cache Poisoning) через функции urllib.parse.parse_qsl
и urllib.parse.parse_qs
с использованием метода, известного как "маскирование параметров" (parameter cloaking).
Эта уязвимость возникает, когда злоумышленник использует символ точки с запятой (;
) для разделения параметров запроса. Это приводит к расхождению в интерпретации запроса между прокси-сервером (работающим с настройками по умолчанию) и основным сервером. В результате вредоносные запросы могут быть кэшированы как полностью безопасные, так как прокси обычно не воспринимает точку с запятой как разделитель параметров и, соответственно, не учитывает её в ключе кэширования для неименованных параметров.
Затронутые версии ПО
- Python/cpython от версии 0 до 3.6.13
- Python/cpython от версии 3.7.0 до 3.7.10
- Python/cpython от версии 3.8.0 до 3.8.8
- Python/cpython от версии 3.9.0 до 3.9.2
Тип уязвимости
Отравление веб-кэша (Web Cache Poisoning)
Ссылки
- Mailing ListPatchThird Party Advisory
- Mailing ListThird Party Advisory
- PatchThird Party Advisory
- Mailing ListThird Party Advisory
- Mailing ListThird Party Advisory
- Mailing ListThird Party Advisory
Уязвимые конфигурации
Одно из
Одно из
Одно из
Одно из
Одно из
EPSS
5.9 Medium
CVSS3
4 Medium
CVSS2
Дефекты
Связанные уязвимости
The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9.0 and before 3.9.2 are vulnerable to Web Cache Poisoning via urllib.parse.parse_qsl and urllib.parse.parse_qs by using a vector called parameter cloaking. When the attacker can separate query parameters using a semicolon (;), they can cause a difference in the interpretation of the request between the proxy (running with default configuration) and the server. This can result in malicious requests being cached as completely safe ones, as the proxy would usually not see the semicolon as a separator, and therefore would not include it in a cache key of an unkeyed parameter.
The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9.0 and before 3.9.2 are vulnerable to Web Cache Poisoning via urllib.parse.parse_qsl and urllib.parse.parse_qs by using a vector called parameter cloaking. When the attacker can separate query parameters using a semicolon (;), they can cause a difference in the interpretation of the request between the proxy (running with default configuration) and the server. This can result in malicious requests being cached as completely safe ones, as the proxy would usually not see the semicolon as a separator, and therefore would not include it in a cache key of an unkeyed parameter.
The package python/cpython from 0 and before 3.6.13, from 3.7.0 and be ...
EPSS
5.9 Medium
CVSS3
4 Medium
CVSS2