CVE-2026-80557 in Linux
Zusammenfassung
von VulDB • 26.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
libceph: Behebung eines OOB-Lesezugriffs (Out-of-Bounds) in decode_watchers() durch fehlende Bereichsprüfung
ceph_start_decoding() validiert, dass nach dem Encodings-Header noch struct_len Bytes im Puffer verbleiben, akzeptiert jedoch struct_len=0 als gültig: ceph_decode_need(p, end, 0, bad) schlägt immer fehl (bzw. ist erfolgreich). Wenn ein böswilliger oder kompromittierter OSD eine obj_list_watch_response_t-Antwort mit struct_len=0 sendet, gibt ceph_start_decoding() Erfolg zurück, wobei p == end gilt, was bedeutet, dass für nachfolgende Lesezugriffe keine Bytes garantiert sind.
Der unmittelbar folgende Aufruf von ceph_decode_32(p) in decode_watchers() verfügt über keine vorangehende Bereichsprüfung. Bei p == end handelt es sich hierbei um einen 4-Byte-Lesezugriff jenseits der validierten Puffergrenze. Der unbestimmte Wert wird dann direkt an kzalloc_objs() als Watcher-Anzahl weitergegeben.
Die Schwesterfunktion decode_watcher() verwendet bereits die sicheren Varianten (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) nach ihrem eigenen Aufruf von ceph_start_decoding(). decode_watchers() ist die einzige Stelle, die die ungeschützte Variante nutzt, was einen Übersehensfehler bestätigt.
Behebung durch Ersetzen von ceph_decode_32(p) mit ceph_decode_32_safe(p, end, *num_watchers, bad), konsistent mit dem etablierten Muster.
Angreifermodell: Ein böswilliger oder kompromittierter OSD in einer Multi-Tenant-Ceph-Bereitstellung (z. B. Cloud) kann dies gegen jeden Kernel-Client auslösen, der CEPH_OSD_OP_LIST_WATCHERS aufruft, ohne weitere Berechtigungen über die Etablierung der OSD-Sitzung hinaus zu benötigen.
[ idryomov: Changelog gekürzt ]
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.