bk99.de entertain the web since 1997

Race Condition in FreeBSDs Mutex-Implementierung

Zusammenfassung

Felix von Leitner nannte eine 2024 veröffentlichte FreeBSD-Lücke einen Kandidaten für den kürzesten Informatikerwitz: eine Race Condition in der Implementierung von Mutexen. Über einen Use-after-free in den Userspace-Mutexen, kurz umtx, konnten lokale Nutzer ab FreeBSD 11.0 Root-Rechte erlangen. Der Witz dahinter: Mutexe sind genau das Werkzeug, das Race Conditions verhindern soll.

Was eine Race Condition ist

Eine Race Condition entsteht, wenn zwei gleichzeitig laufende Programmteile auf dieselbe Ressource zugreifen und das Ergebnis davon abhängt, wer zuerst kommt. Gegen solche Fehler gibt es Synchronisationsmechanismen, deren wichtigster der Mutex ist: Er sorgt dafür, dass immer nur ein Programmteil einen kritischen Abschnitt betritt.

Ein Use-after-free bedeutet, dass ein Programm Speicher weiter benutzt, der bereits freigegeben wurde. Gelingt es einem Angreifer, diesen Speicher in der Zwischenzeit mit eigenen Daten zu füllen, kann das zur Übernahme des Systems führen. Im Kernel bedeutet das volle Rechte.

Warum das niemand allein betrifft

Ein Nachtrag des Beitrags stellt klar, dass auch Linux schon ähnliche Fehler in seinen Futex-Mechanismen hatte. Synchronisation im Kernel gehört zum Schwierigsten in der Systemprogrammierung, weil Fehler nur unter seltenen zeitlichen Bedingungen auftreten und schwer zu testen sind. Werkzeuge wie Sanitizer und Fuzzer helfen, finden aber nicht alles.

Ideen

  • Mutexe sollen Race Conditions verhindern, können aber selbst welche enthalten.
  • Ein Use-after-free im Kernel kann zu vollen Systemrechten führen.
  • Synchronisationsfehler treten nur unter seltenen zeitlichen Bedingungen auf.

Einsichten

  • Gerade grundlegende Mechanismen brauchen besonders gründliche Prüfung.
  • Kein Betriebssystem ist frei von Fehlern in der Synchronisation.

Fakten

  • Betroffen waren FreeBSD-Versionen ab 11.0.
  • LPE steht für Local Privilege Escalation, also lokale Rechteausweitung.

Referenzen

Bemerkungen

  • Der Nachtrag im Original verweist auf eine vergleichbare Linux-Lücke von 2014.

Empfehlungen

  • Spiele Sicherheitsupdates für FreeBSD und Linux zeitnah ein, auch bei rein lokalen Lücken.
  • Behandle Systeme mit vielen Nutzern oder unsicheren Diensten als Ziel für lokale Rechteausweitung.

Originalbeitrag lesen →

Im Webarchiv suchen