FreeBSD : RCE du noyau via débordement de pile dans kgssapi.ko (CVE-2026-4747)

Détails de la vulnérabilité
La vulnérabilité se trouve dans sys/rpc/rpcsec_gss/svc_rpcsec_gss.c au sein de la fonction svc_rpc_gss_validate(). Un tampon de pile de 128 octets (rpchdr[]) est utilisé pour reconstruire les en-têtes RPC pour la vérification de signature GSS-API. Après avoir écrit 32 octets de champs d'en-tête RPC fixes, la fonction copie l'intégralité du corps des informations d'identification RPCSEC_GSS (oa_length octets) dans l'espace restant sans vérification des limites.
static bool_t svc_rpc_gss_validate(...) {
int32_t rpchdr[128 / sizeof(int32_t)]; // 128 octets sur la pile
// ...
if (oa->oa_length) {
// BUG : Aucune vérification des limites sur oa_length !
// Après 32 octets d'en-tête, il ne reste que 96 octets dans rpchdr.
// Si oa_length > 96, cela déborde au-delà de rpchdr
memcpy((caddr_t)buf, oa->oa_base, oa->oa_length);
}
}
Surface d'attaque et impact
Le module vulnérable kgssapi.ko implémente l'authentification RPCSEC_GSS pour le sous-système RPC du noyau de FreeBSD. Le démon serveur NFS (nfsd) écoutant sur le port 2049/TCP traite les paquets RPC dans le contexte du noyau et utilise ce module lorsque l'authentification RPCSEC_GSS est activée. Une exploitation réussie entraîne une exécution de code à distance (RCE) dans le noyau avec des privilèges root (shell inverse uid 0).
Versions affectées
- FreeBSD 13.5 (<p11)
- FreeBSD 14.3 (<p10)
- FreeBSD 14.4 (<p1)
- FreeBSD 15.0 (<p5)
Le correctif
Le correctif pour FreeBSD 14.4-RELEASE-p1 ajoute une vérification des limites avant la copie :
if (oa->oa_length > sizeof(rpchdr) - 8 * BYTES_PER_XDR_UNIT) {
rpc_gss_log_debug("auth length %d exceeds maximum", oa->oa_length);
client->cl_state = CLIENT_STALE;
return (FALSE);
}
Analyse de la disposition de la pile
D'après le désassemblage de la fonction, le tableau rpchdr se trouve à [rbp-0xc0]. Le memcpy écrit à rpchdr + 32 = [rbp-0xa0]. Avec un descripteur de contexte de 16 octets dans le corps des informations d'identification, l'adresse de retour se trouve à l'octet 200 du corps des informations d'identification, permettant de contrôler le flux d'exécution.
📖 Lire la source complète : HN AI Agents
👀 See Also

mcp-scan : Scanner de sécurité pour les configurations de serveur MCP
mcp-scan vérifie les configurations des serveurs MCP pour détecter des problèmes de sécurité, notamment les secrets dans les fichiers de configuration, les vulnérabilités connues dans les packages, les modèles d'autorisations suspects, les vecteurs d'exfiltration et les attaques par empoisonnement d'outils. Il détecte automatiquement les configurations pour Claude Desktop, Cursor, VS Code, Windsurf et 6 autres clients d'IA.

Surveillance des commandes OpenClaw avec Python et Gemini Flash pour la sécurité
Un utilisateur a créé un script Python qui suit les commandes injectées par OpenClaw, les analyse avec Gemini Flash et envoie des notifications via un webhook Discord pour toute activité alarmante ou irrégulière, pour un coût d'environ 0,14 $ par jour.

Claude Code continue de journaliser les sessions après une révocation, un utilisateur signale un silence de 2 semaines du support
Un utilisateur de Claude Code signale que les journaux de session continuaient d'apparaître après avoir révoqué l'accès, le support d'Anthropic restant sans réponse pendant deux semaines. Les journaux incluaient des étendues comme user:file_upload, user:ccr_inference et user:sessions:claude_code.

L'attaque de la chaîne d'approvisionnement utilise des caractères Unicode invisibles pour contourner la détection.
Des chercheurs ont découvert 151 paquets malveillants téléversés sur GitHub du 3 au 9 mars utilisant des caractères Unicode invisibles pour dissimuler du code malveillant. L'attaque cible les dépôts GitHub, NPM et Open VSX avec des paquets qui semblent légitimes mais contiennent des charges utiles cachées.