
Wissenschaftliche Arbeit und Präsentationsfolien, die die Dirty-COW-Schwachstelle zur Privilegieneskalation unter Linux (CVE-2016-5195) analysieren, einschließlich Ausnutzungstechniken, Kernel-Writeback-Verhalten und Erkennungsproblemen.
Dieses Repository enthält meine Abhandlung und die Präsentationsfolien zu CVE-2016-5195, einer Linux-Privilegieneskalations-Schwachstelle, verfasst für den Kurs 'Operating Systems: Design And Security' an der FMI, Universität Bukarest.
In meiner Abhandlung behauptete ich, dass man Dirty COW nutzen kann, um Binärdateien stillschweigend mit Hintertüren zu versehen ohne sofort auf root zu eskalieren, um die Erkennung zu erschweren.
Dies ist tatsächlich nicht wahr, denn beim Versuch, die modifizierte Seite zurückzuschreiben, bemerkt der Kernel, dass die Seite dirty (schmutzig) ist (was sie niemals sein sollte), und gerät in Panik, was zum Absturz des Systems führt.
Um das zu verhindern, müssen Sie sofort auf root eskalieren und das automatische Writeback deaktivieren, indem Sie "echo 0 > /proc/sys/vm/dirty_writeback_centisecs" ausführen. Mein Proof of Concept tut das nicht, daher stürzt es beim Testen in einer VM schnell ab, nachdem erfolgreich /etc/passwd modifiziert wurde (was nicht auf die Festplatte geschrieben wird).
https://www.exploit-db.com/exploits/40847 ist ein Beispiel für Exploit-Code, der /etc/passwd überschreibt und dann das Writeback deaktiviert, um einen Absturz zu verhindern.
Andere Methoden umfassen das Patchen der vDSO (https://github.com/scumjr/dirtycow-vdso) anstelle einer dateigestützten Seite, was alle Prozesse auf dem System betrifft und nicht abstürzt, und andere Vorteile hat, wie z.B. auch das Entkommen aus Containern und wird nicht von SELinux-Einschränkungen beeinträchtigt, die sogar das Öffnen von /etc/passwd im Nur-Lesen-Modus für den Angriff verhindern könnten.
Während man das System tatsächlich nach der Eskalation auf root mit Hintertüren versehen kann (wie bei jeder anderen Privilegieneskalationsmethode), würde dies gewöhnliche Dateisystemoperationen beinhalten und könnte von Intrusion Detection Systemen erkannt werden, während, wenn das Writeback wie ursprünglich angenommen funktioniert hätte, es die Überwachung von Schreiboperationen umgehen könnte, da der Kernel die Seite einfach per Writeback zurückschreiben würde, ohne dass ein write-Systemaufruf beteiligt ist, aber es stürzt stattdessen tatsächlich ab.