The OpenNET Project / Index page

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

Атака на немецкие компании через NPM-пакеты

13.05.2022 10:30

Раскрыта новая порция вредоносных NPM-пакетов, созданных для целевых атак на немецкие компании Bertelsmann, Bosch, Stihl и DB Schenker. Для атаки использован метод смешивания зависимостей, манипулирующий пересечением имён зависимостей в публичных и внутренних репозиториях. В имеющихся в публичном доступе приложениях атакующие находят следы обращения ко внутренним NPM-пакетам, загружаемым из корпоративных репозиториев, поле чего размещают пакеты с теми же именами и более новыми номерами версий в публичном репозитории NPM. Если при сборке внутренние библиотеки явно не привязаны в настройках к своему репозиторию, пакетный менеджер npm считает более приоритетным публичный репозиторий и загружает подготовленный атакующим пакет.

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

Общий список участвовавших в атаке пакетов не сообщается, в качестве примера лишь упоминаются пакеты gxm-reference-web-auth-server, ldtzstxwzpntxqn и lznfjbhurpjsqmr, которые были размещены под учётной записью boschnodemodules в репозитории NPM с более новыми номерами версий 0.5.70 и 4.0.49, чем исходные внутренние пакеты. Пока непонятно, как атакующим удалось узнать названия и версии внутренних библиотек, упоминание которых отсутствует в открытых репозиториях. Предполагается, что сведения были получены в результате внутренних утечек информации. Исследователи, осуществляющие мониторинг публикации новых пакетов, сообщили администрации NPM о выявлении вредоносных пакетов спустя 4 часа после их публикации.

Дополнение: Компания Code White заявила, что атака была проведена её сотрудником в рамках согласованной симуляции атаки на инфраструктуру клиентов. В ходе эксперимента были имитированы действия реальных злоумышленников для проверки эффективности работы внедрённых мер защиты.

  1. Главная ссылка к новости (https://jfrog.com/blog/npm-sup...)
  2. OpenNews: Опубликован анализатор, выявивший 200 вредоносных пакетов в NPM и PyPI
  3. OpenNews: Атака на зависимости позволила выполнить код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber и ещё 30 компаний
  4. OpenNews: Атака на GitHub, приведшая к утечке приватных репозиториев и доступу к инфраструктуре NPM
  5. OpenNews: Уязвимость в репозитории NPM, позволяющая добавить сопровождающего без подтверждения
  6. OpenNews: 46% Python-пакетов в репозитории PyPI содержат потенциально небезопасный код
Лицензия: CC BY 3.0
Наводку на новость прислал 1
Короткая ссылка: https://opennet.ru/57177-npm
Ключевые слова: npm, attack
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ИмяХ (?), 10:41, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Как же хорошо, что ещё остались люди, которые перед установкой приложений полностью читают их исходные коды, благодаря чему обеспечивают безопасность.
     
     
  • 2.2, распад олова (?), 10:44, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +22 +/
    ядро линукс тоже читаешь перед установкой?
     
     
  • 3.12, Аноним (12), 11:23, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Ядро линукс стало приложением?
     
     
  • 4.27, Аноним (27), 12:23, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А что это? Чем является 30 мб блоб (3 мб в сжатом виде)? Это такая же компиляция софта как и что угодно ещё. Для сравнения, у хрома около-гигабайтный блоб. Хром -- приложение? Какого размера должен быть блоб, чтобы стать приложением?
     
  • 4.45, Аноним (-), 16:33, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, но вообще пробэкдорить кернел эффективнее чем приложения. Ведь оно все их запросы выполняет.
     
  • 3.26, Аноним (26), 12:18, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Он читает код хромиума перед установкой.
     
     
  • 4.39, Гыгыгы (?), 15:20, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дважды.
     
     
  • 5.54, Аноним (54), 11:22, 15/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Дважды - чтобы во втором чтении внести правки?
     
     
  • 6.55, Аноним (55), 12:24, 15/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А в третьем - отменить!
     
  • 3.41, Аноним (-), 15:40, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я комиты между версиями читаю, как минимум в интересующих меня местах. А так там куча роботов, анализаторов, ревью при мерже несколькими мордами и все такое...
     
     
  • 4.48, Аноним (48), 17:59, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А там тысячи глаз™
     

  • 1.3, Аноним (27), 10:48, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Как можно додуматься отдавать предпочтение внешнему пакету вместо внутреннего? Наверно же не просто так он там лежит. Или у них там нет разделения откуда и что скачивать, лишь бы самое свежее урвать?
     
     
  • 2.8, Аноним (8), 11:12, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так-то можно явно версию пакета указать.
     
  • 2.36, НяшМяш (ok), 13:11, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чтобы так не подставляться, можно делать локальный форк со своим скоупом, например leftpad превращается в @vasyan/leftpad. И в локальном .npmrc можно вписать что-то типа @vasyan:registry=https://npm.pkg.github.com . Работает даже с приватными репозиториями, надо только auth token сгенерировать. Подменить имя гитхаб пользователя будет явно посложнее.
     
  • 2.56, другое Имя (?), 20:21, 15/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как можно додуматься до функции json_last_error_msg() в PHP? Вот я думаю, что это всё какая-то определённая порода кодакОв (программистами их назвать ни в коем случае нельзя) придумывает.
     

  • 1.4, Жироватт (ok), 10:48, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Признание виновными во всем и сразу русских хакеров через: 3... 2... 1... признано!
    Загрузка сообщений от прикормленных "экспердов" по безопасности - 32% завершено
    Создание медийного скандала с привлечением политики - 1% завершено.

    ---
    А теперь следует задать серьёзный вопрос: а что, в NPM оказалось действительно возможным смешение репозиториев и пакет public:AAA и local:AAA теперь одно и то же?

    Нет, требую пояснительную бригаду в студию, какой в этом практический смысл?

     
     
  • 2.5, Аноним (5), 10:58, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >А теперь следует задать серьёзный вопрос: а что, в NPM оказалось действительно возможным смешение репозиториев и пакет public:AAA и local:AAA теперь одно и то же?

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

     
     
  • 3.10, Жироватт (ok), 11:22, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В обслуживаемых специально обученными мейнтейнерами репозиториях, допустим, привязка пакета ААА к репозиторию bb или cc действительно нужна скорее для бэклога - узнать откуда установлен пакет.

    Другое дело, что ЕМНИП во всех виденных мной реализациях есть так или иначе механизм приоритета репозиториев и маскировок. Ну т.е.
    - при обновлении при одинаковом приоритете bb:AAA v0.1 до cc:AAA v0.2 обычно спрашивается, мол, стоит ли обновлять с заменой репов
    - если реп bb стоит по приоритету выше сс, то для обновления нужно специально указывать смену репа
    - если реп bb маскирует пересечение с сс, то пакет cc:ААА не будет виден за bb:AAA хоть там на десять мажорок выше версия.

    Все равно не понимаю, почему у паблик-помойки нету даже такого?
    Ну там хотя бы чтобы внутренние репы маскировали паблик, я не заикаюсь даже про веса приоритетов.

     
  • 2.23, Аноним (23), 12:15, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ты так говоришь как будто твои русские хакеры святые и непогрешимые.
     
     
  • 3.29, Аноним (29), 12:26, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дадада, решили ломануть как раз те компании, которые решили остаться в России.

    А вообще, откуда в России хакеры? Там же только дикие russkies в ushankas с balalaikas.

     
     
  • 4.42, Аноним (-), 15:42, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Даже орк может стрелять, не из лука как эльф так из арбалета.
     

  • 1.6, Аноним (6), 10:59, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Судя по всему, это был пентестер, а подстановка была запланированной проверкой ... большой текст свёрнут, показать
     
     
  • 2.17, Жироватт (ok), 11:30, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Выглядит так, как будто это умышленное прикрытие провального внедрения вредоноса.
    С другой стороны, в современном мире сказанное правильными людьми "Это не карманная кража кошелька, это проверка кражестойкости карманов случайного респондента" пойманными за руку, на ура срабатывает.
     
     
  • 3.19, Аноним (19), 11:40, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Выглядит так, как будто это умышленное прикрытие провального внедрения вредоноса.
    > С другой стороны, в современном мире сказанное правильными людьми "Это не карманная
    > кража кошелька, это проверка кражестойкости карманов случайного респондента" пойманными
    > за руку, на ура срабатывает.

    С другой стороны, опеннет без сравнения опы с пальцем и додумывания "как оно там все на самом деле" после чтения заголока - не опеннет.
    >> In a direct message, Code White CEO David Elze said the company intern created and posted the packages as part of a legitimate penetration-testing exercise explicitly authorized by the companies affected.
    >>

     
     
  • 4.22, Жироватт (ok), 11:54, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > “We do not disclose the names of our clients but specifically, I can confirm that we're legally contracted by the affected companies and were acting on their behalf to simulate these realistic attack scenarios,” Elze said.

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

    Обычно, как замечено выше, в самой новости, такие proof-of помечаются в коде или безобидными заглушками, или специальными комментариями, но никак не обфусцированной малварью.

     

  • 1.7, Аноним (7), 11:01, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >обфусцированный

    Зачем? Снимается же тривиально.

     
  • 1.9, Ты (?), 11:19, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    конец опенсорцу? кто теперь поверит честному слову? это показывает, кто фирмы вынуждены будут либо делать свои версии нужного ПО, что приведёт к фрагментации, либо должны будут оплачивать аудит каждого нового тарбала. и даже в рамках одной организации может найтись шпион, который всроит бэкдор.

     
     
  • 2.11, Ты (?), 11:23, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > конец опенсорцу? кто теперь поверит честному слову? это показывает, кто фирмы вынуждены
    > будут либо делать свои версии нужного ПО, что приведёт к фрагментации,
    > либо должны будут оплачивать аудит каждого нового тарбала. и даже в
    > рамках одной организации может найтись шпион, который всроит бэкдор.

    и лёгким движением ноги, такие рапы как у питона, ноды, го, Dlang могут быть рассадником довольно просто

     
  • 2.14, Жироватт (ok), 11:24, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Скорее приведет к патовой ситуции хакера и солонки.
    Ну и да, расширение круга недоверенных систем с сопутствующими механизмами и накладными расходами
     
  • 2.18, Ты (?), 11:33, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > фирмы вынуждены будут либо делать свои версии нужного ПО

    объявляю 10 лет велосипедостроения! скорее всего всё так теперь и будет

     
  • 2.20, test (??), 11:53, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А в чем проблема ?
    Либо юзай и проверяй сам, либо плати за саппорт и поддержку.
     
  • 2.33, arisu (ok), 12:53, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > конец опенсорцу? кто теперь поверит честному слову?

    ужасно! как же мы теперь проживём без того, чтобы корпорасты использовали наш код? шеф, всё пропало, код убирают, корпорасты убегают!

     
     
  • 3.40, Ты (?), 15:39, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> конец опенсорцу? кто теперь поверит честному слову?
    > ужасно! как же мы теперь проживём без того, чтобы корпорасты использовали наш
    > код? шеф, всё пропало, код убирают, корпорасты убегают!

    а свободным кодерам легче что ли?

     

  • 1.13, Аноним (12), 11:24, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Делайте сами, зачем вам эти пакеты.
     
     
  • 2.16, Жироватт (ok), 11:25, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не все пакеты содержат в себе лефтпады.
     
     
  • 3.25, Аноним (23), 12:16, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Лефтпад не зловред это чисто чтобы ты бы в курсе, для твоего общего развития.  
     
     
  • 4.34, Аноним (34), 12:59, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Контекст дискуссии не зловред это чисто чтобы ты бы в курсе, для твоего общего развития.

    Но для одаренных: не все пакеты в пару строк, как leftpad, чтобы повально отказываться от всего и писать свои велосипеды.

     

  • 1.21, Аноним (21), 11:53, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > ldtzstxwzpntxqn и lznfjbhurpjsqmr

    немецкая народная традиция - первой на клавиатуру кидают кошку, что получилось - так и называют пакет

     
     
  • 2.24, Аноним (26), 12:15, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > немецкая народная традиция

    шифровальная машина Энигма.

    Может, это шифротекст для агентов.

     
  • 2.28, Анонзо (?), 12:23, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кошка постоянно приземляется сначала на клавишу l и делает после этого ещё 14 ударов по другим клавишам.
     
     
  • 3.30, Аноним (26), 12:36, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > клавишу l

    I или l?

     
     
  • 4.32, Аноним (27), 12:39, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    I в 2 раза жирнее l, не говоря уж о том, что на шрифтах с засечками они совсем разные.
     
  • 3.31, Жироватт (ok), 12:39, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты бы поаккуратнее был бы, кошка только вчера получила звание штандартенфюрера.
     

  • 1.35, YetAnotherOnanym (ok), 13:06, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > пакеты с теми же именами и более новыми номерами версий
    > пакетный менеджер npm считает более приоритетным публичный репозиторий и загружает подготовленный атакующим пакет

    Любители обмазываться свеженьким должны страдать

     
     
  • 2.52, Аноним (52), 23:14, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Как и любители засохшего
     

  • 1.37, Аноним (37), 14:33, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Компания Code White заявила, что атака была проведена её сотрудником в рамках согласованной симуляции атаки на инфраструктуру клиентов.

    Верим.

    Npm уже унизили все кто может.

     
     
  • 2.53, Аноним (52), 23:15, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ... а караван всё идёт.
     

  • 1.43, Аноним (43), 15:47, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда же наконец до людей начнет доходить важность умения написать код на стандартной библиотеке без использования сторонних фреймворков и библиотек?
     
     
  • 2.46, Аноним (46), 16:38, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Напомни кто за это заплатит? Если ты мне оплатишь я только за.
     
  • 2.49, b (?), 20:56, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот только пока ты будешь писать все потенциальные клиенты умрут от старости, а их останки начнут выставлять археологи в музеях.
     

  • 1.44, Аноним (44), 15:52, 13/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Компания Code White заявила, что атака была проведена её сотрудником в рамках согласованной симуляции атаки на инфраструктуру клиентов. В ходе эксперимента были имитированы действия реальных злоумышленников для проверки эффективности работы внедрённых мер защиты.

    Что-то это напоминает "Рязанский сахар" 1999 г.

     
     
  • 2.47, Аноним (46), 16:39, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть под одеялом имитирует имитатор.
     
  • 2.50, b (?), 21:01, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это обычная практика аудита безопасности. Нанимается несколько комманд и они пытаются ломать (заранее предупретив узкий круг людей из руководства и ознакомив их с планом) компанию по всем областям - от социальной инженерии, цепочее доставок, сетей, до физического вламывания в серверную/офис. Полет фантазии ограничен только суммой вознаграждения.
     
  • 2.51, Аноним (52), 23:11, 13/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    стопочку новичка этому товарищу
     

  • 1.57, Аноним (57), 10:04, 16/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    дырявее этой поделки только cargo.io от расторастов
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру