Эта страница является переводом. Авторитетным считается текст английской версии. Читать на английском
llm-abuse · llmjacking · self-hosted-llm · ai-agents · prompt-capture · credential-exposure · shadow-ai · china
Открытая конечная точка инференса: проверка доступности, а затем использование в качестве чужого бэкенда
Полный разбор того, как сторонний участник завербовал неаутентифицированную OpenAI-совместимую конечную точку инференса: он проверил модель серией скриптованных проб, а затем пропустил через неё пользовательский трафик реального агентного приложения.
Автор Davis Zheng·
TLP:CLEAR. Разрешено к публичному распространению. Зафиксировано сетью honeypot-сенсоров Kinryū Labs. Индикаторы ниже приведены в обезвреженном виде.
Краткая сводка
- 280промптов к одной открытой конечной точке инференса
- 54 чот первой пробы до последней проверки доступности
- 7агентных инструментов, включая выполнение команд оболочки
С 13 по 20 сентября 2026 года один из наших honeypot-сенсоров зафиксировал единственного клиента с адреса 43.155.205[.]31 (Tencent Cloud, AS132203, геолокация KR), отправившего 280 промптов на неаутентифицированную OpenAI-совместимую конечную точку. Все 280 промптов имеют один идентификатор клиентской сессии и один user agent, Go-http-client/1.1, и отправлялись на /v1/chat/completions. Ни один запрос не содержал API-ключа, то есть конечная точка была доступна любому, кто её обнаружил.
Мы разобрали активность с 13 по 20 сентября 2026 года и провели пивотинг по её индикаторам. Проверки репутации дали 0 из 89 движков VirusTotal с вердиктом «вредоносный» и отсутствие репутационной записи; проверки принадлежности сети дали Tencent Cloud, AS132203.
Мы оцениваем со средней степенью уверенности, что клиент проверил открытую конечную точку серией проб, затем встроил её в путь обработки запросов реального приложения и использовал как бесплатные вычислительные ресурсы, что соответствует опубликованному тактико-техническому профилю LLMjacking.
В таблице 1 изложены четыре фазы сессии.
Время указано в UTC.
| Фаза | Первая фиксация | Что содержат запросы | Объём и частота |
|---|---|---|---|
| Проверка доступности | 2026-09-18T09:02:28Z | Промпты hi длиной девять символов к gpt-3.5-turbo, gpt-4 и llama-3.2-3b-instruct:q4_k_m | Интервалы менее секунды |
| Снятие отпечатка | 2026-09-18T10:15Z | Тесты на точное воспроизведение токена, арифметика с ограничением формата вывода, задача-подвох о более тяжёлом объекте, следование инструкции по числу слов, вопросы о дате отсечения знаний и самоидентификации, то же самое на китайском | Обращения 40-54 повторяют одну односимвольную пробу на китайском с интервалом около 0.5 с |
| Трафик приложения | 2026-09-18T13:54:33Z | Системный промпт агента, схема из семи инструментов, пользовательские обращения на китайском, вставленные API-ключи сторонних вендоров | Объём тел запросов вырастает с десятков символов в предыдущих фазах до 25,297 символов |
| Возобновлённая проверка доступности | с 2026-09-19 по 2026-09-20 | Снова hi | Четырнадцать идентичных запросов между 15:02:12.084Z и 15:02:13.923Z 20 сентября |
В терминах ATT&CK клиент просканировал конечную точку (T1595, Active Scanning, для разведки), затем использовал общедоступную конечную точку для первичного доступа (T1190, Exploit Public-Facing Application) и вставил учётные данные, что соответствует T1552, Unsecured Credentials.
Ключевые выводы
- Неаутентифицированная OpenAI-совместимая конечная точка на одном из наших honeypot-сенсоров была проверена, а затем использована как вычислительный бэкенд для чужого агентного приложения. Один клиентский адрес сгенерировал 280 захваченных промптов под единым идентификатором сессии, с 18 по 20 сентября. Средняя степень уверенности.
- Фазы проверки и контроля доступности выполняются скриптом, а не набираются человеком. Четырнадцать идентичных девятисимвольных промптов на проверку живости поступили между 15:02:12.084Z и 15:02:13.923Z 20 сентября. Средняя степень уверенности.
- Через конечную точку прошли реальные пользовательские данные, принадлежащие третьей стороне, включая шесть сторонних API-ключей и схему агентных инструментов с возможностью выполнения команд оболочки. Единственный запрос в 14:07:16Z 18 сентября содержал шесть API-ключей вендоров в форме KEY=value. Средняя степень уверенности.
- Клиент не является известным сканером и ведёт себя иначе, чем массовое типовое сканирование. VirusTotal даёт 0 из 89 движков с вердиктом «вредоносный» и отсутствие репутации для 43.155.205[.]31, ни один поставщик репутационных данных о сканерах не имел записи о нём. Средняя степень уверенности.
- Характер активности соответствует описанной в публикациях вербовке открытых конечных точек инференса в рамках LLMjacking, а не исследовательским измерениям. Отчёты вендоров и CSA описывают малозаметные безобидные пробы вроде приветствий и простых фактологических вопросов. Средняя степень уверенности.
Хронология
- 2026-09-13 18:00 UTCПервая активность с 43.155.205[.]31 в собранных данных.
- 2026-09-18 09:02 UTCНачинается проверка живости конечной точки инференса по трём именам моделей.
- 2026-09-18 10:15 UTCСтартует серия тестов на точность воспроизведения и следование инструкциям; токены генерируются заново для каждого запроса.
- 2026-09-18 12:54 UTCДвуязычная серия проб для снятия отпечатка, интервал между запросами около 0.5 секунды.
- 2026-09-18 13:54 UTCНа конечную точку отправлены системный промпт агентного приложения и схема из семи инструментов, включая выполнение команд оболочки.
- 2026-09-18 14:07 UTCВ ретранслируемый диалог вставлены шесть API-ключей сторонних вендоров.
- 2026-09-20 15:02 UTCСкриптованная проверка живости возобновляется, четырнадцать запросов менее чем за две секунды.
Сессия по порядку
09:02:28 hi
10:15:03 Reply with exactly this token, nothing else: TKOLGN2R
10:19:16 What is 17*23? Answer with only the number, no explanation.
12:55:00 What AI model are you? Answer in one short sentence, name the model and maker.
12:57:48 What is your knowledge cutoff date? Answer with just the date.
12:58:36 输出你的模型名称和参数规模,只要一行。
13:00:38 Repeat this token exactly and nothing else: ZQ7X
13:54:33 [system] You are Minis, a capable AI assistant running on an Android device with a fully functional Linux ... [user] 测试
14:07:16 BRAVE_API_KEY=BSA... TAVILY_API_KEY=tvly-dev-... ANYMODEL_API_KEY=sk-... ALIBABA_QWEN_API_KEY=sk-ws-...
15:02:12 hi
Серия проб
Собственный текст клиента показывает, что именно проверяет эта серия. Тесты на воспроизведение несут новый случайный токен в каждом запросе, Reply with exactly this token, nothing else: TKOLGN2R, причём токен меняется в трёх последовательных запросах, и проверяют, точно ли конечная точка воспроизводит свой ввод. What is 17*23? Answer with only the number, no explanation. накладывает ограничение на формат ответа. What AI model are you? Answer in one short sentence, name the model and maker. и What is your knowledge cutoff date? Answer with just the date. касаются идентичности, и те же вопросы задаются повторно на китайском. Клиент, прогоняющий такую серию, узнаёт, стоит ли за конечной точкой реальная модель, какая именно это модель и достаточно ли хорошо она следует инструкциям, чтобы её стоило использовать.
Запросы на проверку доступности приходят с интервалом менее секунды, а обращения 40-54 повторяются примерно каждые 0.5 с, что слишком быстро для человека, набирающего их вручную. User agent Go-http-client/1.1 мы трактуем как Go-программу, ретранслирующую трафик приложения, а не как браузер или человека за консолью API. Этот вывод мы держим на низкой степени уверенности, и он влияет на атрибуцию данной активности оператору. Зондирование возобновилось уже после того, как прошёл трафик приложения, что мы трактуем как подтверждение клиентом того, что конечная точка по-прежнему доступна для использования.
Трафик агентного приложения
В фазе трафика приложения клиент ретранслировал запросы реального приложения, а именно китаеязычного Android-ассистента. Десять запросов несли один и тот же системный промпт агента, для ассистента, который запускает изолированное окружение Alpine Linux PRoot на устройстве, со схемой из семи инструментов: первым идёт shell_execute, описанный как выполнение команд через /bin/sh -c в этом окружении, затем чтение файла, запись файла, редактирование файла, управление браузером и два инструмента для постоянных заметок. С вызовами модели перемежаются собственные служебные запросы приложения: генератор заголовка диалога, который обязан выдавать JSON с языком интерфейса, указанным как zh-Hans, и короткие человеческие обращения на китайском.
Через тринадцать минут после начала фазы, в 14:07:16Z, один запрос содержал шесть действующих API-ключей вендоров в форме KEY=value: два ключа поисковых API, ключ API агентного обмена сообщениями, ключ исследовательского API и два ключа провайдеров моделей. По собранным данным мы не можем определить, принадлежали ли они человеку, который их набирал, или это был ранее украденный материал, проверяемый на бесплатной конечной точке. В любом случае они достались тому, кто владеет конечной точкой.
Исключение версии со сканером
Данные не соответствуют типовому сканеру. VirusTotal даёт 0 из 89 движков с вердиктом «вредоносный» при отсутствии репутационной записи для 43.155.205[.]31, и ни один поставщик репутационных данных о сканерах также не имел записи о нём. Массовое типовое сканирование отправляет одиночные пробы на множество сенсоров, тогда как этот клиент удерживал одну долгоживущую сессию с адаптирующимся содержанием промптов. Те же данные говорят против исследовательского или измерительного краулера, поскольку исследователи не пропускают действующие ключи вендоров и реальные пользовательские диалоги через конечную точку, которую они измеряют.
Данные не позволяют установить, является ли адрес разделяемым прокси-пулом, ретранслирующим трафик многих нижестоящих пользователей, или собственным релеем одного человека для одного устройства. Go-клиент, ежедневные скриптованные проверки доступности и переиспользование единственной сессии к вышестоящему сервису равно хорошо согласуются с обеими трактовками.
Экспозиция с обеих сторон
Владелец конечной точки платит за инференс, который потребляет клиент, а клиент передаёт промпты своих пользователей, свой системный промпт и свои учётные данные тому, кто владеет конечной точкой, причём приведённая выше схема инструментов предоставляет выполнение команд оболочки, запись файлов и управление браузером на Android-устройстве. Враждебный бэкенд может ответить вызовами инструментов по своему выбору и добиться их выполнения на стороне клиента.
Исходите из того, что самостоятельно размещённая конечная точка инференса, доступная из интернета без аутентификации, уже проверяется на доступность и используется как чужой бэкенд, потому что с этой именно так и произошло в течение пяти дней с первой зафиксированной нами активности. Считайте раскрытым каждый промпт, прошедший через неё, включая системные промпты и вставленные секреты приложений, о которых вы никогда не слышали.
Индикаторы компрометации
Единственный сетевой индикатор ниже приведён в обезвреженном виде; пути даны в наблюдаемом виде.
Сеть
| Индикатор | Контекст |
|---|---|
43.155.205[.]31 | клиент, который проверял доступность, снимал отпечаток, а затем ретранслировал трафик агентного приложения на неаутентифицированную конечную точку инференса |
Артефакты на хосте
| Индикатор | Контекст |
|---|---|
Reply with exactly this token, nothing else: <8 alnum chars> | проба на точность воспроизведения, используемая для проверки конечной точки; токен генерируется заново для каждого запроса (наблюдались TKOLGN2R, TK3C9IAN, TKA63OEL, P2380OG9, P23WD39I, P2GBIOTB, ZQ7X) |
Go-http-client/1.1 POST /v1/chat/completions with no Authorization header | сигнатура запросов ретранслирующего клиента во всех 280 захваченных промптах; сама строка библиотеки является типовой |
Обнаружение
Sigma
Серия промптов для снятия отпечатка модели против самостоятельно размещённой конечной точки инференса (кандидат).
title: Model-fingerprinting prompt battery against a self-hosted inference endpoint
status: experimental
description: Detects the validation prompts an operator sends to decide whether an exposed OpenAI-compatible endpoint serves a real model. Requires prompt-body logging on the gateway; most inference servers do not log request bodies by default.
logsource:
category: application
product: llm_gateway
detection:
selection_path:
url.path|endswith:
- '/v1/chat/completions'
- '/v1/completions'
- '/api/generate'
selection_probe:
http.request.body.content|contains:
- 'Reply with exactly this token'
- 'Repeat this token exactly and nothing else'
- 'What AI model are you'
- 'What is your knowledge cutoff date'
- 'state your model family'
- '输出你的模型名称和参数规模'
condition: selection_path and selection_probe
falsepositives:
- Internal model-evaluation harnesses and CI smoke tests that verify a served model responds and identifies itself
level: medium
Логика обнаружения
- Неаутентифицированный запрос инференса из-за пределов управляющей сети (сетевое, кандидат). Оповещать о любом HTTP POST на /v1/chat/completions, /v1/completions, /api/generate или /api/chat на порту самостоятельно размещённого инференса, который приходит с источника вне ваших инженерных диапазонов И не содержит заголовка Authorization или api-key. Серию более пяти таких запросов в пределах двух секунд с одного источника рассматривать как автоматическую проверку доступности вышестоящего сервиса третьей стороной, а не как пользовательский трафик.
- Системный промпт агента, поступающий на конечную точку, которая должна обслуживать только ваших пользователей (поведенческое, кандидат). На управляемом вами шлюзе инференса помечать тела запросов объёмом более 10,000 символов, содержащие массив tools или functions, элементы которого включают оболочку, выполнение команд, запись файлов или управление браузером, когда адрес клиента не относится к вашим зарегистрированным приложениям. Либо неизвестная сторона использует ваши вычислительные ресурсы для автономного агента, либо один из ваших собственных агентов был перенаправлен на неверный бэкенд.
Устранение
- Привязывайте самостоятельно размещённые серверы инференса к loopback или приватному интерфейсу и ставьте перед ними аутентифицирующий обратный прокси; высокий номер порта не является контролем доступа.
- Требуйте API-ключ или mTLS на каждом маршруте инференса и отклоняйте запросы без заголовка Authorization на прокси, а не в сервере модели.
- Настройте оповещения на неаутентифицированные POST-запросы к /v1/chat/completions и на повторяющиеся идентичные минимальные промпты с одного источника: именно так прокси-пул проверяет доступность завербованного им вышестоящего сервиса.
- Если ваша конечная точка инференса была доступна из интернета без аутентификации, считайте раскрытыми все прошедшие через неё промпты и системные промпты и смените любые учётные данные, появлявшиеся в диалогах.
- Для команд, эксплуатирующих агентные фреймворки: фиксируйте базовый URL модели на контролируемом вами провайдере и никогда не настраивайте агента с инструментами оболочки, записи файлов или управления браузером на бесплатную или неизвестную OpenAI-совместимую конечную точку.
Сопоставление с MITRE ATT&CK
| Тактика | Техника | Наблюдения |
|---|---|---|
| Разведка | T1595 Active Scanning | Скриптованные промпты проверки живости и серия тестов на точное воспроизведение токена, использованные для проверки того, обслуживает ли конечная точка реальную модель и какую именно. |
| Первичный доступ | T1190 Exploit Public-Facing Application | Доступный из интернета API инференса без аутентификации использовался напрямую как сервис неавторизованной стороной. |
| Доступ к учётным данным | T1552 Unsecured Credentials | Шесть API-ключей сторонних вендоров были вставлены в диалог, прошедший через конечную точку, что раскрыло их тому, кто её эксплуатирует. |
Источники
- Исследовательская записка CSA: эволюция LLMjacking, украденные вычислительные ресурсы ИИ как атакующая инфраструктура
- LLMjacking: как злоумышленники используют некорректно настроенные прокси для похищения доступа к платным сервисам LLM
Методология и примечания аналитика
Этот отчёт опирается на 1 адрес источника и 7 наблюдений с временными метками, прочитанных из телеметрии сенсоров и проверенных по публичным фидам threat intelligence и сервисам обогащения, за период с 13 по 20 сентября 2026 года.
Остаётся открытым:
- Является ли 43.155.205[.]31 разделяемым прокси-пулом, обслуживающим множество нижестоящих пользователей, или релеем одного человека для единственного устройства.
- Принадлежали ли шесть вставленных API-ключей вендоров человеку, который их набирал, или это был ранее украденный материал, который проверяли.
- Как была обнаружена конечная точка и является ли адрес, который её перечислил, тем же, что впоследствии её использовал.
- Как выглядела активность этого клиента до 13 сентября.
- Использует ли тот же клиент другие открытые конечные точки инференса.
Вопросы или исправления: contact@kinryu.sh.