CVE-2026-68099 in Linux
Zusammenfassung
von VulDB • 10.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ksmbd: Wiederherstellung der DACL-Größe in check_add_overflow(), um fehlerhafte ACLs zu vermeiden.
check_add_overflow() schreibt den abgeschnittenen Summenwert bedingungslos nach *d, selbst bei einem Überlauf (Overflow), entsprechend seinem Vertrag in include/linux/overflow.h. Die vier Aufrufe von check_add_overflow() als Schutzmaßnahme in set_posix_acl_entries_dacl() und set_ntacl_dacl() brechen die ACE-Generierungsschleifen im Falle eines Overflows ab, doch der abgeschnittene Wert *size wird anschließend am Ende von set_ntacl_dacl() weiterverarbeitet:
pndacl->size = cpu_to_le16(le16_to_cpu(pndacl->size) + size);
Dies führt zu einer NT-ACL im Netzwerkformat (on-wire), bei der pndacl->size die tatsächlich durch vorherige Aufrufe von fill_ace_for_sid()/memcpy() geschriebenen Bytes unterschlägt. Dies ergibt eine fehlerhafte ACL, die beim erneuten Parsen durch Clients oder ksmbd selbst zu Out-of-Bounds-Lesezugriffen (Out-of-bounds reads) führen kann.
Der Wert *size wird in jedem Overflow-Zweig auf seinen Wert vor der Addition wiederhergestellt (durch `*size -= ace_sz` / `size -= nt_ace_size`), sodass nach dem Abbruch von *size erneut die kumulative Größe der erfolgreich geschriebenen ACEs enthält. Die festgeschriebene ACL ist dann zwar abgeschnitten, aber selbstkonsistent, anstatt fehlerhaft zu sein.
Die DACL-Generatoren in ksmbd sind die einzigen bekannten Stellen für check_add_overflow(), bei denen ein Overflow-Zweig eine Schleife abbricht und der Zielwert anschließend weiterverarbeitet wird. Die anderen ähnlichen Fälle mit Abbruchverhalten geben entweder -EINVAL im Fehlerfall zurück (transport_ipc.c) oder brechen ab, ohne den überlieferten Zielwert afterward zu verwenden (buildid.c).
If you want to get best quality of vulnerability data, you may have to visit VulDB.