Sicherere temporäre Dateien für Linux
Zusammenfassung
Linux 3.11 erlaubte 2013 temporäre Dateien, die im Dateisystem gar nicht sichtbar sind. Dazu bekamen die Systemaufrufe open() und openat() das Flag O_TMPFILE. Das entzieht Angriffen die Grundlage, bei denen Angreifer über vorhersehbare Namen temporärer Dateien, etwa per Symlink, höhere Rechte erlangen.
Ideen
- Eine Datei ohne Namen im Verzeichnis kann nicht durch einen Symlink umgeleitet werden.
- Symlink-Angriffe nutzen vorhersehbare Dateinamen in gemeinsam genutzten Verzeichnissen wie /tmp.
- Die Datei lässt sich bei Bedarf später per linkat() doch noch benennen.
Einsichten
- Manche Fehlerklassen lassen sich besser durch eine neue Schnittstelle beseitigen als durch viele Einzelkorrekturen.
- Sicherheit entsteht auch, indem man Angreifern die Namen nimmt, auf die sie zielen.
Fakten
- O_TMPFILE wurde mit Linux 3.11 eingeführt.
- Die Erweiterung betraf die Systemaufrufe open() und openat().
Referenzen
Kritik
- Die Meldung erklärt nicht, dass O_TMPFILE die Unterstützung des jeweiligen Dateisystems voraussetzt.
Empfehlungen
- Nutze für temporäre Dateien O_TMPFILE oder mkstemp() statt selbst gebauter Dateinamen.
- Setze für Dienste private /tmp-Verzeichnisse ein, etwa über PrivateTmp in systemd.
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.