Der Samba-Entwickler Jeremy Allison (Google) hat eine Sicherheitslücke im Samba-Server (“smbd”) gemeldet. Diese hat zur Folge, dass ein entfernter, angemeldeter Angreifer den Samba-Dienst zum Absturz bringen kann. Ursache ist ein Programmierfehler, der es dem Angreifer durch spezielle Eingaben erlaubt, die Applikation in eine Schleife zu bringen, in der kontinuierlich Speicher alloziert wird.
Die Attacke ist mit Hilfe spezieller Netzwerkdatenpakete möglich. Dazu genügt auch ein Gast-Zugang auf dem System. Der Server stellt seinen Betrieb ein, sobald durch die Attacke der Speicher des Servers verbraucht ist.
Der Fehler liegt darin, wie Samba Eingabe/Ausgabe-Listen des Clients liest. Hier kann es zu einem Integer-Overflow kommen, falls der Angreifer eine spezielle Eingabe/Ausgabe-Liste an den Server übergibt. Die Schwachstelle befindet sich in der Quelltext-Datei “smbd/nttrans.c”. Dort tritt der Overflow in der Funktion “read_nttrans_ea_list()” auf:
[...]
size_t offset = 0;
[...]
while (offset + 4 <= data_size) { [...] offset += next_offset; [...]
}
Hier kann es durch die “while()”-Schleife zu einem Overflow kommen. Der Code wurde nun korrigiert, indem ein Overflow-Schutz eingebaut wurde:
while (offset + 4 <= data_size) { [...] /* Integer wrap protection for the increment. */ if (offset + next_offset < offset) { break; } offset += next_offset; /* Integer wrap protection for while loop. */ if (offset + 4 < offset) { break; }
[...]
}
Damit tritt der Integer-Overflow nicht mehr auf, und die Sicherheitslücke ist geschlossen.
Betroffen sind die Versionen 3.0.x bis 4.0.7.

