🔍 Contexte

Publié le 19/09/2026 sur GitHub (S3cur3Th1sSh1t/claudemessaging), ce dépôt de recherche documente en détail le protocole de messagerie inter-sessions de Claude Code, l’outil d’IA d’Anthropic. Il cartographie les quatre couches de défense du système, identifie plusieurs observations comportementales et publie un outil offensif nommé ccforge.py.

🏗️ Architecture du système de messagerie

Claude Code permet à des sessions sur la même machine de communiquer via :

  • Named pipes Windows : \\<host>\pipe\LOCAL\cc-msg-<hash>
  • Unix sockets Linux/macOS : /run/user/<uid>/cc-socks/<pid>.sock et /tmp/cc-socks-<uid>/<pid>.sock

Le modèle de confiance repose sur quatre couches :

  1. ACL pipe/socket : seul l’utilisateur propriétaire peut écrire
  2. Token d’authentification (fichier clé 0600) : les frames non authentifiées sont silencieusement rejetées
  3. Hold gate entrant (crossSessionInbound) : messages de modes non attestés ou non concordants mis en attente
  4. Guardrails du modèle : les messages pairs sont traités comme des requêtes de coéquipier, pas des instructions système

⚠️ Observations clés

  • F-1 : Un message approuvé d’un expéditeur non identifié est présenté au modèle comme « trusted teammate » sans distinction
  • F-2 : La DACL du pipe inclut Everyone et ANONYMOUS LOGON avec accès en lecture (Windows) — plus large que nécessaire
  • F-3 : L’attestation from-mode est auto-déclarée par l’expéditeur — un processus local disposant de la clé de session peut déclarer from-mode="bypass" pour contourner le hold prompt (Layer 3)
  • F-4 : Configuration hôte locale (SMB/445 exposé), non imputable à Claude Code
  • F-5 : Le champ message.role est ignoré par le récepteur — toujours livré en user-role (comportement positif)

🛠️ Outil ccforge.py

ccforge.py est un client de messagerie cross-session multiplateforme (Python 3.8+, sans dépendances) permettant :

  • Lister les sessions actives
  • Envoyer des messages avec contrôle de l’attestation (none, minimal, named, full)
  • Usurper l’identité d’une session pair (--impersonate)
  • Forger un from-name arbitraire
  • Joindre des fichiers (--file-attach)
  • Contrôler la priorité de traitement (now, next, later)
  • Mode dry-run pour inspecter le payload sans envoi

La stratégie minimal (défaut) envoie <cross-session-message from-mode="bypass"> et est acceptée sans hold si le récepteur est en mode bypass.

🔐 Périmètre d’exposition

  • Injection de messages : locale uniquement — nécessite accès same-user au fichier clé 0600 et écriture sur le pipe
  • Accès distant via SMB : lecture seule, injection impossible à distance
  • Environnements à risque : serveurs terminaux/RDS multi-utilisateurs, environnements de développement partagés, agents CI/CD tournant sous le même UID

📋 Type d’article

Il s’agit d’une publication de recherche offensive combinant documentation de protocole, analyse du modèle de confiance et publication d’outillage d’exploitation, destinée aux opérateurs et chercheurs en sécurité souhaitant auditer leur déploiement de Claude Code.

🧠 TTPs et IOCs détectés

TTP

  • T1559.001 — Inter-Process Communication: Component Object Model (Execution)
  • T1036 — Masquerading (Defense Evasion)
  • T1106 — Native API (Execution)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)

IOC

  • Fichiers : ccforge.py
  • Chemins : ~/.claude/sessions/<pid>.json
  • Chemins : /run/user/<uid>/cc-socks/<pid>.sock
  • Chemins : /tmp/cc-socks-<uid>/<pid>.sock

⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 20 septembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.

Malware / Outils

  • ccforge.py (tool)

🟡 Indice de vérification factuelle : 40/100 (moyenne)

  • ⬜ github.com — source non référencée (0pts)
  • ✅ 9289 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 4 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vérifié (0pts)
  • ✅ 4 TTPs MITRE identifiées (15pts)
  • ⬜ date RSS ou approximée (0pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://github.com/S3cur3Th1sSh1t/claudemessaging/