Шаи-Хулуд и компания: Цепь поставок как ахиллесова пята (безопасности).

безопасность по,supply chain attack,shai-hulud,ciso,ci/cd,полиглот-атака

Анализ новых угроз в цепочке поставок ПО: переход от пассивных атак к «активным червям» типа Shai-Hulud. Обсуждаются риски, связанные с языками программирования (Python, Rust) и ИИ, а также угроза полиглот-атак, пробивающих разрозненные системы безопасности. Приводятся рекомендации для CISO по прекращению имплицитного доверия и устранению силосов безопасности.

Современные приложения строятся на основе многочисленных компонентов, каждый из которых, наряду с самими средами разработки, представляет собой потенциальную поверхность для атаки. Независимо от того, разрабатывает ли компания код собственными силами или полагается на сторонних поставщиков, руководителям по информационной безопасности (CISO), экспертам по безопасности и разработчикам следует уделить особое внимание цепочке поставок программного обеспечения (Software Supply Chain).

К числу рисков относятся, например, React2Shell, Shai-Hulud или XZ Utils — все это уязвимости в цепочке поставок ПО, которые начинались с малого, но впоследствии привели к масштабным последствиям. Shai-Hulud выделяется особо, поскольку он знаменует собой конец «пассивной эры» атак на цепочки поставок и начало эры «активных червей». Это изменение сулит разрушительные последствия для конвейеров разработки ПО.

Традиционно атаки на цепочки поставок представляли собой пассивные ловушки. Злоумышленник загружал пакет с опечаткой (Typosquatting), например, «reqeusts» вместо «requests», откидывался на спинку кресла и ждал, пока уставший разработчик совершит ошибку. Радиус поражения был линейным и относительно медленным.

С появлением Shai-Hulud правила игры изменились благодаря внедрению механизма, подобного распространению червя. Попадая на компьютер разработчика, он активно собирает учетные данные (токены NPM, секреты GitHub). Эти похищенные учетные данные используются для автоматической публикации зараженных версий других легитимных пакетов, которыми управляет жертва. В отличие от шпионского ПО, стремящегося оставаться незамеченным, варианты Shai-Hulud содержат «Kill Switch» (предохранитель). Обнаружив, что его блокируют или анализируют, он пытается стереть систему жертвы, полностью уничтожая все следы своего присутствия.

Целью становится уже не только само приложение, но и личность разработчика, а также автоматизированные CI/CD-конвейеры, которые ему по умолчанию доверяют. Что, если следующая разновидность Shai-Hulud затронет другие языки программирования?

Языки программирования как тикающие бомбы замедленного действия

Одним из примеров может служить Python — язык, доминирующий в сфере ИИ и Data Science. Следующая ступень эволюции червей в цепочке поставок, вероятно, будет не только красть ключи AWS, но и использовать растущую популярность ассистентов кодирования на базе ИИ.

Исследователи безопасности уже наблюдают явление «галлюцинационного угона» (Hallucination Hijacking), когда злоумышленники регистрируют пакеты, существование которых ошибочно предсказывают инструменты ИИ. Червь в стиле Shai-Hulud может заразить ноутбук специалиста по данным, просканировать локальный журнал чата LLM на предмет названий частных пакетов и автоматически зарегистрировать вредоносные версии в публичном доступе. Червь в такой экосистеме не просто обрушит веб-сайт, он может незаметно отравить финансовые модели, исказить данные медицинских исследований или внедрить бэкдоры в наборы данных для обучения ИИ компаний — ущерб, который может оставаться необнаруженным годами.

Другие примеры могут затронуть языки Java/JVM или Rust/Go, где последствия также будут катастрофическими.

Полиглот-атака на цепочку поставок

Однако самым пугающим сценарием является слияние этих угроз в рамках полиглот-атаки на цепочку поставок. В настоящее время группы по безопасности работают изолированно друг от друга. AppSec контролирует код, CloudSec — AWS, NetworkSec — периметр. Полиглот-атака разработана для бесшовного прорыва этих изолированных систем.

Вот как это происходит: червь проникает на ноутбук фронтенд-разработчика через низкоуровневую зависимость JavaScript. Он обнаруживает, что у разработчика есть доступ к репозиторию бэкенда на Rust, похищает эти учетные данные и внедряет вредоносные скрипты сборки в конвейер Rust CI. Конвейер Rust развертывает скомпрометированный бинарный файл в кластере Kubernetes.

Атака может начаться в NPM, но закончиться скомпилированным бинарным бэкдором в производственной облачной инфраструктуре. Команда безопасности JavaScript не обнаружит ее, поскольку она немедленно покинула их зону ответственности. Команда облачной безопасности также не заметит угрозы, поскольку она была развернута доверенным CI-конвейером с использованием действительных учетных данных. CISO должны быть готовы к этому и принять соответствующие меры.

Рекомендация к прочтению: Как защитить цепочку поставок вашего программного обеспечения

Рекомендации для CISO

Рекомендации для CISO содержатся в Законе ЕС о киберустойчивости (Cyber Resilience Act, CRA). Он предписывает производителям, импортерам и дистрибьюторам обеспечивать безопасность цифровых продуктов, инвестируя в безопасное проектирование уже на этапе разработки, а также в техническое обслуживание. Требования, сформулированные в нем, должны быть поэтапно реализованы к концу 2027 года и включают обеспечение безопасности сетевого оборудования и программного обеспечения посредством обработки уязвимостей и их раскрытия или уведомления соответствующих органов. Кроме того, три упомянутые стороны должны документировать состав программного обеспечения в SBOM (Software Bill of Materials).

Директива NIS2, вступившая в силу, содержит аналогичные требования для операторов критической инфраструктуры (KRITIS), которые закреплены в Законе о реализации NIS2 (NIS2UmsuCG) и Законе-рамочном документе о KRITIS в части, касающейся продуктов и поставщиков. Обзор, достойный прочтения, представлен на OpenKRITIS.

Для защиты от Shai-Hulud и ему подобных CISO совместно со своими командами должны предпринять следующие шаги:

  • Необходимо прекратить «имплицитное доверие» к идентификационным данным. Проблема в сценариях с Shai-Hulud, описанных в начале, заключалась в том, что системам CI/CD слишком часто слепо доверяют. Поэтому CISO должны обеспечить, чтобы их команды критически оценивали безопасность своих конвейеров. Системы CI/CD не должны автоматически считать действие легитимным только потому, что оно подписано действительным токеном разработчика. Вместо этого они должны уделять приоритетное внимание защите идентификационных данных. Уже было замечено, что злоумышленники целенаправленно крадут учетные данные, такие как токены NPM и секреты GitHub, для автоматической публикации зараженных пакетов. Следовательно, меры по защите этих идентификаторов должны стать наивысшим приоритетом.
  • Необходимо устранить силосы безопасности. Многие аспекты безопасности по-прежнему не объединены под общим управлением. Инструменты и отделы Application Security, Infrastructure Security, Cloud Security, Network Security и многие другие создают многочисленные островки в море стратегии безопасности. Все они должны работать еще теснее и координироваться CISO. Центральным риском является уже описанная полиглот-атака на цепочку поставок, которая бесшовно прорывает эти силосы. Поэтому для CISO важно внедрить межведомственный и межфункциональный мониторинг. Чтобы еще раз подчеркнуть опасность: атака может начаться с JavaScript, продолжиться через скрипты сборки и закончиться бэкдором в облаке. Часто отсутствует интегрированная видимость для отслеживания всего этого. Команда JavaScript больше не видит атаку, как только она покидает их область, в то время как команда облачной безопасности доверяет CI-конвейеру. Следовательно, CISO должны создавать системы, которые отслеживают весь путь от разработки ПО до сборки и до момента исполнения. Решением являются SBOM, в которых документируется все используемое программное обеспечение.
  • Готовность к активным червям и обеспечение защиты инструментов ИИ. Для защиты от рисков, связанных с ИИ, необходимо предотвратить угон и манипулирование инструментами ИИ. Многие разработчики используют эти инструменты для написания своего ПО. Исследователи безопасности уже наблюдают, как злоумышленники используют пакеты, которые заставляют инструменты ИИ «галлюцинировать». Активные черви — это следующая ступень угроз. Поэтому стратегия безопасности должна выходить за рамки защиты от опечаток. Угрозы, подобные Shai-Hulud, распространяются подобно червям и экспоненциально. Ручных процессов проверки пакетов при такой скорости уже недостаточно. Более того, такие черви в цепочке поставок имеют «Kill Switch», который стирает систему жертвы при обнаружении анализа. CISO должны обеспечить сохранность логов за пределами машины разработчика, чтобы сохранить следы атаки для проведения криминалистического расследования. (jm)

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