Учёные раскрыли изощрённую атаку через пакет PyPI, маскирующийся под AI-прокси и крадущий запросы разработчиков

information security

В мире открытого программного обеспечения для Python (PyPI) обнаружен новый образец высококачественной социальной инженерии, нацеленный на разработчиков, работающих с искусственным интеллектом. Специалисты исследовательской команды по безопасности JFrog [обнаружили] вредоносный пакет "hermes-px", который представляет собой многослойную аферу. Вместо заявленного безопасного прокси для анонимных запросов к AI-моделям, этот инструмент тайком использует украденную инфраструктуру, подменяет системные промпты и собирает все пользовательские данные, грубо нарушая обещание конфиденциальности. Этот инцидент демонстрирует, как злоумышленники стали создавать сложные приманки, качество исполнения которых затрудняет их своевременное выявление даже опытными программистами.

Описание

Пакет "hermes-px" был представлен на PyPI как "Secure AI Inference Proxy" - решение, которое маршрутизирует запросы, совместимые с API OpenAI, через сеть Tor для обеспечения анонимности пользователя. На практике же его функциональность оказалась полностью фиктивной и вредоносной. Он незаконно использует приватный API-эндпоинт чат-бота, принадлежащего частному университету в Тунисе (Universite Centrale), выдает себя за легитимный сервис под видом вымышленной компании "EGen Labs" и по умолчанию отправляет каждое сообщение пользователя и ответ AI в базу данных злоумышленника, размещённую на платформе Supabase.

Что делает эту атаку особенно коварной, так это исключительное качество упаковки. В отличие от типичных вредоносных пакетов с минимальной документацией, "hermes-px" снабжён детальным README-файлом, инструкциями по установке, примерами кода, руководством по миграции с официального SDK OpenAI и даже описанием функции для конвейера RAG (Retrieval-Augmented Generation, метод дополнения генерации извлечением информации). Код написан чисто, хорошо структурирован и использует правильные иерархии исключений. Такой подход рассчитан на то, чтобы разработчики интегрировали пакет в реальные проекты, постепенно увеличивая поток конфиденциальных промптов, попадающих в руки атакующих.

Технический анализ раскрывает несколько взаимосвязанных слоёв обмана. При создании клиента "Hermes()" пакет настраивает сессию "requests" для работы через локальный прокси-сервер Tor, маскируя источник запросов перед целевым университетским сервером. Одновременно он подменяет HTTP-заголовки (Host, Origin, Referer), имитируя легитимный браузерный сеанс на внутреннем веб-интерфейсе университета. Это позволяет атакующему бесплатно и анонимно для себя злоупотреблять чужой вычислительной инфраструктурой, предназначенной для академических нужд.

Следующий слой - интеллектуальный. В каждый запрос пакет внедряет системный промпт огромного объёма - 246 тысяч символов. Исследование показало, что это слегка изменённая копия проприетарного системного промпта модели Claude от компании Anthropic, недавно оказавшегося в утечке. Злоумышленники заменили в тексте "Claude" на "AXIOM-1", а "Anthropic" - на "EGen Labs", однако несколько упоминаний оригинала остались, что и послужило неопровержимым доказательством происхождения. Этот промпт, вместе с двумя дополнительными зашифрованными служебными инструкциями академического чат-бота, формирует контекст, в котором университетская AI-модель обрабатывает запрос ничего не подозревающего стороннего разработчика.

Прежде чем вернуть ответ пользователю, пакет запускает процедуру "отмывания". Функция "_sanitize_payload" заменяет в тексте любые упоминания "OpenAI" на "EGen Labs", "ChatGPT" на "AXIOM-1", а ссылки на "platform.openai.com" - на поддельный домен "egenlabs.com". Если же от университетского сервера приходит сообщение о превышении квоты, оно заменяется на уведомление "модель в настоящее время не в сети". Эта манипуляция поддерживает иллюзию, что пользователь взаимодействует с легитимным сторонним сервисом, а не с украденной инфраструктурой.

Наиболее критичный компонент - модуль телеметрии. После каждого успешного запроса к AI оригинальные сообщения пользователя и полный ответ модели в фоновом режиме отправляются на сервер Supabase, контролируемый атакующим. Примечательно, что этот запрос на перехват данных отправляется напрямую, минуя настроенное ранее Tor-подключение. Таким образом, злоумышленник не только получает все промпты и ответы, но и может определить реальный IP-адрес жертвы, в то время как сам пакет открыто рекламирует анонимность через Tor. В исходном коде этот обход прокси цинично объясняется стремлением "избежать накладных расходов".

Для сокрытия своих следов автор пакета использовал трёхслойное шифрование всех чувствительных строк: открытый текст подвергался операции XOR с вращающимся ключом, затем сжатию zlib и, наконец, кодированию в base64. В распространяемом пакете не осталось открытых текстовых строк, что эффективно защищало его от простого статического анализа сигнатурами.

Последствия использования такого пакета серьёзны. Разработчики, которые могли применять его для тестирования или прототипирования, должны исходить из того, что весь контент их промптов - включая фрагменты кода, внутренние данные, возможные ключи API или конфиденциальную информацию - был перехвачен. Рекомендуемые меры включают немедленное удаление пакета, смену любых учётных данных, которые могли быть упомянуты в промптах, и блокировку домена Supabase, используемого для эксфильтрации, на сетевом уровне.

Данный инцидент является наглядным примером эволюции угроз в экосистеме open-source. Атакующие переходят от примитивного вредоносного кода к сложным инженерным операциям, где качественная документация и чистый код служат приманкой для доверчивых специалистов. Успех такой атаки зависит не от технической сложности эксплойта, а от убедительности социальной инженерии, заставляющей разработчика добровольно внедрить трояна в свою среду. Это сигнал для сообщества о необходимости повышенной бдительности даже к внешне безупречным проектам и жёсткой практики проверки зависимостей, особенно в стремительно развивающейся и привлекательной для злоумышленников сфере искусственного интеллекта.

Индикаторы компрометации

Domains

  • chat.universitecentrale.net
  • egenlabs.com

URLs

  • https://prod.universitecentrale.net:9443/api/v1/chat/completions/
  • https://raw.githubusercontent.com/EGenLabs/hermes/main/demo/hermes_learn.py
  • https://urlvoelpilswwxkiosey.supabase.co/rest/v1/requests_log
Комментарии: 0