JA_NPM

Пример наводнения НПМ: «В кроличьей норе в поисках чая»

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

Эта инфраструктура позволяет нам анализировать в режиме реального времени все пакеты, публикуемые ежедневно. Кроме того, это позволяет нам отслеживать аномальное поведение пользователей.

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

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

Все началось со скачка статистики

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

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

Это побудило нас пересмотреть наш процесс и связанные с ним данные на платформе. К счастью, наша проверка показала, что данные кажутся верными, но это также вызвало некоторое недоумение!

При дальнейшем рассмотрении мы обнаружили, что эти пакеты имеют несколько общих характеристик:

  • Издателями были недавно созданные пользователи, возраст которых не превышал одного-двух месяцев.
  • Пакеты имели, казалось бы, случайные имена, вероятно, сгенерированные с помощью словаря. Мы можем найти имена пакетов со странными именами, например огромный_mite-улыбка, Эрик-Мангут94-Сукивир, экзотическая_рептилия-appteadev or очевидный_tuna-appteadev. Мы включим приложение с некоторыми примерами найденных нами активов.
  • Содержимое этих посылок было очень похоже, а зачастую и одинаково.

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

НПМ

Распутывание сети

Публикационная активность некоторых из этих издателей за последний месяц осуществлялась в соответствии со следующей временной диаграммой:

 

атака npm

Вот полная статистика, связанная с этим событием, которой мы можем поделиться:

проверка npm

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

В конце концов, у нас есть несколько пакетов для анализа:

атака npm 2

Вот ключевые моменты, которые мы можем выделить из анализа:

  • Многие пакеты NPM взаимосвязаны. Некоторые из них упоминаются как зависимости от других.
  • Несмотря на то, что пакеты странные и о их существовании, вероятно, никто не знает, некоторые из них загружаются много раз в неделю. Трудно принять, что обычный пользователь может захотеть загружать такие пакеты, как 0mc03esisd
  • Некоторые имеют связанные репозитории. Иногда владельцами этих репозиториев являются фиктивные аккаунты, подобные тем, что есть на npm.

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

атака npm 2

Это пример одного из связанных репозиториев. Он содержит код некоторых опубликованных пакетов. Также некоторые другие файлы, такие как чай.yaml .

Знакомство с актером(ами)

Трудно определить, является ли это работой одного автора или нескольких соавторов. Однако у нас есть некоторые доказательства, которые сужают происхождение этой деятельности:

  • Язык: Некоторые комментарии в коде написаны на индонезийском языке.
атака npm 3
  • Местоположение: некоторые владельцы связанных репозиториев указывают свое местоположение в Индонезии.
  • Местоположение, которое мы можем определить по метаданным активности на GitHub, также указывает на Индонезию.
НПМ_JA

Пятичасовой чай

Учитывая, что Индонезия была британской колонией, попить чаю здесь вполне подошло бы. Однако в данном случае это совершенно особенный чай.

Вы помните чай.yaml файлы, которые мы видели вначале? На тот момент мы не показывали их контент, но выглядело оно так:

атака npm 4

Эти файлы, по-видимому, связаны с Чайный протокол. Но что именно? Мы достигли https://tea.xyz/blog/250k-grant-for-open-source-developers, что говорит о цели:

Чай встряхивает цифровой мир, решая давнюю проблему недостаточного вознаграждения разработчиков ПО с открытым исходным кодом. Решение этой проблемы является более актуальным, чем когда-либо, поэтому мы решили выделить гранты на сумму 250 тысяч долларов США перед запуском протокола. Этот начальный этап направлен на поддержку разработчиков проектов с открытым исходным кодом, которые оказывают существенное влияние на экосистему программного обеспечения с открытым исходным кодом и имеют рейтинг teaRank более 30, опережая Tea Protocol Incentivized Testnet».

Согласно документам чайного протокола: 

«Чтобы проект был зарегистрирован в чайном протоколе, ему необходим файл tea.yaml, который служит конституцией проекта и определяет количество его участников и количество голосов, необходимых для выполнения определенных действий».

 

Получив доступ к чайной сети, мы попытались найти один из пакетов, репутация которого, как мы подозреваем, раздувается. Мы нашли это:

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

Заключение и заключительные мысли

Хотя в этих пакетах NPM не было обнаружено никаких признаков вредоносного кода и, скорее всего, они не предназначались для того, чтобы кто-либо их использовал, они потенциально могут нарушать некоторые Условия обслуживания (TOS) NPM, GitHub или чайной ассоциации. Однако это выходит за рамки нашей работы (хотя они были уведомлены и действия, которые они сочтут целесообразными, будут предприняты). Неправомерное использование этих платформ каким-то образом повлияет на нас и наши организации.

Ясно одно: любой, казалось бы, безобидный пакет с открытым исходным кодом может содержать поведение, которое трудно понять без полной контекстной информации.

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

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

Если вы дочитали до этого места, надеюсь, вам понравились все тонкости этого любопытного события. Не забудьте потратить несколько минут на изучение того, какой вклад Xygeni может внести в безопасность вашей организации.

Приложение. Перечислите связанные ресурсы, которые нужно включить в окончательную статью.

Более релевантные пользователи NPM в зависимости от количества опубликованных пакетов: вндра, ванзати, artknight404, seblakkuah, микроситер, kellyman17

Небольшой образец связанных с ними пакетов: микроситер, криндекс, арт-дао, себлаккуах, вндрабнб, вндраве, депфиф, депсик, депеит, депнин, допон, kellymanteasproject.

Некоторые из связанных репозиториев GitHub, содержащих файлы tea.yml:

sca-инструменты-программное обеспечение-композиция-анализ-инструменты
Расставьте приоритеты, устраните и защитите риски, связанные с программным обеспечением
7-дневная бесплатная пробная версия
Кредитная карта не требуется.

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni