
CVE 2022-45299
#Затронутая библиотека :
webbrowser.rs до версии 0.8.3 https://github.com/amodm/webbrowser-rs
#Резюме:
Библиотека не проверяет, что переданные данные действительно являются URL-адресом. Поэтому злоумышленник, контролирующий нефильтрованный URL, переданный в webbrowser::open(URL), может указать локальный путь к файлу, который будет открыт в стандартном проводнике, или передать один аргумент базовой команде open для выполнения произвольных зарегистрированных системных команд.
#Подробности:
webbrowser::open внутренне вызывает shellExecuteW, передавая URL в качестве аргумента для open в Windows. В Windows злоумышленник контролирует аргумент lpFile для shellExecuteW, что может позволить открывать произвольные локальные файлы. Если злоумышленнику удастся передать URL, который на самом деле является ключом командной строки для open, он может запускать произвольные команды (или делать всё, что open позволяет с одним аргументом). Например, webbrowser::open(".") откроет Finder в текущей рабочей директории. Также можно выполнять Python-скрипты, просто указав путь к скрипту, и мне это удалось с любым другим языком, компилируемым или скриптовым. Мне не удалось воспроизвести проблему на linux, но локальные файлы, такие как /etc/passwd, могут быть загружены простым указанием пути к файлу.
#Уязвимый код:

#POC:
