Esta página es una traducción. La versión en inglés es el texto de referencia. Leer en inglés

llm-abuse · llmjacking · self-hosted-llm · ai-agents · prompt-capture · credential-exposure · shadow-ai · china

Un endpoint de inferencia expuesto, sometido a comprobaciones de disponibilidad y luego usado como backend de otra persona

Este es el reclutamiento de principio a fin de un endpoint de inferencia compatible con OpenAI y sin autenticación por parte de un tercero, que validó el modelo con una batería de sondeos automatizada y después canalizó a través de él el tráfico de usuarios de una aplicación de agente real.

Por Davis Zheng·

TLP:CLEAR. Autorizado para divulgación pública. Capturado por la red de sensores honeypot de Kinryū Labs. Los indicadores que figuran a continuación están desactivados.

Resumen ejecutivo

  • 280prompts a un único endpoint de inferencia abierto
  • 54 hdesde el primer sondeo hasta la última comprobación de disponibilidad
  • 7herramientas de agente ofrecidas, incluida la ejecución de shell

Entre el 13 y el 20 de septiembre de 2026, uno de nuestros honeypots registró un único cliente en 43.155.205[.]31 (Tencent Cloud, AS132203, geolocalizado en KR) que envió 280 prompts a un endpoint compatible con OpenAI y sin autenticación. Los 280 prompts comparten un mismo identificador de sesión de cliente y un mismo user agent, Go-http-client/1.1, y se publican contra /v1/chat/completions. Ninguna solicitud llevaba una clave de API, de modo que el endpoint era accesible para cualquiera que lo encontrara.

Leímos la actividad del 13 al 20 de septiembre de 2026 y pivotamos sobre sus indicadores. Las consultas de reputación devolvieron 0 de 89 motores de VirusTotal como maliciosos y ningún registro de reputación; las consultas de titularidad de red devolvieron Tencent Cloud, AS132203.

Evaluamos con confianza moderada que el cliente validó el endpoint expuesto con una batería de sondeos, luego lo conectó a la ruta de solicitudes de una aplicación real y lo usó como cómputo gratuito, lo que coincide con las técnicas publicadas de LLMjacking.

La tabla 1 expone las cuatro fases de la sesión.

Las horas están en UTC.

FasePrimera observaciónContenido de las solicitudesVolumen y cadencia
Comprobación de disponibilidad2026-09-18T09:02:28ZPrompts hi de nueve caracteres contra gpt-3.5-turbo, gpt-4 y llama-3.2-3b-instruct:q4_k_mEspaciado inferior a un segundo
Toma de huella2026-09-18T10:15ZPruebas de eco de token exacto, aritmética bajo una restricción de formato de salida, una pregunta trampa sobre qué objeto pesa más, seguimiento de instrucciones de recuento de palabras, preguntas sobre la fecha de corte de conocimiento y de autoidentificación, y lo mismo de nuevo en chinoLos turnos 40-54 repiten un mismo sondeo chino de un solo carácter a intervalos de aproximadamente 0.5 s
Tráfico de aplicación2026-09-18T13:54:33ZSystem prompt de agente, esquema de herramientas de siete entradas, turnos de usuario en chino, claves de API de proveedores pegadasLos cuerpos pasan de decenas de caracteres en las fases anteriores a 25,297 caracteres
Comprobación de disponibilidad reanudada2026-09-19 al 2026-09-20hi otra vezCatorce solicitudes idénticas entre las 15:02:12.084Z y las 15:02:13.923Z del 20 de septiembre

En términos de ATT&CK, el cliente escaneó el endpoint (T1595, Active Scanning, con fines de reconocimiento), después usó el endpoint expuesto a internet para el acceso inicial (T1190, Exploit Public-Facing Application), y pegó credenciales que se corresponden con T1552, Unsecured Credentials.

Juicios clave

  • Un endpoint compatible con OpenAI y sin autenticación en uno de nuestros honeypots fue validado y luego usado como cómputo de backend para la aplicación de agente de otra persona. Una única dirección de cliente produjo 280 prompts capturados bajo un mismo identificador de sesión, del 18 al 20 de septiembre. Confianza moderada.
  • Las fases de validación y de comprobación de disponibilidad están automatizadas, no las escribió una persona. Catorce prompts de disponibilidad idénticos de nueve caracteres llegaron entre las 15:02:12.084Z y las 15:02:13.923Z del 20 de septiembre. Confianza moderada.
  • Datos reales de usuarios pertenecientes a un tercero transitaron por el endpoint, incluidas seis claves de API de terceros y un esquema de herramientas de agente que ofrecía ejecución de shell. Una única solicitud a las 14:07:16Z del 18 de septiembre contenía seis claves de API de proveedores en forma KEY=value. Confianza moderada.
  • El cliente no es un escáner conocido y se comporta de forma distinta al escaneo masivo de consumo. VirusTotal devuelve 0 de 89 motores como maliciosos y ninguna reputación para 43.155.205[.]31, y ningún proveedor de reputación de escáneres tenía registro de él. Confianza moderada.
  • El patrón de actividad es coherente con el reclutamiento de endpoints de inferencia expuestos descrito en los informes de LLMjacking, más que con una medición de investigación. Los informes de proveedores y de la CSA describen sondeos benignos de bajo ruido, como saludos y preguntas factuales simples. Confianza moderada.

Cronología

  • 2026-09-13 18:00 UTCPrimera actividad de 43.155.205[.]31 en la evidencia.
  • 2026-09-18 09:02 UTCComienza el sondeo de disponibilidad del endpoint de inferencia contra tres nombres de modelo.
  • 2026-09-18 10:15 UTCEmpieza la batería de fidelidad de eco y de seguimiento de instrucciones; los tokens se regeneran en cada solicitud.
  • 2026-09-18 12:54 UTCRáfaga bilingüe de toma de huella, con aproximadamente 0.5 segundos entre solicitudes.
  • 2026-09-18 13:54 UTCSe publican en el endpoint el system prompt de la aplicación de agente y un esquema de siete herramientas, incluida la ejecución de shell.
  • 2026-09-18 14:07 UTCSeis claves de API de proveedores terceros pegadas en la conversación retransmitida.
  • 2026-09-20 15:02 UTCSe reanuda el sondeo automatizado de disponibilidad, catorce solicitudes en menos de dos segundos.

La sesión, en orden

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

La batería de sondeos

El propio texto del cliente muestra qué prueba la batería. Las pruebas de eco llevan un token aleatorio nuevo en cada solicitud, Reply with exactly this token, nothing else: TKOLGN2R, con el token cambiando a lo largo de tres solicitudes consecutivas, y comprueban si el endpoint reproduce su entrada con fidelidad. What is 17*23? Answer with only the number, no explanation. impone una restricción de formato a la respuesta. What AI model are you? Answer in one short sentence, name the model and maker. y What is your knowledge cutoff date? Answer with just the date. apuntan a la identidad, y las mismas preguntas se ejecutan de nuevo en chino. Un cliente que ejecuta esta batería averigua si detrás del endpoint hay un modelo real, qué modelo es, y si sigue instrucciones lo bastante bien como para que valga la pena usarlo.

Las solicitudes de comprobación de disponibilidad llegan con un espaciado inferior a un segundo y los turnos 40-54 se repiten a unos 0.5 s, un intervalo demasiado corto para que los escriba una persona. Interpretamos el user agent Go-http-client/1.1 como un programa en Go que retransmite el tráfico de una aplicación, y no como un navegador o una persona en una consola de API. Sostenemos esa inferencia con confianza baja, y afecta a la atribución de esta actividad al operador. El sondeo se reanudó después de que el tráfico de la aplicación ya hubiera circulado, lo que leemos como el cliente confirmando que el endpoint seguía disponible para su uso.

El tráfico de la aplicación de agente

En la fase de tráfico de aplicación, el cliente retransmitió las solicitudes de una aplicación real, las de un asistente de Android en chino. Diez solicitudes llevaban el mismo system prompt de agente, correspondiente a un asistente que ejecuta un entorno Alpine Linux PRoot aislado en el dispositivo, con un esquema de herramientas de siete entradas: shell_execute en primer lugar, descrito como la ejecución de comandos mediante /bin/sh -c en ese entorno, y después lectura de archivos, escritura de archivos, edición de archivos, control del navegador y dos herramientas de notas persistentes. Intercaladas con las llamadas al modelo aparecen las solicitudes de mantenimiento propias de la aplicación, un generador de títulos de conversación que debe emitir JSON con el idioma de la interfaz indicado como zh-Hans, y turnos humanos breves en chino.

Trece minutos después del inicio de la fase, a las 14:07:16Z, una solicitud llevaba seis claves de API de proveedores en activo en forma KEY=value: dos APIs de búsqueda, una API de mensajería de agentes, una API de investigación y dos claves de proveedores de modelos. La captura no nos permite determinar si pertenecían a la persona que las escribía o si era material robado previamente que se estaba probando contra un endpoint gratuito. En cualquiera de los casos, llegaron a quien sea el dueño del endpoint.

Descartando un escáner

La evidencia no encaja con un escáner de consumo. VirusTotal devuelve 0 de 89 motores como maliciosos, sin registro de reputación para 43.155.205[.]31, y ningún proveedor de reputación de escáneres tenía registro de él tampoco. El escaneo masivo de consumo envía sondeos de un solo disparo a muchos sensores, mientras que este cliente mantuvo una única sesión de larga duración con contenido de prompts que se iba adaptando. La misma evidencia argumenta en contra de un crawler de investigación o de medición, porque los investigadores no hacen pasar claves de proveedores en activo ni conversaciones reales de usuarios por el endpoint que están midiendo.

La evidencia no resuelve si la dirección es un pool de proxies compartido que retransmite a muchos usuarios aguas abajo o el relé propio de una sola persona para un solo dispositivo. El cliente en Go, las comprobaciones de disponibilidad diarias automatizadas y la reutilización de una única sesión aguas arriba encajan igual de bien con ambas lecturas.

La exposición en ambos lados

El dueño del endpoint paga la inferencia que el cliente consume, mientras que el cliente entrega los prompts de sus usuarios, su system prompt y sus credenciales a quien sea el dueño del endpoint, y el esquema de herramientas anterior ofrece ejecución de shell, escritura de archivos y control del navegador en un dispositivo Android. Un backend hostil puede responder con llamadas a herramientas de su propia elección y hacer que se ejecuten en el lado del cliente.

Asuma que un endpoint de inferencia autoalojado accesible desde internet sin autenticación ya está siendo sometido a comprobaciones de disponibilidad y usado como backend de otra persona, porque a este le ocurrió dentro de los cinco días siguientes a la primera actividad que observamos. Trate como divulgado todo prompt que haya cruzado por él, incluidos los system prompts y los secretos pegados de aplicaciones de las que nunca ha oído hablar.

Indicadores de compromiso

El único indicador de red que figura a continuación está desactivado; las rutas se indican tal como se observaron.

Red

IndicadorContexto
43.155.205[.]31cliente que comprobó la disponibilidad, tomó la huella y después retransmitió tráfico de una aplicación de agente a un endpoint de inferencia sin autenticación

Artefactos en host

IndicadorContexto
Reply with exactly this token, nothing else: <8 alnum chars>sondeo de fidelidad de eco usado para validar un endpoint; el token se regenera en cada solicitud (observados TKOLGN2R, TK3C9IAN, TKA63OEL, P2380OG9, P23WD39I, P2GBIOTB, ZQ7X)
Go-http-client/1.1 POST /v1/chat/completions with no Authorization headerfirma de solicitud del cliente que retransmite, en los 280 prompts capturados; la cadena de la biblioteca por sí sola es genérica

Detección

Sigma

Batería de prompts de toma de huella de modelo contra un endpoint de inferencia autoalojado (candidata).

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

Lógica de detección

  • Solicitud de inferencia sin autenticación procedente de fuera de la red de gestión (red, candidata). Alerte sobre cualquier HTTP POST a /v1/chat/completions, /v1/completions, /api/generate o /api/chat en un puerto de inferencia autoalojado que llegue desde un origen fuera de sus rangos de ingeniería Y no lleve cabecera Authorization ni api-key. Considere una ráfaga de más de cinco solicitudes de ese tipo en menos de dos segundos desde un mismo origen como comprobación automatizada de disponibilidad aguas arriba por parte de un tercero, y no como tráfico de usuarios.
  • System prompt de agente llegando a un endpoint que solo debería atender a sus propios usuarios (de comportamiento, candidata). En una pasarela de inferencia que usted opere, marque los cuerpos de solicitud de más de 10,000 caracteres que contengan un array de tools o functions cuyas entradas incluyan shell, exec, escritura de archivos o control del navegador, cuando la dirección del cliente no sea una de sus aplicaciones registradas. O una parte desconocida está usando su cómputo para un agente autónomo, o uno de sus propios agentes ha sido reapuntado al backend equivocado.

Remediación

  • Enlace los servidores de inferencia autoalojados a loopback o a una interfaz privada y ponga delante un proxy inverso que autentique; un puerto de numeración alta no es control de acceso.
  • Exija una clave de API o mTLS en cada ruta de inferencia y rechace las solicitudes sin cabecera Authorization en el proxy, no en el servidor del modelo.
  • Alerte sobre POSTs sin autenticación a /v1/chat/completions y sobre prompts mínimos idénticos repetidos desde un mismo origen, que es la forma en que un pool de proxies comprueba la disponibilidad de un upstream que ha reclutado.
  • Si su endpoint de inferencia ha estado accesible desde internet sin autenticación, trate como divulgado todo prompt y system prompt que lo haya cruzado y rote cualquier credencial que haya aparecido en una conversación.
  • Para los equipos que operan frameworks de agentes: fije la URL base del modelo a un proveedor que usted controle, y nunca configure un agente que disponga de herramientas de shell, escritura de archivos o navegador contra un endpoint compatible con OpenAI gratuito o desconocido.

Correspondencia con MITRE ATT&CK

TácticaTécnicaObservado
ReconocimientoT1595 Active ScanningPrompts de disponibilidad automatizados y una batería de eco de token exacto usados para probar si el endpoint sirve un modelo real y cuál es.
Acceso inicialT1190 Exploit Public-Facing ApplicationUna API de inferencia accesible desde internet y sin autenticación fue usada directamente como servicio por una parte no autorizada.
Acceso a credencialesT1552 Unsecured CredentialsSeis claves de API de proveedores terceros fueron pegadas en una conversación que cruzó el endpoint, quedando expuestas a quien lo opere.

Referencias

Metodología y notas del analista

Este informe se basa en 1 dirección de origen y 7 observaciones con marca de tiempo, leídas de la telemetría de sensores, contrastadas con fuentes públicas de inteligencia de amenazas y consultas de enriquecimiento, y que cubren del 13 al 20 de septiembre de 2026.

Sigue abierto:

  • Si 43.155.205[.]31 es un pool de proxies compartido que atiende a muchos usuarios aguas abajo o el relé de una sola persona para un único dispositivo.
  • Si las seis claves de API de proveedores pegadas pertenecían a la persona que las escribía o eran material robado previamente que se estaba probando.
  • Cómo se descubrió el endpoint, y si la dirección que lo enumeró es la misma que después lo usó.
  • Cómo era la actividad de este cliente antes del 13 de septiembre.
  • Si el mismo cliente usa otros endpoints de inferencia expuestos.

Preguntas o correcciones: [email protected].

How to cite
Kinryū Labs (2026). Un endpoint de inferencia expuesto, sometido a comprobaciones de disponibilidad y luego usado como backend de otra persona. https://kinryu.sh/es/reports/exposed-inference-endpoint-health-checked/