Mastodon
Zuletzt aktualisiert am
Bild von Gabriel Heinzer @Unsplash.com

Sudo reloaded: Su und Sudo Rewrite in Rust

Su und Sudo sind kritische Komponenten des Linux-Systems, weil sie die Eskalation von Privilegien erlauben. Eine Koproduktion erstellt nun neue Ausgaben auf Basis von Rust.

Mit Su und Sudo lassen sich Administrator-Privilegien erlangen. Umso bedeutender ist die Speichersicherheit. Hier kommt Rust ins Spiel, das Speichersicherheit by Design offeriert, im Gegensatz zum traditionellen C, in dem diese aus den 80ern stammenden Tools programmiert sind.

Das Prossimo-Projekt bestehend aus Ferrous Systems und Tweede Golf hat sich nun mit Unterstützung von Amazon Web Services dessen angenommen, um Rust-Alternativen für diese kritischen Tools zu erstellen. Das Projekt steht unter der Schirmherrschaft von ISRG (Internet Security Research Group) - einer Nonprofit-Organisation, die daher um Unterstützung bittet.
Das Team schreibt dazu:

Wenn wir darüber nachdenken, in welche Software wir investieren wollen, denken wir in erster Linie an vier Risikokriterien:

  • Sehr weit verbreitet (fast jeder Server und/oder Client)
  • In einem kritischen Bereich
  • Ausführen einer kritischen Funktion
  • Geschrieben in Sprachen, die nicht speichersicherfähig sind (z. B. C, C++, asm)

Sudo erfüllt diese Risikokriterien voll und ganz. Es ist wichtig, dass wir unsere kritischste Software absichern, insbesondere gegen Schwachstellen in der Speichersicherheit. Es ist schwer, sich Software vorzustellen, die viel kritischer ist als sudo und su.

 

Der Fahrplan kann hier nachgelesen werden:

Meilenstein 0: Vorbereitung  

  • Systemarchitektur und Anforderungen
  • Projekt-Einrichtung
  • Parsen von Sudoers-Dateien

Meilenstein 1: Drop-in-Ersatz mit einer Standardkonfiguration

  • Kern der sudo-Pipeline von der Richtlinienüberprüfung bis zur minimalen Befehlsausführung ohne Sicherheitsfunktionen
  • Sudoers-basierte Richtlinie, mit eingeschränkter Funktionsunterstützung
  • Authentifizierung auf Basis von PAM
  • Befehlsausführung mittels exec mit einfacher Signal- und fd-Übergabe
  • Test für Ubuntu 22.04 mit einer Standard-Sudoers-Konfiguration
  • Einrichtung eines Test-Frameworks

Meilenstein 2: Sicherheitsparität

  • Kern der sudo-Pipeline mit vollständiger Bereinigung von Signalen, Dateideskriptoren, Limits, ptrace, etc. und effizienterer Befehlsausführung
  • Hinzufügen der su-Implementierung
  • Testen auf vollständige Sicherheitskonformität
  •  SELinux-Unterstützung
  •  AppArmor-Unterstützung
  •  Breitere Unterstützung von Konfigurationsmerkmalen
  •  Benutzerorientierte Dokumentation

Meilenstein 3: Überprüfung von Unterbefehlen

  • Unterstützung für das Abfangen von Subkommandos

Meilenstein 4: Unternehmensfunktionen

  • LDAP-Unterstützung
  • Hostnamenabgleich für sudoers
  • Vollständige Audit- und IO-Protokollierung
  • Mail-Ereignisse
  • Authentifizierung für passwd und Kerberos (ohne PAM)
  • Unterstützung für mehr als 16 Benutzergruppen (group_file plugin)

Das Github-Repo für interessierte Unterstützer befindet sich hier

 

Comments