Aller au contenu

CVE-2026-6605 : Vulnérabilité SSRF dans AgentScope

Des analyses portant sur la CVE-2026-6605 ont mis en évidence une vulnérabilité critique de type Server-Side Request Forgery (SSRF) au sein du framework AgentScope (jusqu’à la version 1.0.18). Cette faille résulte d’une gestion non sécurisée des blocs de contenu multimodal basés sur des URL, permettant à des attaquants distants non authentifiés d’exécuter une SSRF non aveugle (non-blind). L’exploitation de cette vulnérabilité permet l’exfiltration de données issues de services internes ou de métadonnées cloud, notamment via l’abus des fonctions situées dans _utils/_common.py et formatter/_openai_formatter.py.

Le problème réside fondamentalement dans l’absence de validation dans la chaîne de traitement d’AgentScope lors de la récupération de contenu externe. L’application accepte des messages multimodaux contenant des blocs audio, image ou vidéo. Lorsqu’ils sont traités par les formateurs, ces blocs sont récupérés via requests.get() sans filtrage, ce qui permet d’accéder à l’infrastructure réseau interne.

  • Utilitaire : src/agentscope/_utils/_common.py dans _get_bytes_from_web_url()
  • Formateur : src/agentscope/formatter/_openai_formatter.py dans _to_openai_audio_data()

Un attaquant cible une application basée sur AgentScope en envoyant une charge utile JSON malveillante.

{
"type": "audio",
"source": {
"type": "url",
"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/my-role.wav"
}
}

L’application tente de récupérer ce contenu, et l’objet d’identification résultant est encodé en base64 et retransmis à l’attaquant.

La détection se concentre sur la surveillance du trafic réseau sortant du processus AgentScope vers les segments de réseau internes et les points de terminaison de métadonnées cloud sensibles.

title: Tentative de SSRF complète dans AgentScope
status: experimental
description: Détecte les requêtes sortantes des processus AgentScope vers des plages IP internes.
logsource:
category: network_connection
product: linux
detection:
selection:
DestinationIp:
- '169.254.169.254'
- '10.0.0.0/8'
- '192.168.0.0/16'
- '172.16.0.0/12'
ProcessName: 'python*'
condition: selection