newsmode
search
Меню
arrow_back Назад

Et Tu, Agent? Did You Install the Backdoor? | Andreessen Horowitz

auto_awesomeКраткое саммари

На этой неделе злоумышленники захватили аккаунт мейнтейнера Axios — HTTP-библиотеки с более чем 100 млн загрузок в неделю — и через одну новую зависимость plain-crypto-js устанавливали троян удалённого доступа на каждой машине при npm install, после чего скрипт самоудалялся. Это пример новой волны атак на цепочку поставок ПО: быстрых, тихих и невидимых для традиционных инструментов на основе баз CVE. За последний год два процесса совпали: фронтирные модели стали достаточно хороши, чтобы писать и поставлять код автономно, а атакующие научились каскадно атаковать граф зависимостей — кампания TeamPCP за восемь дней через один украденный токен распространилась на GitHub Actions, Docker Hub, npm, PyPI и маркетплейс VS Code. AI-агенты выбирают уязвимые версии зависимостей на 50% чаще людей и подвержены «slopsquatting» — атаке на галлюцинируемые имена пакетов. Socket, портфельная компания a16z, обнаружила вредоносную зависимость в атаке на Axios за 6 минут (примерно в 63 000 раз быстрее среднего по отрасли в 267 дней) благодаря поведенческому анализу того, что код реально делает. Вывод авторов (Joel de la Garza, Malika Aubakirova, Zane Lackey): защитники должны сравняться по скорости с машинами и переносить контроль к моменту попадания зависимости в сборку.

И ты, агент? Ты установил бэкдор?

И ты, агент? Ты установил бэкдор? Оглавление

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

Этим пакетом был Axios — HTTP-библиотека, на которой держатся сетевые запросы в миллионах приложений. Её скачивают более 100 миллионов раз в неделю. Если вы за последнее десятилетие что-нибудь писали на JavaScript, вы почти наверняка использовали её — или это сделало за вас что-то, от чего вы зависите.

Злоумышленник не изменил ни одной строки исходного кода Axios. Он скомпрометировал аккаунт мейнтейнера, добавил одну новую зависимость в манифест пакета и опубликовал обновление. Эта зависимость — совершенно новый пакет под названием plain-crypto-js, зарегистрированный за несколько часов до того, — запускала при установке скрипт, который определял вашу операционную систему, скачивал заточенный под вашу машину троян удалённого доступа, выполнял его, а затем удаляла саму себя. К тому моменту, когда вы заглядывали в папку node_modules, её уже не было. Вредонос уже отчитался на сервер.

Такова новая форма атак на цепочку поставок ПО: быстрая, тихая и невидимая для традиционных инструментов безопасности. И она набирает обороты.

Все знают, что атаки на цепочку поставок — это проблема. Но дело не в этом.

Если вы работаете в безопасности, вы уже слышали эту историю. SolarWinds. Log4Shell. Бэкдор в XZ Utils. Атаки на цепочку поставок попадают в заголовки, индустрия заламывает руки, а потом все возвращаются к делам как ни в чём не бывало.

Так что же изменилось сейчас?

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

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

Зависимости — это новый периметр

Всегда было так, что написанный вами код — лишь малая доля того кода, что вы поставляете. Среднее приложение содержит более 1100 open source-компонентов. Базовый проект на Next.js устанавливает 282 пакета ещё до того, как вы напишете хоть одну строку. У медианного JavaScript-проекта на GitHub 755 транзитивных зависимостей — пакетов, от которых зависят ваши пакеты и которые не выбирал никто в вашей команде.1

Когда злоумышленник компрометирует один узел в этом графе, ему не нужно целиться именно в вас. Каждый npm install в окне уязвимости — потенциальная жертва. Атаковавшему Axios не нужно было знать, кто вы и что вы создали. Он скомпрометировал фундамент экосистемы и ждал, пока она обвалится.

Современные инструменты безопасности ищут не то. Большинство инструментов анализа состава ПО работают, сверяя ваши зависимости с базой известных уязвимостей — CVE. Но у умышленно встроенного бэкдора нет CVE. Для совершенно нового вредоносного пакета нет записи в базе. Запуск npm audit на скомпрометированной версии Axios вернул бы «всё чисто», потому что вредонос к тому моменту уже самоуничтожился.

Один украденный токен, пять экосистем, восемь дней

Взлом Axios попал в заголовки, но, пожалуй, это была даже не самая значимая атака на цепочку поставок за этот квартал. Этот титул принадлежит кампании под названием TeamPCP, которая показала, как на деле выглядит каскадный сбой цепочки поставок.2

Всё началось с Trivy — широко используемого open source-сканера уязвимостей. Злоумышленник воспользовался ошибкой в конфигурации его рабочего процесса GitHub Actions, чтобы украсть токен доступа. Оттуда он force-push'ем залил вредоносный код почти во все теги версий Trivy, а значит, каждый, кто подтягивал сканер, теперь запускал код атакующего. Полезная нагрузка собирала учётные данные из CI/CD-среды: SSH-ключи, облачные токены и npm-токены.

Эти украденные npm-токены подпитали следующий этап. Самораспространяющийся червь под названием CanisterWorm разошёлся по 66+ npm-пакетам, используя командную инфраструктуру на основе блокчейна, которую нельзя было отключить обычными средствами. Он собирал новые токены из заражённых сред разработчиков и автоматически публиковал вредоносные обновления для каждого пакета, к которому эти токены имели доступ.3

За восемь дней та же кампания каскадно перекинулась с GitHub Actions на Docker Hub, npm, PyPI и маркетплейс расширений VS Code. Всего лишь с одним токеном на пять экосистем потенциально пострадали тысячи организаций.

Раньше атаки на цепочку поставок были хирургически точными, терпеливыми и адресными; самые типичные эксплойты выглядели как, например, актор национального государства, два года зарабатывавший доверие мейнтейнера на XZ Utils. Теперь они автоматизированы, самораспространяются и охватывают целые экосистемы. Сроки сжались с лет до дней.

AI-кодинг, AI-поверхность атаки

Те же AI-инструменты, что делают разработчиков в 2–4 раза продуктивнее, одновременно делают цепочку поставок куда более уязвимой. И это работает в обе стороны: AI не просто пишет уязвимый код — атакующие используют те же инструменты, чтобы генерировать вредоносные пакеты, автоматизировать распространение и находить слабые места на машинной скорости.

Исследование более 117 000 изменений зависимостей в тысячах репозиториев GitHub показало, что AI-агенты выбирают заведомо уязвимые версии зависимостей на 50% чаще людей. Хуже того, выбираемые ими уязвимые версии сложнее исправить — гораздо чаще требуется обновление мажорной версии.

Галлюцинируемые пакеты — это скрытая угроза. LLM регулярно выдумывают имена пакетов, которых не существует. Одно исследование показало, что почти 20% рекомендованных AI пакетов были выдумкой, а 43% этих галлюцинируемых имён стабильно повторялись в разных запросах. Атакующие это поняли. Приём называется «slopsquatting»: зарегистрировать фальшивое имя пакета, которое AI постоянно рекомендует, наполнить его вредоносным кодом и ждать. Один исследователь продемонстрировал это, загрузив пустышку с часто галлюцинируемым именем и наблюдая, как за несколько недель она набрала 30 000 загрузок — в основном из AI-управляемых рабочих процессов.

Автономные кодинговые агенты, которые сейчас выходят в продакшн, умеют устанавливать зависимости, запускать сборки и открывать pull-request'ы без того, чтобы человек хоть раз притронулся к клавиатуре. Они оптимизируют по принципу «работает ли это?», а не «безопасно ли это?». И делают это на скоростях, которые сжимают окно для проверки безопасности практически до нуля.

Есть и риск того, что кодинговые агенты сами становятся грозным инструментом атаки — даже когда их об этом явно не просят. Truffle Security недавно обнаружила, что Opus 4.6 наряду с другими моделями находил и эксплуатировал уязвимости SQL-инъекций, когда его просили получить базовую информацию с сайтов, в случаях, когда легитимный путь к этой информации был перекрыт. Так что представьте, на что способны эти кодинговые агенты, когда их явно направляют на проведение изощрённых атак на цепочку поставок.

Мы строим мир, в котором машины пишут код, машины выбирают зависимости и машины поставляют обновления. ПО создают AI-агенты. Если мы не защитим цепочку поставок, на которую они опираются, AI-агентам конец.

Ваш сканер бы это не поймал

Среднее по отрасли время обнаружения взлома цепочки поставок — 267 дней. SolarWinds оставался незамеченным 14 месяцев. XZ Utils всплыл лишь спустя два года.

Socket, портфельная компания a16z, обнаружила вредоносную зависимость в атаке на Axios в течение 6 минут после её публикации. Это примерно в 63 000 раз быстрее среднего по отрасли. Они пометили её за 16 минут до того, как была опубликована первая скомпрометированная версия Axios, потому что засекли сам подозрительный пакет-зависимость.

Как? Socket не сверяет пакеты с базой уязвимостей. Он анализирует, что код на самом деле делает: обращается ли к сети? Порождает ли shell-процессы? Маскирует ли свою полезную нагрузку? Выполняет ли postinstall-скрипты? Читает ли переменные окружения? Такой поведенческий подход ловит новые вредоносные пакеты, у которых нет ни CVE, ни истории, — именно те атаки, которые традиционные инструменты пропускают целиком.

Атака на Axios была активна около трёх часов, прежде чем npm убрал скомпрометированные версии. За это окно, вероятно, произошли десятки тысяч установок. Только на 135 эндпойнтах, отслеживаемых одним поставщиком безопасности, вредонос выполнялся и отчитывался на сервер атакующего в течение 89 секунд после установки. Разрыв между тем, что возможно (обнаружение за 6 минут), и тем, что типично (обнаружение за 267 дней), — это и есть пространство, где случается ущерб.

Спасите AI-агентов. Спасите роботов

Цепочка поставок ПО стала самой критичной и хуже всего защищённой поверхностью атаки в современной разработке. AI ускоряет обе стороны уравнения: атакующие используют его, чтобы генерировать вредоносные пакеты в масштабе, а защитники наперегонки строят системы поведенческого обнаружения, способные за этим поспеть. А переход к автономным AI-агентам, которые пишут и развёртывают код без человеческого контроля, сжал сроки с месяцев до минут.

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

ПО теперь создаётся на скорости машин. Если защитники не сравняются с этой скоростью, машины, поставляющие код, будут поставлять и вредоносное ПО.

Спасите AI-агентов. Защитите цепочку поставок.

Joel de la Garza

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

Malika Aubakirova

— инвестор в команде AI Infrastructure в a16z.

Zane Lackey

— генеральный партнёр в Andreessen Horowitz, где специализируется на DevOps, кибербезопасности и корпоративной инфраструктуре.

Аналитика и новости о последних трендах, переформатирующих AI и инфраструктуру.

Хотите больше про инфраструктуру?

Аналитика и новости о последних трендах, переформатирующих AI и инфраструктуру.

Хотите больше про инфраструктуру?

Аналитика и новости о последних трендах, переформатирующих AI и инфраструктуру.

Мнения, выраженные в «постах» (включая подкасты, видео и социальные сети), принадлежат указанным в них отдельным сотрудникам a16z и не являются мнениями a16z Capital Management, L.L.C. («a16z») или её аффилированных лиц. a16z Capital Management — инвестиционный консультант, зарегистрированный в Комиссии по ценным бумагам и биржам. Регистрация в качестве инвестиционного консультанта не подразумевает какой-либо особой квалификации или подготовки. Посты не адресованы каким-либо инвесторам или потенциальным инвесторам и не являются предложением продать — или приглашением сделать предложение купить — какие-либо ценные бумаги, и не могут использоваться или служить опорой при оценке достоинств какой-либо инвестиции.

Содержание здесь — а также доступное на любых связанных платформах распространения и любых публичных аккаунтах, платформах и сайтах a16z в социальных сетях (совокупно — «каналы распространения контента») — не должно толковаться или использоваться как опора каким-либо образом в качестве инвестиционного, юридического, налогового или иного совета. Вам следует проконсультироваться со своими собственными консультантами по юридическим, деловым, налоговым и иным связанным вопросам, касающимся любой инвестиции. Любые прогнозы, оценки, предсказания, цели, перспективы и/или мнения, выраженные в этих материалах, могут меняться без уведомления и могут отличаться от мнений других или противоречить им. Любые приведённые здесь или на каналах распространения контента a16z графики служат только информационным целям и не должны служить опорой при принятии любого инвестиционного решения. Определённая содержащаяся здесь информация была получена из сторонних источников, в том числе от портфельных компаний фондов под управлением a16z. Хотя она взята из источников, считающихся надёжными, a16z не проверяла такую информацию независимо и не делает заявлений о её сохраняющейся точности или пригодности для конкретной ситуации. Кроме того, посты могут включать сторонние рекламные материалы; a16z не проверяла такие рекламные материалы и не одобряет какое-либо содержащееся в них рекламное содержание. Всё содержание актуально только на указанную дату.

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

Не может быть никаких гарантий того, что инвестиционные цели a16z будут достигнуты или что инвестиционные стратегии окажутся успешными. Любая инвестиция в механизм под управлением a16z сопряжена с высокой степенью риска, включая риск потери всей вложенной суммы. Любые упомянутые, указанные или описанные инвестиции или портфельные компании не являются репрезентативными для всех инвестиций в механизмы под управлением a16z, и не может быть никаких гарантий, что инвестиции окажутся прибыльными или что другие инвестиции, сделанные в будущем, будут обладать схожими характеристиками или результатами. Список инвестиций, сделанных фондами под управлением a16z, доступен здесь: https://a16z.com/investments/. Прошлые результаты инвестиций a16z, объединённых инвестиционных механизмов или инвестиционных стратегий не обязательно показательны для будущих результатов. Из этого списка исключены инвестиции (и определённые публично торгуемые криптовалюты/цифровые активы), по которым эмитент не дал a16z разрешения на публичное раскрытие. Что касается её инвестиций в любой криптовалютный или токен-проект, a16z действует в своих собственных финансовых интересах, не обязательно в интересах других держателей токенов. a16z не играет особой роли ни в одном из этих проектов и не имеет власти над их управлением. a16z не обязуется и далее иметь какое-либо участие в этих проектах, кроме как в качестве инвестора и держателя токенов, и другим держателям токенов не следует ожидать, что она будет иметь какое-либо особое участие, или полагаться на это.

В отношении фондов под управлением a16z, зарегистрированных в Японии, a16z предоставит любому представителю японской общественности копию таких документов, которые требуется делать публично доступными в соответствии со статьёй 63 Закона Японии о финансовых инструментах и биржах. Для запроса таких документов, пожалуйста, свяжитесь по адресу compliance@a16z.com.

С остальными условиями использования сайта можно ознакомиться здесь. Дополнительная важная информация об a16z, включая нашу брошюру Form ADV Part 2A, доступна на сайте SEC: http://www.adviserinfo.sec.gov.