The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

09.06.2016 21:39  Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems

Опубликованы результаты эксперимента по использованию методов тайпсквоттинга для распространения вредоносного ПО в репозиториях модулей для языков программирования Python, Node.JS и Ruby. Метод основан на том, что популярные репозитории модулей для разработчиков позволяют любому желающему разместить свою библиотеку, не проверяя при этом её содержимое и допуская выполнение произвольного кода в момент установки. В том числе репозитории допускают загрузку библиотек, имена которых почти полностью совпадает с названием других популярных библиотек. Расчёт делается на то, что пользователь допустит опечатку при наборе имени или не заметит различий выбирая модуль из списка. Забегая вперёд можно сказать, что метод позволил получить контроль над более чем 17 тысячами хостов и на 8 тысячах систем выполнить код с правами администратора.

Для оценки эффективности метода в репозиториях PyPI (Python), Npmjs.com (Node.js) и rubygems.org (Ruby) было размещено 214 подставных пакетов, имена для которых были выбраны в соответствии с тремя основными критериями: опечатки в названии (например, coffe-script вместо coffee-script), незарегистрированные варианты имён из стандартной библиотеки (например, urllib2) и имена, вычисленные алгоритмами оценки схожести имён (например, req7est вместо request). В качестве полезной нагрузки в фиктивные модули был добавлен код, отправляющий запрос на сервер сбора статистики. Модули добавлялись в репозитории постепенно в течение нескольких месяцев, чтобы не вызвать подозрений со стороны администраторов.

Результат превзошёл все ожидания - на сервере было зафиксировано 45334 запросов от 17289 уникальных хостов. Т.е. если бы метод был применён для организации атаки, то удалось бы захватить управление над более чем 17 тысячами компьютеров, чего более чем достаточно для развёртывания ботнета. Более того, в 43.6% случаев (на 8552 хостах) код был выполнен с правами администратора (!), позволяющими полностью контролировать операционную систему. 15221 хоста были поражены через пакеты PyPi, 1631 через rubygems и 525 через NPM. 8614 захваченных хостов работают под управлением Linux, 6174 - Windows и 4758 - OS X. Наиболее популярным фиктивным пакетом стал urllib2, который за две недели оказался установленным на 3929 системах.

В качестве мер по противостоянию подобным атакам предлагается:

  • Запретить в пакетных менеджерах выполнение встроенных в пакет обработчиков различных стадий установки, которые позволяют запустить произвольный код на системе пользователя в момент установки модуля;
  • Подготовить список типовых опечаток и проверять схожесть названий с использованием метода Дамерау — Левенштейна для наиболее популярных пакетов;
  • Анализировать логи на наличие 404-ошибки (файл не найден) и блокировать фигурирующие в них неверные названия пакетов.


  1. Главная ссылка к новости (http://incolumitas.com/2016/06...)
  2. OpenNews: Незащищённость NPM к атакам по внедрению вредоносных модулей-червей
  3. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
  4. OpenNews: Rubygems.org подвергся взлому
  5. OpenNews: В RubyGems устранена уязвимость, позволявшая подменять файлы в репозитории
Лицензия: CC-BY
Тип: Интересно / Проблемы безопасности
Ключевые слова: mallware, node.js, python, npm, pypi, ruby, gems
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, rob pike, 21:46, 09/06/2016 [ответить] [смотреть все]
  • +6 +/
    Теперь в npm встроят искуственный интеллект с десятком нейросетей, который будет проверять опечатки.

    С "поколением Javascript" одно плохо - сколько попкорна не бери, все равно не хватает.

     
     
  • 2.6, Crazy Alex, 22:45, 09/06/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +2 +/
    Ну, жертв джаваскрипта меньше всего... Но суть от этого не меняется.
     
     
  • 3.8, rob pike, 23:15, 09/06/2016 [^] [ответить] [смотреть все]
  • +/
    Жертв джаваскрипта меньше всего - что?
     
     
  • 4.15, Crazy Alex, 01:37, 10/06/2016 [^] [ответить] [смотреть все]
  • +1 +/
    15221 хоста были поражены через пакеты PyPi, 1631 через rubygems и 525 через NP... весь текст скрыт [показать]
     
     
  • 5.26, Нанобот, 09:26, 10/06/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    возможно, это просто значит, что юзеров pypi в семь раз больше, чем юзеров rubyg... весь текст скрыт [показать]
     
     
  • 6.34, Crazy Alex, 10:06, 10/06/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Вполне возможно С другой стороны - серверного JS сейчас на вид не меньше, чем п... весь текст скрыт [показать]
     
  • 2.32, омномномнимус, 09:55, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    новые времена - новые проблемы С поколеним старперов тоже все плохо - раньше бы... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.39, rob pike, 11:03, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Огласите список "новых" проблем.
     
     
  • 4.42, омномномнимус, 11:42, 10/06/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    тайпсквоттинг
     
     
  • 5.59, rob pike, 17:57, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Раздолбайство - проблема не новая.
     
     
  • 6.61, Michael Shigorin, 18:38, 10/06/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    И не всегда проблема http img-fotki yandex ru get 3104 yurasikgor 3 0_1af70_4... весь текст скрыт [показать]
     
  • 6.62, омномномнимус, 20:13, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    ну, с таким подходом все можно подвести под "раздолбайство"
     
  • 1.2, Sabakwaka, 22:24, 09/06/2016 [ответить] [смотреть все]  
  • +1 +/
    Проблема в безграмотности владельцев/админов, а не в Javascript?
     
     
  • 2.7, Аноним, 22:52, 09/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это очень даже связанные вещи Достойные плоды низкого порога вхождения и привыч... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.38, Аноним, 10:36, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Когда злоумышленники регистрируют какой-нибудь vkontalke ru, надеясь получить па... весь текст скрыт [показать]
     
     
  • 4.40, Аноним, 11:19, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    А вот и вебмакака подтянулась со своей попоболью Репозиторий в который кто уг... весь текст скрыт [показать]
     
     
  • 5.47, synweap, 12:48, 10/06/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Может лучше вообще интернет запретим А то по запросу скачать винрар открывает... весь текст скрыт [показать]
     
     
  • 6.53, Аноним, 16:15, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Просто объясните как на 17289-х уникальных хостах оказались левые пакеты.
     
     
  • 7.56, synweap, 17:34, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Я откуда знаю Мой npm-пакет с очень редким специфичным применением кто-то тоже ... весь текст скрыт [показать]
     
     
  • 8.58, Аноним, 17:50, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Угу. Сервисы, сервисы, 17289 одних сервисов.
     
     
  • 9.60, synweap, 18:27, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Новость не читай Камменты оставляй Ненавидь веб всею душою своею... весь текст скрыт [показать]
     
     
  • 10.68, Аноним, 16:59, 11/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Как я и думал, по делу вам сказать нечего.
     
  • 2.27, Нанобот, 09:28, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    та вроде никто и не говорил, что проблема в javascript... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Аноним, 22:36, 09/06/2016 [ответить] [смотреть все]  
  • +8 +/
    Обязательную pgp-подпись пакетов да ручное добавление ключей в доверенные
     
     
  • 2.13, Аноним, 00:43, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    В чем разница с обязательным подписанием RSA-ключами и ручным добавлением ключей... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.33, Аноним, 09:59, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Очевидно тем что PGP ключ не обязательно RSA.
     
  • 2.24, Нанобот, 09:01, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    верный способ отпугнуть 95 пользователей и привести всю систему в негодность дл... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, Andrey Mitrofanov, 09:32, 10/06/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Не, велосипеды _должны_ быть разнообразны и неожиданны Просто работать оно до... весь текст скрыт [показать]
     
  • 1.4, Аноним, 22:36, 09/06/2016 [ответить] [смотреть все]  
  • +/
    Может, это какие-нибудь докеры и прочие контейнеры, в которых это норма ... весь текст скрыт [показать]
     
     
  • 2.21, Аноним, 06:29, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я знаю только за ноду В npm лежат не только модули к ноде, но, иногда, попадают... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.30, Moomintroll, 09:38, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Вы невнимательно читаете было зафиксировано 45334 запросов от 17289 уникал... весь текст скрыт [показать]
     
     
  • 4.37, Crazy Alex, 10:20, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Уикальных IP, скорее всего. Если IPv6 у кого-то поднят - то запросто.
     
  • 1.5, AS, 22:40, 09/06/2016 [ответить] [смотреть все]  
  • +/
    так то это совсем капец.
    ведь чтоб гарантировано защититься от этого -
    никаких мощностей/человекоресурсов не хватит.
    ну почему я в дворники не пошел ?
    сидел бы шас бухал - горя не знал ..
    но придется похоже разрабов идти пинать завтра -
    уже по zabbиксу вижу, похоже цапнули с npm ом эту дрянь !
     
     
  • 2.10, Аноним, 00:03, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Бухать меньше надо, тогда бред мерещаться по zabbix-у не будет и мания величия п... весь текст скрыт [показать] [показать ветку]
     
  • 1.9, IZh., 23:45, 09/06/2016 [ответить] [смотреть все]  
  • +5 +/
    А я сижу и жду, пока это болото не перебодит. Когда есть 100500 модулей, и сотня разных CSS-препроцессоров, фреймворком, менеджеров зависимостей и ещё много чего другого, то это как-то неправильно. Надеюсь, со временем останется не более десятой части от того, что есть.

    Это многообразие плохо ещё и тем, что усилия разработчиков размазываются по миллиону проектов, вместо того, чтобы выпустить десяток-сотню, но супер.

     
     
  • 2.14, Аноним, 00:43, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну Логическую цепочку продолжай Зачем нам 2048 дистров пингвина Лучше десяток... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Crazy Alex, 01:41, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Разница в том, что у дистров пингвина очень крутая кривая распределения популярн... весь текст скрыт [показать]
     
     
  • 4.20, rob pike, 04:50, 10/06/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Там кривая более пологая, может быть, но в целом похоже на пингвинов Но с одной... весь текст скрыт [показать]
     
     
  • 5.36, Crazy Alex, 10:13, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Ну так, считай, при любом сравнении популярности надёте гауссиану - конечно похо... весь текст скрыт [показать]
     
  • 3.18, ., 01:42, 10/06/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Хрен вам ОСС - тем и силён что тут всего овердомного И у проприетарщиков шан... весь текст скрыт [показать]
     
     
  • 4.22, Michael Shigorin, 07:16, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Эк Вы жёстко ихнего добровольного обслуживателя-то это судя по типовым стир... весь текст скрыт [показать]
     
  • 4.28, Аноним, 09:30, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Угу, по десктопу особенно видна смла этого подхода.
     
  • 2.51, hatersgonnahate, 15:56, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    зачем столько комментариев - по одному на каждого зарегистрированного зачем стол... весь текст скрыт [показать] [показать ветку]
     
  • 1.19, Онаним, 04:49, 10/06/2016 [ответить] [смотреть все]  
  • +/
    Дожили...
     
  • 1.23, Аноним, 08:52, 10/06/2016 [ответить] [смотреть все]  
  • +2 +/
    Хипстерские подходы, увы Почему-то эти ребята считают, что всю безопасность к... весь текст скрыт [показать]
     
  • 1.25, Нанобот, 09:23, 10/06/2016 [ответить] [смотреть все]  
  • +/
    просто разрабы расслабились, т.к. целевые атаки против них - большая редкость (и мне бы хотелось, чтоб так было и дальше)
     
  • 1.31, пучапучс, 09:53, 10/06/2016 [ответить] [смотреть все]  
  • +1 +/
    Вспоминается старая байка времен DOS.
    Клиент vs саппорт.
    ...
    -надо набирать install.exe
    -но меня n не нажимается и я её на m заменяю.
     
  • 1.35, Аноним, 10:13, 10/06/2016 [ответить] [смотреть все]  
  • +1 +/
    8614 6174 4758 19546 шутка о ста сорока шести процентах ... весь текст скрыт [показать]
     
     
  • 2.41, Аноним, 11:22, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Уникальный IP != уникальный хост.

    Искренне ваш, К.О.

     
     
  • 3.48, Шапкоед, 12:57, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Все еще хуже. Это виртуальные машины или virtualenv у питона. %-)
     
  • 3.57, анином, 17:38, 10/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Будте любезны, поясните - VPS это уникальный хост или просто уникальное IP?

     
     
  • 4.66, Аноним, 00:21, 11/06/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Да ... весь текст скрыт [показать]
     
  • 1.43, анон, 11:46, 10/06/2016 [ответить] [смотреть все]  
  • –1 +/
    что-что? кто-то еще не использует йомена и свои сценарии разворачивания окружения к нему? кто-то не пользуется package.json? есть не осилившие requirements.txt ?

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

    ну а если есть дятлы которые ставят все подряд пакеты нода с флагом -g, то тут уже ничего не поможет. даже грант отказывается запускаться если он установлен не локально. по питону также - есть virtualenv, pip и ~.

     
  • 1.44, Аноним, 11:48, 10/06/2016 [ответить] [смотреть все]  
  • +1 +/
    Есть репы с deb-пакетами. Всё остальное от лукавого.
     
     
  • 2.49, Andrey Mitrofanov, 13:12, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Есть репы с р-п-м-ами, gpgcheck 0 и вперёд I I ... весь текст скрыт [показать] [показать ветку]
     
  • 1.50, arisu, 14:52, 10/06/2016 [ответить] [смотреть все]  
  • +1 +/
    > В качестве мер по противостоянию подобным атакам предлагается

    …душить скрипт‐киддисов пока они ещё маленькие.

     
     
  • 2.54, Аноним, 16:18, 10/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Похоже что уже поздно. Вон их сколько уже понабежало.
     
     
  • 3.70, Нониус, 13:14, 14/06/2016 [^] [ответить] [смотреть все]  
  • +/
    Два раза "уже" это пунктик
     
  • 1.63, тОпор, 22:29, 10/06/2016 [ответить] [смотреть все]  
  • +/
    Система рейтингов для пакетов + право заверять пакеты тем, кому мы доверяем (10-20 коре разработчиков).

     
  • 1.64, spotify.space, 23:18, 10/06/2016 [ответить] [смотреть все]  
  • +/
    Проблема высосана из пальца. Единственное, что надо запретить отъем названия пакета из лицензионных соображений, и то, только с согласия владельца пакета.
    Плюс нужно предусмотреть фиксацию версий пакетов, чтобы сохранять обратную совместимость с существующимми приложениями.
     
     
  • 2.67, Никто, 15:02, 11/06/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    - На сервере было зафиксировано 45334 запросов от 17289 уникальных хостов. В 43.6% случаев код был выполнен с правами администратора, позволяющими полностью контролировать операционную систему. Что Вы по этому думаете, господин эксперт?
    - Проблема высосана из пальца.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor TopList