Запросы — это HTTP-библиотека. До версии 2.33.0 функция `requests.utils.extract_zipped_paths()` (которая использовалась `HTTPAdapter.cert_verify()` для загрузки пакета CA, часто из структуры zipapp пакета `certifi`) использовала предсказуемое, неуникальное имя файла (базовое имя файла, например, `cacert.pem`) при попытке извлечь файлы во временную системную память. каталог (`/tmp`). Уязвимая логика выполняет проверку, существует ли уже целевой файл в `/tmp`, и повторно использует существующий файл, если он найден, вместо безопасной проверки содержимого файла или обеспечения атомарного уникального извлечения.
Это позволяет локальному злоумышленнику предварительно создать вредоносный файл пакета CA (например, `/tmp/cacert.pem`) до того, как уязвимое приложение (работающее с потенциально более высокими привилегиями) инициализирует библиотеку `requests`. Версия 2.33.0 содержит патч.
Показать оригинальное описание (EN)
Requests is a HTTP library. Prior to version 2.33.0, the `requests.utils.extract_zipped_paths()` utility function uses a predictable filename when extracting files from zip archives into the system temporary directory. If the target file already exists, it is reused without validation. A local attacker with write access to the temp directory could pre-create a malicious file that would be loaded in place of the legitimate one. Standard usage of the Requests library is not affected by this vulnerability. Only applications that call `extract_zipped_paths()` directly are impacted. Starting in version 2.33.0, the library extracts files to a non-deterministic location. If developers are unable to upgrade, they can set `TMPDIR` in their environment to a directory with restricted write access.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Python Requests
cpe:2.3:a:python:requests:*:*:*:*:*:*:*:*
|
— |
2.33.0
|