Уязвимость в Python на Linux, позволяющая локальное повышение привилегий при использовании библиотеки "multiprocessing"
Описание
На Linux в Python версии 3.9.x до 3.9.16 и 3.10.x до 3.10.9 присутствует уязвимость, которая позволяет повышать уровень доступа в локальной системе при использовании некорректной конфигурации. В библиотеке multiprocessing
Python, при использовании метода запуска forkserver
на Linux, есть возможность десериализации объектов pickle
от любого пользователя в одном и том же локальном сетевом пространстве имен. Это означает, что злоумышленник может выполнить произвольный код, получая таким образом повышенный уровень доступа для любого процесса, запущенного с помощью forkserver
.
Затронутые версии ПО
- Python 3.9.x до версии 3.9.16
- Python 3.10.x до версии 3.10.9
Тип уязвимости
Локальное повышение уровня доступа
Способы защиты
Установка параметра multiprocessing.util.abstract_sockets_supported
в значение False
является обходным решением.
Дополнительная информация
Метод запуска forkserver
для multiprocessing
не является методом по умолчанию. Эта проблема специфична для Linux, так как только Linux поддерживает сокеты в абстрактном пространстве имен. CPython до версии 3.9 не использует сокеты в абстрактном пространстве имен Linux по умолчанию.
Ссылки
- Release Notes
- Release Notes
- Third Party Advisory
- Third Party Advisory
- Third Party Advisory
- Release Notes
- Release Notes
- Third Party Advisory
- Third Party Advisory
Уязвимые конфигурации
Одно из
Одно из
EPSS
7.8 High
CVSS3
Дефекты
Связанные уязвимости
Python 3.9.x before 3.9.16 and 3.10.x before 3.10.9 on Linux allows local privilege escalation in a non-default configuration. The Python multiprocessing library, when used with the forkserver start method on Linux, allows pickles to be deserialized from any user in the same machine local network namespace, which in many system configurations means any user on the same machine. Pickles can execute arbitrary code. Thus, this allows for local user privilege escalation to the user that any forkserver process is running as. Setting multiprocessing.util.abstract_sockets_supported to False is a workaround. The forkserver start method for multiprocessing is not the default start method. This issue is Linux specific because only Linux supports abstract namespace sockets. CPython before 3.9 does not make use of Linux abstract namespace sockets by default. Support for users manually specifying an abstract namespace socket was added as a bugfix in 3.7.8 and 3.8.3, but users would need to make ...
Python 3.9.x before 3.9.16 and 3.10.x before 3.10.9 on Linux allows local privilege escalation in a non-default configuration. The Python multiprocessing library, when used with the forkserver start method on Linux, allows pickles to be deserialized from any user in the same machine local network namespace, which in many system configurations means any user on the same machine. Pickles can execute arbitrary code. Thus, this allows for local user privilege escalation to the user that any forkserver process is running as. Setting multiprocessing.util.abstract_sockets_supported to False is a workaround. The forkserver start method for multiprocessing is not the default start method. This issue is Linux specific because only Linux supports abstract namespace sockets. CPython before 3.9 does not make use of Linux abstract namespace sockets by default. Support for users manually specifying an abstract namespace socket was added as a bugfix in 3.7.8 and 3.8.3, but users would need to make ...
Python 3.9.x before 3.9.16 and 3.10.x before 3.10.9 on Linux allows lo ...
EPSS
7.8 High
CVSS3