Выбор редакции
Лента новостей
Свет в океане туманного мрака: Россия мировой моральный ориентир
23.08
В Москве представили российский электроседан
04.08
Пётр Акопов: Запад не знает, зачем ему война с Россией
28.06
Санкции обрекают киевских путчистов на военное поражение
06.05
Геноцид - геополитический инструмент Запада
14.04
Русские войска применяют Starlink Илона Маска: хорошо, но как временное решение
11.02
Указания США на демонтаж остатков украинской государственности
01.10
Неконтролируемый обвал рождаемости в бывшей Украине
26.09
18 Jan 2018, 10:22Наука
Уязвимость в BitTorrent-клиенте Transmission, позволяющая выполнить код
В BitTorrent-клиенте Transmission выявлена уязвимость (CVE-2018-5702), затрагивающая RPC-интерфейс, используемый для организации связи между бэкендом (рабочий процесс) и фронтэндом (интерфейс).
Уязвимость позволяет организовать атаку, которая, если в системе запущен демон Transmission, может привести к выполнению произвольного кода, при открытии на той же системе в браузере сайта атакующего. Исправление доступно в виде патча и обновления для Debian и FreeBSD (пока недоступно для Fedora, SUSE, openSUSE, Ubuntu, RHEL/EPEL).
По умолчанию бэкенд принимает запросы на сетевом порту 9091, привязываясь к интерфейсу localhost (127.0.0.1). Запросы фронтэндов отправляются с использованием формата JSON, а для успешного подключения обязательно заполнение HTTP-заголовка «X-Transmission-Session-Id». Злоумышленник может создать страницу, при открытии которой при помощи вызова XMLHttpRequest() можно отправить произвольный запрос на localhost, но в этом случае невозможно подставить свой заголовок «X-Transmission-Session-Id», так как сработает защита от выхода за пределы области текущего домена (cross-origin).
Для обхода данного ограничения предлагается интересный трюк. Для хоста, с которого предлагается страница для атаки, в DNS настраивается поочерёдная отдача двух IP-адресов: на первый запрос отдаётся реальный IP сервера со страницей, а затем возвращается 127.0.0.1. Время жизни (TTL) для данной DNS-записи выставляется в минимальное значение. При открытии страницы браузер определяет реальный IP сервера атакущего и загружает содержимое страницы. На странице запускается javascript-код, ожидающий истечения TTL и после этого отправляющий при помощи XMLHttpRequest() второй запрос, который теперь определяет хост как 127.0.0.1, что приводит к обращению к внутреннему сетевому интерфейсу компьютера пользователя без ограничений cross-origin, что позволяет передать произвольный HTTP-заголовок.
Для демонстрации атаки подготовлен специальный минималистичный DNS-сервер rbndr, циклично меняющий IP для хоста. Также доступен пример javascript-кода для совершения атаки. Для организации выполнения кода после успешной отправки запроса к бэкенду используется возможность Transmission по привязке выполнения скрипта к загрузке торрента. В частности, можно передать бэкенду команду по включению режима script-torrent-done-enabled и запустить любой скрипт или установить параметр download-dir в /home/user/ и загрузить фиктивный торрент с именем «.bashrc».
Информация об уязвимости и патч для её устранения были переданы разработчикам Transmission ещё 30 ноября, но разработчики никак не отреагировали на проблему, поэтому исследователь решил раскрыть подробности об атаке не дожидаясь истечения 90 дней, чтобы дистрибутивы могли устранить уязвимость независимо от основного проекта. По мнению разработчиков Transmission уязвимость не представляет практическую опасность, так как затрагивает только конфигурации, в которых запускается отдельный демон (например, в случае применения web-фронтэнда) и он настроен на подключение без пароля.
P. S. Сама JAVA это одна большая дыра в системе, а всё её приложения — это дыра в квадрате.