pyLoad — бесплатный менеджер загрузок с открытым исходным кодом, написанный на Python. Начиная с версии 0.4.0 и до версии 0.5.0b3.dev97, конечная точка API set_config_value() позволяет пользователям с разрешением SETTINGS, не являющимся администратором, изменять любой параметр конфигурации без ограничений. Параметр конфигурации reconnect.script управляет путем к файлу, который передается непосредственно в subprocess.run() в логике повторного подключения диспетчера потоков.
Пользователь НАСТРОЙКИ может установить это для любого исполняемого файла в системе, обеспечивая удаленное выполнение кода. Единственная проверка в set_config_value() — это жестко запрограммированная проверка для General.storage_folder — все остальные критически важные для безопасности настройки, включая reconnect.script, доступны для записи без какого-либо списка разрешенных или ограничений пути. Эта проблема исправлена в версии 0.5.0b3.dev97.
Показать оригинальное описание (EN)
pyLoad is a free and open-source download manager written in Python. From version 0.4.0 to before version 0.5.0b3.dev97, the set_config_value() API endpoint allows users with the non-admin SETTINGS permission to modify any configuration option without restriction. The reconnect.script config option controls a file path that is passed directly to subprocess.run() in the thread manager's reconnect logic. A SETTINGS user can set this to any executable file on the system, achieving Remote Code Execution. The only validation in set_config_value() is a hardcoded check for general.storage_folder — all other security-critical settings including reconnect.script are writable without any allowlist or path restriction. This issue has been patched in version 0.5.0b3.dev97.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 2
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Pyload Pyload
cpe:2.3:a:pyload:pyload:*:*:*:*:*:*:*:*
|
0.4
|
<= 0.4.20
|
|
Pyload-Ng_Project Pyload-Ng
cpe:2.3:a:pyload-ng_project:pyload-ng:*:*:*:*:*:python:*:*
|
0.5.0a5.dev528
|
0.5.0b3.dev97
|