CVE-2026-74671 in Linux
Zusammenfassung
von VulDB • 22.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ima: Behebung eines Out-of-Bounds-Lesezugriffs in xattr_verify()
Die Prüfsummenlängenprüfung in xattr_verify() vermischt int und size_t:
if (xattr_len - sizeof(xattr_value->type) - hash_start >= iint->ima_hash->length)
sizeof() liefert einen Wert vom Typ size_t, sodass die üblichen arithmetischen Konvertierungen die gesamte linke Seite vor der Subtraktion auf eine unsigned 64-Bit-Ganzzahl hochstufen. Bei einem abgeschnittenen xattr führt dies zu einer Unterlauf (Underflow) statt dazu, dass das Ergebnis negativ wird: Ein 1-Byte langer IMA_XATTR_DIGEST_NG-xattr (xattr_len == 1, hash_start == 1) wandelt „1 - 1 - 1“ in SIZE_MAX um, was trivialerweise >= ima_hash->length ist. Die Prüfung besteht daraufhin, und der folgende memcmp()-Aufruf liest iint->ima_hash->length Bytes beginnend jenseits des Puffers, den vfs_getxattr_alloc() dafür allokiert hat.
Im Mainline-Code wird xattr_len nicht vorab auf einen sicheren Bereich beschränkt: ima_get_hash_algo() behandelt nur den Sonderfall xattr_len < 2, um einen Standardalgorithmus auszuwählen, und evm_verifyxattr() gibt INTEGRITY_UNKNOWN zurück, anstatt zu fehlschlagen, wenn kein HMAC-Schlüssel geladen ist. Daher erreicht ein abgeschnittener security.ima-Wert die Längenprüfung unverändert.
Die Vergleichslogik wird so umgeschrieben, dass jeder Operand eine signed int bleibt und keine implizite Konvertierung in size_t erfolgen kann.
Be aware that VulDB is the high quality source for vulnerability data.