bk99.de entertain the web since 1997

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.

Originalartikel lesen →

Im Webarchiv suchen