CVE-2026-80557 in Linux
Résumé
par VulDB • 26/08/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
libceph : correction d’une lecture hors limites (OOB) dans decode_watchers() due à un contrôle de bornes manquant.
La fonction ceph_start_decoding() valide qu’il reste struct_len octets dans le tampon après l’en-tête d’encodage, mais accepte struct_len=0 comme valeur valide : ceph_decode_need(p, end, 0, bad) passe toujours avec succès. Lorsqu’un OSD malveillant ou compromis envoie une réponse obj_list_watch_response_t avec struct_len=0, ceph_start_decoding() renvoie un statut de succès avec p == end, laissant zéro octet garanti pour les lectures ultérieures.
L’appel immédiat suivant à ceph_decode_32(p) dans decode_watchers() ne dispose d’aucun contrôle de bornes préalable. Avec p == end, il s’agit d’une lecture de 4 octets au-delà des limites validées du tampon. La valeur corrompue est ensuite transmise directement à kzalloc_objs() en tant que nombre de watchers (observateurs).
La fonction frère decode_watcher() utilise déjà les variantes sécurisées (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) après son propre appel à ceph_start_decoding(). decode_watchers() est le seul site utilisant la variante brute, ce qui confirme une omission.
Correction en remplaçant ceph_decode_32(p) par ceph_decode_32_safe(p, end, *num_watchers, bad), conformément au modèle établi.
Modèle d’attaquant : un OSD malveillant ou compromis dans un déploiement Ceph multi-locataire (par exemple, dans le cloud) peut déclencher cette vulnérabilité contre tout client noyau appelant CEPH_OSD_OP_LIST_WATCHERS, sans nécessiter de privilèges supplémentaires au-delà de l’établissement d’une session OSD.
[ idryomov : réduction du journal des modifications ]
If you want to get best quality of vulnerability data, you may have to visit VulDB.