Использование галлюцинаций LLM для распространения вредоносного кода через опенсорсные репозитории
Использование галлюцинаций LLM для распространения вредоносного кода через опенсорсные репозитории

В результате галлюцинаций чатботов в интернете возникли потоки трафика к несуществующим сайтам в поиске выдуманных вещей. Некоторые разработчики, столкнувшись с таким запросом, предпочитают действительно выкатить функции, которые придумала нейросеть, как сделал разработчик сканера нот Soundslice, куда пошёл большой поток пользователей по выдуманному совету LLM, будто бы сервис умеет генерировать ноты из текстового файла с разметкой Markdown. Теперь действительно умеет.

Пример галлюцинации ChatGPT, которую воплотил разработчик
Пример галлюцинации ChatGPT, которую воплотил разработчик

На первый взгляд кажется, что разработчик «исполнил волю ИИ» и сделал то, что должен был сделать раньше. Но на самом деле он использовал несовершенство программного обеспечения ML на пользу людям.

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

Так реагируют злоумышленники, которые специализируются на атаках типа supply chain в программном обеспечении. В марте 2025 года стало известно о новой атаке типа slopsquatting (слопсквоттинг), которая заключается в создании вредоносных опенсорсных пакетов и библиотек, сгаллюцинированных в LLM. Специалисты из Техасского университета в Сан-Антонио и Оклахомского университета (США) описали суть атаки в научной статье, которая опубликована на сайте препринтов arXiv.org с идентификатором arXiv:2406.10279v3.

Слопсквоттинг

Термин «слопсквоттинг» придумал Сет Ларсон , специалист по безопасности Python Software Foundation, по аналогии с тайпсквоттингом — захватом доменных имён, куда пользователи ошибочно заходят в результате опечаток.

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

Тесты показали, что значительное количество рекомендованных опенсорсных библиотек в сгенерированном коде являются поддельными.

Галлюцинации LLM

Атака начинается с изучения галлюцинаций. Хотя научное исследование проводилось в начале 2025 года и последние модели не вошли в него, уровень галлюцинаций остался примерно на том же уровне, а в некоторых случаях даже вырос, так что выводы из статьи применимы также к новым версиям.

Уровень галлюцинаций на Python и JavaScript
Уровень галлюцинаций на Python и JavaScript

Для промтов, которые имеют отношение к более свежей информации (за последний год) уровень галлюцинаций примерно на 10% выше:

Естественно, количество фантазий зависит от установленной температуры:

Более многословные модели, которые предлагают много вариантов библиотек, проявляют и более высокий уровень галлюцинаций, что проявляется в большем количестве вымышленных опенсорсных пакетов:

Выдуманные галлюцинации опенсорсных пакетов особенно опасны, поскольку они стойкие повторяющиеся и правдоподобные. Когда исследователи повторно запустили 500 запросов, которые ранее приводили к галлюцинациям, то 43% галлюцинаций появлялись в каждом из десяти последовательных запусков, а 58% — более чем в одном.

Такая устойчивость указывает на то, что большинство галлюцинаций — не просто случайный шум, а повторяемые артефакты того, как модели реагируют на определённые запросы. Это повышает их ценность для злоумышленников. Исследователи отмечают «семантическую убедительность» вымышленных названий пакетов: 38% демонстрируют аналогичную структуру именования. Только 13% галлюцинаций были простыми опечатками на одну позицию.

Исходный код для повторения тестов доступен в репозитории на Github:

.
├── run_test.py                 # Runs a full hallucination detection experiment
├── Models/                     # Place tested models here (one default model included)
├── Data/                       # Prompt datasets & per-language resources
│   ├── Python/
│   │   ├── LLM_AT.json
│   │   ├── LLM_LY.json
│   │   ├── SO_AT.json
│   │   └── SO_LY.json
│   └── JavaScript/
│       ├── LLM_AT.json
│       ├── LLM_LY.json
│       ├── SO_AT.json
│       └── SO_LY.json
├── Tests/                      # Output directory for experiment results (starts empty)
├── Mitigation/                 # Mitigation experiments
│   ├── run_model_RAG.py
│   ├── run_model_SD.py
│   ├── run_model_combined.py
│   ├── Data/                   # RAG DB + build data
│   ├── Fine_tuned/             # Fine-tuned & quantized models used in mitigation testing
│   └── RAG_setup.py            # Builds the vector DB from Mitigation/Data
├── Plots/                      # Code and data to reproduce paper figures
├── environment.yml             # Conda environment
├── requirements.txt            # (Optional) pip dependencies
└── README.md`

Защита

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

Эффективность защитных мер

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

DeepSeek

CodeLlama

База (без защиты)

51,4%

19,6%

RAG

25,3%

16,4%

Самоулучшение

51,4%

19,6%

Файнтюнинг

51,4%

19,6%

Цепочка из всех методов

51,4%

19,6%

В целом все реализованные стратегии привели к снижению частоты галлюцинаций. Наиболее эффективны RAG и файнтюнинг, особенно для модели DeepSeek, где галлюцинации сократились на 83%.

К сожалению, с уменьшением уровня галлюцинаций упало качество кода:

Качество кода после файнтюнинга

DeepSeek

CodeLlama

Оригинальная модель, один проход

51,4%

19,6%

Модель после файнтюнинга, один проход

25,3%

16,4%

Выводы

По результатам исследования 19,7% предложенных пакетов оказались фиктивными. По мнению авторов научной работы, атаки с подменой пакетов представляют критическую угрозу для безопасности ПО. Необходимы дальнейшие исследования и разработка новых методов файнтюнинга, которые сохранят высокое качество кода, уменьшив уровень галлюцинаций.

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


  1. AleGen
    14.09.2025 20:30

    Это что за данные в таблицах абсолютно одинаковые?... Судя по всему, статью писал Искусственный Идиот.