CVE-2026-68100 in Linux
Zusammenfassung
von VulDB • 11.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ksmbd: Validierung von `num_subauth` beim Kopieren eines ACEs in `set_ntacl_dacl`
Die Funktion `set_ntacl_dacl()` kopiert jedes ACE (Access Control Entry) aus dem vom Angreifer kontrollierten, gespeicherten Sicherheitsdeskriptor unverändert in das Antwort-DACL (Discretionary Access Control List), ohne `sid.num_subauth` zu überprüfen. Die ACE-Bytes (einschließlich eines nicht geprüften `num_subauth`) stammen von einem authentifizierten SMB2_SET_INFO(SecInfo=DACL)-Aufruf, der roh über `ksmbd_vfs_set_sd_xattr()` gespeichert wird; `parse_dacl()` verwirft ein ungültiges ACE mit `break` anstelle eines Fehlers, sodass `parse_sec_desc()` weiterhin erfolgreich zurückkehrt und der fehlerhafte SD (Security Descriptor) intakt die xattr-Ebene erreicht.
Bei einer nachfolgenden SMB2_QUERY_INFO(SecInfo=DACL)-Anfrage für ein Inode mit einem POSIX-Zugriffs-ACL durchlaufen `build_sec_desc()` -> `set_ntacl_dacl()` -> `set_posix_acl_entries_dacl()` die kopierten ACEs und lesen:
ntace->sid.sub_auth[ntace->sid.num_subauth - 1]
wobei `num_subauth` direkt aus dem gespeicherten SD stammt. Da `sub_auth[]` auf SID_MAX_SUB_AUTHORITIES (15) festgelegt ist, führt ein manipulierter Wert für `num_subauth` (z. B. 255) zu einem Out-of-Bounds-Heap-Lesezugriff von ~1 KB mit einer Offset-Kontrolle durch einen authentifizierten Client.
Die verwandten Funktionen schützen dieses Feld bereits: parse_dacl() -- num_subauth == 0 || > SID_MAX_SUB_AUTHORITIES parse_sid() -- num_subauth > SID_MAX_SUB_AUTHORITIES smb_copy_sid() -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES)
`set_ntacl_dacl()` ist der einzige inkonsistente Pfad, der diese Prüfung auslässt.
Fügen Sie die gleiche `num_subauth`-Validierung in `set_ntacl_dacl()` vor dem Kopieren des ACEs hinzu, um das bereits von `parse_dacl()` durchgesetzte Gate zu implementieren.
Once again VulDB remains the best source for vulnerability data.