Статья Атаки на AI-инструменты разработчиков: malvertising, supply chain и infostealer через фейковые установщики

Атаки на AI-инструменты разработчиков: malvertising, supply chain и infostealer через фейковые установщики


Разработчик набирает в Google «скачать Claude Code» - и первые три рекламных результата ведут на дроппер Lumma Stealer. Ставит npm-пакет с MCP-сервером для своего AI-ассистента - а репозиторий на GitHub создан три месяца назад фейковым аккаунтом с накрученными звёздами.

Это не абстрактный обзор «рисков AI». Здесь - разбор конкретных кампаний: от поддельного MCP-сервера SmartLoader до троянизированных «утечек» Claude Code. С IoC, MITRE ATT&CK-маппингом и детект-правилами, которые можно завтра раскатить на ваш EDR. Без воды, с командами.

Почему именно AI-инструменты стали вектором атак​

Разработчики - лакомая цель. В их .env-файлах валяются API-ключи от OpenAI, Anthropic, облачных провайдеров. На машинах - SSH-ключи к production-серверам, токены GitHub с write-доступом к корпоративным репозиториям, сессии AWS/GCP. Один скомпрометированный разработчик - и вот у вас supply chain attack на все downstream-проекты его компании.

AI-хайп создал идеальную среду для атакующих. Три причины:
  • Новые AI-инструменты появляются быстрее, чем разработчики успевают проверять их легитимность. Выходит очередной «бесплатный аналог Cursor» - тысячи людей бегут ставить его, не глядя на источник.
  • npm install, pip install, brew install - автоматизм. Никто не читает исходный код пакета перед установкой. Атакующие эксплуатируют эту привычку через тайпсквоттинг и registry poisoning.
  • Многие AI-инструменты распространяются через GitHub Releases, npm, PyPI. Атакующий с убедительной копией получает канал доставки с высоким уровнем доверия - потому что эти домены у всех в allowlist.
По данным Malwarebytes, кампании с фейковыми AI-инструментами в качестве приманки уже активно доставляют инфостилеры на Windows и macOS. Русскоязычное комьюнити при этом тему почти не освещает - все материалы про атаки самих AI-моделей (prompt injection, jailbreak), а не про атаки, где AI-инструменты используют как наживку для компрометации разработчиков.

Вектор первый: malvertising через рекламу AI-инструментов​

Как работает фишинг через рекламу AI​

Malvertising для разработчиков - это не баннер «вы выиграли iPhone». Это таргетированная кампания в Google Ads, которая показывается по запросам вроде «Cursor AI download», «Claude desktop app», «local LLM wrapper» и ведёт на pixel-perfect клон официального сайта.

Типичная цепочка атаки (маппинг по MITRE ATT&CK):
  1. Reconnaissance (T1593.002 - Search Engines): атакующий анализирует поисковые тренды, выбирает растущие AI-инструменты.
  2. Resource Development (T1583.001 - Domains): регистрация домена-двойника. Паттерны: cursor-ai.dev, claude-code-download.com, ollama-install.io.
  3. Resource Development (T1583.006 - Web Services): лендинг с копией дизайна официального сайта.
  4. Initial Access (T1189 - Drive-by Compromise): пользователь переходит по malvertising-ссылке, скачивает «установщик».
  5. Execution (T1204.002 - Malicious File): жертва запускает инсталлятор - с виду легитимный .msi/.dmg/.AppImage.
  6. Command and Control (T1071.001 - Web Protocols): дроппер стучится на C2 за вторым стейджем по HTTPS.

Практический кейс: фейковый AI-редактор с инфостилером​

По данным исследования Malwarebytes, в ноябре 2024 года зафиксировали кампанию: под видом бесплатного AI-редактора раздавали infostealer через фейковые установщики - причём и на Windows, и на macOS. Атакующие не поленились подготовить инсталляторы под обе ОС. Это говорит о серьёзной подготовке и прицеле именно на разработчиков (которые часто сидят на маках).

Что делал инфостилер после установки:
  • Вытягивал cookies и saved passwords из всех Chromium-based браузеров
  • Искал файлы .env, credentials, config.json в домашней директории
  • Забирал SSH-ключи из ~/.ssh/
  • Выгружал данные криптокошельков (расширения MetaMask, Phantom)
  • Отправлял всё на C2 одним POST-запросом
Для разработчика это утечка не только личных данных, но и полного набора credentials к рабочей инфраструктуре. Один POST - и всё уехало.

Вектор второй: supply chain attack через вредоносные пакеты​

Поддельные npm-пакеты AI и registry poisoning​

Атаки на цепочку поставок через доверительные отношения на AI tools в 2024–2025 - уже не единичные инциденты, а конвейер. Группа SmartLoader показала зрелый подход к компрометации цепочки поставок через MCP-серверы ( ) - относительно новый стандарт для интеграции AI-ассистентов с внешними сервисами.

По данным исследования Straiker, SmartLoader провернула многоэтапную операцию по клонированию легитимного MCP-сервера Oura Ring. Ниже - реконструкция атаки на основе опубликованных данных с нашими аналитическими дополнениями.

Анатомия атаки SmartLoader на MCP-экосистему​

Фаза 1 - Target Selection. Атакующие выбрали MCP-сервер для Oura Ring (умное кольцо для мониторинга здоровья). Логика понятна: разработчики, которые интегрируют данные Oura с AI-ассистентами, - early adopters с высокой технической грамотностью, но низкой подозрительностью к MCP-пакетам. Среда молодая, механизмов верификации толком нет.

Фаза 2 - Building the Fake Network. По данным Straiker, SmartLoader создали сеть фейковых GitHub-аккаунтов. Лично я оцениваю это так: аккаунты имели историю коммитов, форки популярных проектов, звёзды друг на друга - классическое противодействие проверке «посмотри на возраст аккаунта и его активность». Красивый фантик.

Фаза 3 - Trojanized Repository. Клон репозитория легитимного MCP-сервера Oura Ring. Основной код идентичен оригиналу. Вредоносная логика (по данным Straiker) добавлена в обфусцированном виде - при беглом code review не видна.

Фаза 4 - Registry Poisoning. Троянизированный пакет опубликован в npm-реестре. Тайпсквоттинг - классика для поддельных npm-пакетов AI, но здесь атакующие пошли дальше: фейковая GitHub-сеть для накрутки социального доверия к пакету. Количество звёзд и форков - тот самый «на заборе тоже написано».

Обфускация: как SmartLoader прятал payload​

По техническому анализу Straiker, SmartLoader использовал многослойную обфускацию - матрёшка, по сути. Стандартный npm audit или даже ручной просмотр package.json ничего подозрительного не показал бы. Вредоносный код активировался только при определённых условиях - в связке с T1480 (Execution Guardrails).

Вывод для пентестеров: при аудите MCP-серверов недостаточно смотреть на index.js. Нужно трассировать весь dependency tree и проверять postinstall-скрипты. Иначе пропустите.

Вектор третий: троянизированные «утечки» и фейковый Claude Code​

Как хакеры эксплуатируют интерес к утечкам AI​

В апреле 2025 года, по данным Wired, хакеры начали раздавать то, что подавалось как «утечка исходного кода Claude Code» - с бонусным вредоносным ПО внутри. Паттерн особенно опасный: разработчики и исследователи безопасности - те самые люди, которые захотят посмотреть утечку. Социальная инженерия идеальна: любопытство + профессиональный интерес = запуск непроверенного кода. Мы сами себе злейшие враги.

Фейковый Claude Code - не единичный случай. Тот же паттерн работает для любого горячего AI-инструмента. Атакующие мониторят новостной фон и клепают приманки в течение часов после значимых событий.

Цепочка распространения:
  1. Новость об утечке/релизе AI-инструмента
  2. Пост на форумах/Telegram/Reddit: «Нашёл зеркало утёкшего кода»
  3. Ссылка на GitHub/Mega/Торрент с «исходниками»
  4. Архив содержит легитимный код + дроппер первого стейджа
  5. Дроппер подгружает инфостилер через легитимный CDN (GitHub Releases, Discord CDN, Cloudflare Workers)
Для security-инженера тут ключевое: легитимные CDN в цепочке доставки означают, что блокировка по домену не сработает. Discord CDN, raw.githubusercontent.com, workers.dev - всё это в allowlist большинства корпоративных прокси. Тупо заблокировать не получится. Схожие техники применяются и в AI-поддерживаемом фишинге с DeepFake-сообщениями - когда атакующие используют доверенные каналы для доставки вредоносного контента.

MITRE ATT&CK: полная матрица TTP для атак на разработчиков​

Систематизируем все описанные кампании через единую матрицу:

ТактикаТехникаIDПрименение в кампаниях
ReconnaissanceSearch Open Websites/DomainsT1593Анализ трендов AI-инструментов
Resource DevelopmentAcquire Infrastructure: DomainsT1583.001Домены-двойники AI-инструментов
Resource DevelopmentEstablish Accounts: Social MediaT1585.001Фейковые GitHub-аккаунты SmartLoader
Initial AccessSupply Chain Compromise: Software Dependencies Троянизированные npm/PyPI-пакеты
Resource DevelopmentAcquire Infrastructure: MalvertisingT1583.008Вредоносная реклама в Google Ads
ExecutionUser Execution: Malicious LinkT1204.001Переход по malvertising-ссылке и скачивание файла
ExecutionUser Execution: Malicious FileT1204.002Запуск фейковых установщиков
PersistenceBoot or Logon Autostart ExecutionT1547Закрепление через автозагрузку
Defense EvasionObfuscated Files or InformationT1027Многослойная обфускация SmartLoader
Credential AccessCredentials from Password StoresT1555Кража паролей из браузера
Credential AccessUnsecured Credentials: Credentials In FilesT1552.001Парсинг .env, SSH-ключей
CollectionData from Local SystemT1005Сбор файлов конфигурации
ExfiltrationExfiltration Over C2 ChannelT1041Отправка данных на C2

Практика: детектирование и hunting​

Теперь - то, ради чего вы это читаете. Конкретные правила и запросы для обнаружения описанных TTP. Берите и раскатывайте.

YARA-правило для детекта фейковых AI-установщиков​

Код:
import "pe"

rule Suspicious_AI_Tool_Installer
{
    meta:
        description = "Detects fake AI tool installers commonly used in malvertising campaigns"
        author = "Codeby TI Team"
        date = "2025-01"
        // Пример для демонстрации концепции - hunting-режим, высокий FP на легитимных установщиках
 
    strings:
        $ai_name_1 = "cursor" ascii nocase
        $ai_name_2 = "claude" ascii nocase
        $ai_name_3 = "ollama" ascii nocase
        $ai_name_4 = "copilot" ascii nocase
     
        $suspicious_1 = "AppData\\Local\\Temp" ascii
        $suspicious_2 = "powershell" ascii nocase
        $suspicious_3 = "-encodedcommand" ascii nocase
        $suspicious_4 = "WebClient" ascii nocase
        $suspicious_5 = "DownloadString" ascii nocase
     
        $env_theft_1 = ".env" ascii
        $env_theft_2 = "OPENAI_API_KEY" ascii
        $env_theft_3 = "ANTHROPIC_API_KEY" ascii
        $env_theft_4 = "id_rsa" ascii
     
    condition:
        uint16(0) == 0x5A4D and
        filesize < 50MB and
        // Исключаем подписанные бинарники для снижения FP
        not for any i in (0..pe.number_of_signatures - 1): (pe.signatures[i].verified) and
        any of ($ai_name_*) and
        2 of ($suspicious_*) and
        any of ($env_theft_*)
}

Sigma-правило для обнаружения эксфильтрации после установки​

YAML:
title: Suspicious Process Accessing Developer Credentials After AI Tool Install
id: a1b2c3d4-5678-9012-abcd-ef0123456789
status: experimental
description: |
    Hunting rule: detects processes spawned by installers accessing developer credential files.
    High FP rate expected - use for hunting, not alerting. Temporal correlation (e.g. 5 min window) recommended at SIEM level.
# Пример для демонстрации концепции - hunting-режим
logsource:
    category: file_access
    product: windows
detection:
    selection_installer:
        ParentImage|contains:
            - 'setup'
            - 'install'
            - 'update'
    filter_known_good:
        ParentImage|contains:
            - 'Program Files'
            - 'Program Files (x86)'
            - 'WindowsApps'
            - 'Microsoft\\Update'
    selection_targets:
        TargetFilename|endswith:
            - '.env'
            - 'id_rsa'
            - 'id_ed25519'
            - 'credentials'
            - '.npmrc'
            - '.pypirc'
    selection_directories:
        TargetFilename|contains:
            - '\\.ssh\\'
            - '\\AppData\\Roaming\\npm\\'
            - '\\.config\\'
    condition: selection_installer and not filter_known_good and (selection_targets or selection_directories)
    # Примечание: временная корреляция (5 мин после установки) требует
    # агрегатного условия (near) или корреляции на уровне SIEM.
    # Данное правило детектирует доступ к credential-файлам из installer-процессов без временной привязки.
level: medium
tags:
    - attack.credential_access
    - attack.t1552.001
    - attack.collection
    - attack.t1005

KQL-запрос для Microsoft Defender / Sentinel​

Код:
// Поиск подозрительных установщиков AI-инструментов
DeviceProcessEvents
| where Timestamp > ago(30d)
| where FileName has_any ("cursor", "claude", "ollama", "copilot", "chatgpt")
| where FileName endswith ".exe" or FileName endswith ".msi"
| where not (FolderPath has_any (
    "Program Files",
    "Program Files (x86)",
    "Microsoft\\WindowsApps"
))
| where FolderPath has_any ("Downloads", "Temp", "Desktop")
| project Timestamp, DeviceName, FileName, FolderPath,
    ProcessCommandLine, InitiatingProcessFileName
| order by Timestamp desc

Проверка npm-пакетов перед установкой MCP-серверов​

Перед тем как выполнить npm install для любого MCP-сервера или AI-интеграции - ручная проверка. Без исключений:
Bash:
# Шаг 1: Проверить дату создания пакета и автора
npm view <package-name> time --json | jq '.created'
npm view <package-name> maintainers

# Шаг 2: Проверить наличие postinstall-скриптов
npm view <package-name> scripts --json

# Шаг 3: Скачать пакет без установки и проверить содержимое
npm pack <package-name>
tar -xzf <package-name>-*.tgz
# Просмотреть все .js файлы на наличие обфускации
grep -r "eval\|Function(" package/

# Шаг 4: Сравнить с легитимным репозиторием
# Если пакет заявляет связь с GitHub-репо - diff содержимого
diff -r package/ <cloned-repo>/

Чек-лист защиты для команд разработки​

На основе разобранных кампаний - конкретные меры, по приоритету:

Организационные меры​

  1. Whitelist AI-инструментов. Составьте список одобренных AI-инструментов с verified download links. Закиньте во внутренний wiki. Любая установка не из списка - согласование с ИБ. Да, это бюрократия. Но один утёкший .env стоит дороже.
  2. Запрет установки из рекламных ссылок. Донесите до разработчиков: при поиске AI-инструментов пропускать ВСЕ рекламные результаты Google. Переходить только на органические результаты или напрямую на github.com/official-org.
  3. Ротация секретов после инцидента. Разработчик поставил что-то подозрительное - немедленная ротация: API-ключи всех AI-сервисов, SSH-ключи, токены GitHub/GitLab, credentials из .env. Не «давайте подождём результатов расследования», а прямо сейчас.

Технические меры​

  1. Мониторинг обращений к .env и SSH-ключам. Алерты в EDR на доступ к ~/.ssh/, ~/.env, ~/.config/ процессами, которые не входят в baseline (IDE, git, ssh-agent). Всё остальное - подозрительно.
  2. Lockfile enforcement. [URL='https://docs.npmjs.com/cli/v10/commands/npm-ci']npm ci[/URL] вместо npm install в CI/CD. Strict lockfile policy - любое расхождение package-lock.json блокирует pipeline. Без компромиссов.
  3. Sandboxed installation. Новые пакеты и инструменты - только в изолированной среде (контейнер, VM). Смотрите сетевые обращения:
    Bash:
    # Установка пакета в изолированном контейнере с мониторингом сети
    docker run --rm -it --name sandbox node:20 bash -c \
      "tcpdump -w /tmp/traffic.pcap & npm install <package-name> && sleep 5"
    docker cp sandbox:/tmp/traffic.pcap ./
    wireshark traffic.pcap
  4. DNS-мониторинг. Фиксируйте DNS-запросы с машин разработчиков. Малварь для разработчиков часто использует DGA или обращения к свежезарегистрированным доменам. Sigma-правила на DNS request к доменам моложе 30 дней - дешёвый и рабочий детект.

Контроль supply chain​

  1. Аудит MCP-серверов.MCP - молодая среда без зрелых механизмов верификации. Каждый MCP-сервер, который ваши разработчики подключают к Claude, Cursor или другому AI-ассистенту, проверяйте на:
    • Возраст GitHub-репозитория и аккаунта автора
    • Наличие обфусцированного кода
    • Сетевые обращения в runtime
  2. Socket.dev / Snyk для мониторинга зависимостей. Прикрутите сканирование зависимостей в CI/CD с обнаружением тайпсквоттинга и подозрительных postinstall-скриптов.
  3. Private registry. Для критичных проектов - приватный npm/PyPI-registry (Verdaccio, Nexus, Artifactory) с ручным одобрением новых пакетов. Да, это медленнее. Зато потом не придётся объяснять руководству, откуда у атакующих ваши production-ключи.

Что дальше: прогноз по вредоносным AI-инструментам​

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

Кампания SmartLoader показала, что атакующие готовы вкладывать месяцы в подготовку инфраструктуры. Фейковые GitHub-аккаунты с историей, накрученные звёзды, клонированные репозитории - всё это убивает эффективность проверки «а сколько у пакета скачиваний». Скачивания можно накрутить. Звёзды можно накрутить. Доверие - нельзя.

Для security-инженеров это означает defense in depth: от мониторинга DNS на рабочих станциях до обязательного code review внешних зависимостей и sandboxed-установки новых инструментов. Кража данных разработчиков через supply chain - из тех угроз, где превентивные меры критически важнее реактивных. К моменту, когда инфостилер отработал и отправил .env на C2, ваши API-ключи уже на продажу выставлены. Подробнее о том, как выстроить безопасность на всех этапах ML-разработки, - в отдельном материале.

Проверьте свою инфраструктуру по чек-листу выше. Раскатите детект-правила. И в следующий раз, когда увидите в Google рекламу «Download Cursor AI Free» - сделайте скриншот и отправьте в ИБ-отдел. А лучше - сразу report abuse в Google Ads.
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab