github · вредоносное ПО · supply chain · python · llm · галлюцинации · deepseek · telegram-бот18 октября в 11:32 · 4 мин

Алгоритмы фильтрации: как защититься от вредоносных репозиториев и галлюцинаций нейросетей

В мире открытого кода тренды часто становятся инструментом атак. Разработчик Александр Шульгин обнаружил, что автоматические подборки популярных проектов на GitHub могут содержать опасные ловушки. Для противодействия этому он создал два специализированных алгоритма: один выявляет скрытый вредоносный код, второй — отсеивает выдумки генеративных моделей, описывающих проекты. Эти методы демонстрируют, как комбинация лингвистического анализа и проверки метаданных может повысить безопасность цифровой экосистемы.

# Безопасность трендов: от «ловушек» с звездами до проверки фактов у нейросетей

В эпоху доминирования искусственного интеллекта и автоматизации процессов кураторства контента появляются новые векторы угроз. Традиционные методы поиска безопасного кода сталкиваются с эволюцией атак, где злоумышленники используют легитимные платформы, такие как GitHub, для распространения вредоносного ПО. В ответ на эти вызовы разработчик Александр Шульгин внедрил в свой Telegram-бот, агрегирующий трендовые репозитории, ряд алгоритмических фильтров.

Ловушка в одном файле

Основной риск при использовании автоматических подборок проектов заключается в обмороке доверия. Злоумышленники создают репозитории с привлекательными названиями, например, «Microsoft Activation Scripts», которые получают значительное количество звезд за короткое время. В описании (README.md) размещается не код полезного инструмента, а вредоносная команда.

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

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

Разработка двойного фильтра

Для противодействия этим угрозам был создан модуль lure-check. Этот инструмент анализирует репозитории по нескольким независимым признакам. Достаточно наличия одного из них, чтобы проект помечался как потенциально опасный.

Первый признак — наличие замаскированной команды установки. Алгоритм ищет строки, перевёрнутые через специальные команды языка программирования Python (-join...[-1..-iex...), или код, декодируемый из Base64 для немедленного выполнения. Также проверяется наличие скрытого запуска через системные утилиты, такие как mshta или certutil, а также удаление видимых символов в строке команды (например, разбиение iex на i e x).

Второй признак основан на анализе метаданных. Фильтр проверяет возраст аккаунта владельца относительно даты создания репозитория. Если разрыв составляет менее 30 дней, а код в репозитории менее 10 КБ или отсутствует вовсе (содержится только README и LICENSE файл), проект классифицируется как ловушка. Важно отметить, что при сбое связи с сервером GitHub алгоритм не игнорирует ошибку, а помечает проект как «неизвестно», чтобы не пропустить угрозу.

Этот фильтр интегрируется в процесс отбора. Если проект соответствует критериям опасности, он исключается из ленты, на его место подтягивается следующий по рейтингу элемент, и пользователю показывается краткое объяснение причины исключения.

Борьба с галлюцинациями AI

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

Для решения этой задачи разработан инструмент ground-check, основанный на принципе верификации по слову. Алгоритм извлекает все слова с заглавной буквой и числа из трёх и более цифр из первоисточника (описания репозитория на GitHub). Затем проверяет, содержатся ли эти элементы в текстовом пересказе нейросети. Если слово (например, название фреймворка или конкретная версия) или число не находят подтверждения в источнике, описание считается недостоверным и заменяется на оригинал.

Этот метод успешно отсеивает выдуманные технологии. Например, модель могла ошибочно назвать инструмент для тестов аналогом Cypress, хотя в исходном тексте упоминалась только платформа meat.dev. Однако подход имеет ограничения: он не способен обнаруживать выдумки, написанные строчными буквами, или утверждения, основанные на сравнительных характеристиках (например, «вдвое быстрее»), если упомянутый объект присутствует в тексте. Также метод требует предварительного согласования написания названий компаний на разных языках, например, использование китайских иероглифов для локальных брендов.

Техническая реализация и ограничения

Оба инструмента представлены как отдельные репозитории с открытым исходным кодом под лицензией MIT. lure-check написан на Python с использованием только стандартной библиотеки, что упрощает его интеграцию в системы непрерывной интеграции (CI). Он возвращает код возврата 1 в случае обнаружения угрозы, что позволяет автоматически блокировать доступ к опасным проектам.

Ограничения подхода связаны с природой используемых методов. Лингвистические проверки эффективны только для конкретных названий и версий, но не могут анализировать семантический смысл утверждений. Кроме того, вредоносный код, размещенный в репозиториях с легитимной историей аккаунта или без использования текстовых обманов (например, прямые ссылки на архивы), пока остаётся вне зоны досягаемости этих фильтров.

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

Первоисточники

Habr AI ↗
← Вернуться в эфир