Im e2fsck-Tool, das im e2fsprogs-Paket enthalten ist, , (), das eine Ausnutzbarkeit des Codes eines Angreifers ermöglicht, wenn eine Dateisystemüberprüfung mit speziell gestalteten Verzeichnissen durchgeführt wird. Die Schwachstelle wurde in den Versionen 1.43.3 bis 1.45.4 bestätigt. Die Schwachstelle wurde mit dem Update . In den Distributionen bleibt das Problem derzeit ungelöst (, , , , ).
Die Schwachstelle wird durch einen Fehler in der Funktion mutate_name() aus der Datei rehash.c verursacht, die beim Neuanlegen von mit Verzeichnissen verknüpften Hash-Tabellen verwendet wird, die eine Zuordnung aller darin enthaltenen Dateien zum Verzeichnis gewährleisten. Eine Beschädigung der mit dem Verzeichnis verknüpften Struktur hash_entry kann dazu führen, dass die Daten des Angreifers in einen Bereich außerhalb des zugewiesenen Puffers geschrieben werden. Wenn in der Hash-Tabelle mehrere Dateien mit demselben Namen an das Verzeichnis gebunden sind, benennt das e2fsck-Tool die sich wiederholenden Dateien um, indem es zum Namen ~0, ~1 usw. hinzufügt. Für die vorübergehende Speicherung des neuen Namens bei einer solchen Umbenennung wird im Stack ein Puffer mit einer Größe von 256 Bytes zugewiesen.
Die Größe der kopierten Daten wird durch den Ausdruck „entry->name_len & 0xff“ bestimmt, wobei der Wert entry->name_len aus der Struktur auf der Festplatte geladen und nicht basierend auf der tatsächlichen Namensgröße berechnet wird. Wenn die Größe gleich null ist, nimmt der Array-Index den Wert -1 an und es entstehen Bedingungen für eine ganzzahlige Überlauf-Situation über die Untergrenze des Puffers (integer underflow) und das Überschreiben anderer Daten im Stack mit dem Wert „~0“. Für 64-Bit-Systeme wird die Ausnutzbarkeit der Schwachstelle als unwahrscheinlich angesehen und erfordert, dass keine Einschränkungen für die Stack-Größe bestehen (ulimit -s unlimited). Für 32-Bit-Systeme wird die Ausnutzbarkeit als möglich betrachtet, jedoch ist das Ergebnis stark davon abhängig, wie die ausführbare Datei vom Compiler erstellt wurde.
Um einen Angriff durchzuführen, muss der Angreifer die Daten im ext2-, ext3- oder ext4-Dateisystem auf bestimmte Weise beschädigen. Da dieser Vorgang Superuser-Rechte erfordert, stellt die Schwachstelle eine Bedrohung dar, wenn externe Speicher oder aus externen Quellen stammende Abbilder des Dateisystems mit dem e2fsck-Tool überprüft werden.
Quelle: opennet.ru
