Mit einem zweifelhaften Versuch wollten Forscher belegen, wie einfach sich Schadcode in Open-Source-Programme schmuggeln lässt. Doch der Test schlug fehl, der fehlerhafte Code wurde entdeckt und die Wissenschaftler sanktioniert.
Das Linux-System und vor allem der Kernel leben von der ständigen Mitarbeit zahlreicher Entwickler. Um die komplexen Aufgaben abzustimmen und zu organisieren greifen sie zu Versionsverwaltungsprogrammen wie Git und achten besonders darauf, dass kein fehlerhafter Code in den Kernel einfließt. Aufgrund der Komplexität der Software lassen sich Bugs aber nicht völlig ausschließen, sodass es regelmäßig zu Updates und Korrekturen am Programmcode kommt. Das gehört zum normalen Entwicklungszyklus. Auch im Kernel kommt es immer wieder zu Sicherheitsproblemen, die dann später wieder korrigiert werden müssen.
Forscher der University of Minnesota (UofM) haben nun in ihrer wissenschaftlichen Publikation “On the Feasibility of Stealthily Introducing Vulnerabilities in Open-Source Software via Hypocrite Commits” [1] auf eine ganz andere Art von Sicherheitslücke in Open-Source-Projekten wie dem Linux-Kernel hingewiesen. Insbesondere wollten sie zeigen, dass Open-Source-Projekte ein Sicherheitsrisiko darstellen können, wenn man nicht jede Codeänderung einer akribischen Prüfung unterzieht.
Die Autoren identifizieren drei Gründe, warum sich mithilfe regulärer Commits Sicherheitslücken in den Code jedes größeren Open-Source-Projekts einschleusen lassen. Zunächst einmal liege es in der Natur eines Open-Source-Projekts, dass jeder Entwickler einfachen Zugriff auf den Code des Projekts hat und ihn über öffentlich zugängliche Repositories prinzipiell auch leicht verändern kann.
Bei umfangreichen Projekten wie dem Linux-Kernel käme hinzu, dass die Zahl der Commits und Patches derart hoch ist, dass selbst erfahrene Maintainer nicht mehr jede einzelne Änderung genau prüfen können. Als dritten Punkt geben die Forscher an, dass hochkomplexe Projekte wie der Linux-Kernel nur sehr schwer in ihrer Gesamtheit zu überblicken seien.
Diese drei recht offensichtlichen Gründe führen laut den Autoren zu dem Problem, dass Angreifer prinzipiell ohne Weiteres Schwachstellen oder gar Backdoors in das System einbauen könnten. In ihrer Publikation erforschen die Autoren auch, unter welchen Bedingungen solche bösartigen Commits am erfolgreichsten sind.
Die Arbeit der Autoren blieb aber nicht auf einer rein theoretischen Ebene stehen: Sie versuchten, selbst einen bösartigen Commit im Linux-Kernel unterzubringen. Als Proof-of-Concept entwickelten sie einen oberflächlich betrachtet nützlichen Kernel-Patch, den die Maintainer in den Kernel aufnehmen sollten. Bei genauerem Hinsehen offenbart sich aber schnell, dass die Autoren absichtlich einen Use-After-Free-Fehler in den Code eingebaut haben. Durch einen solchen Fehler im Speichermanagement des Codes wird bereits freigegebener Speicher wieder benutzt. Je nach Architektur des Codes und der genauen Art der Schwachstelle kann ein Angreifer so beispielsweise Denial-of-Service-Attacken fahren oder aber eigenen, speziell präparierten Programmcode mit erweiterten Rechten ausführen.
Einige Maintainer des Kernels erkannten den Programmierfehler jedoch, sodass der Commit und der Patch abgelehnt wurden. Die ganze Aktion hatte für die Forscher und insbesondere die University of Minnesota ein übles Nachspiel: Der Kernel-Entwickler Greg Kroah-Hartman schloss die UofM aufgrund dieses Experiments dauerhaft von der Mitarbeit am Linux-Kernel aus, zudem wurden frühere Codebeiträge der Universität aus dem Kernel entfernt. Mittlerweile hat auch die Leitung des Department of Computer Science & Engineering der University of Minnesota interne Untersuchungen in dem Fall angekündigt. (jcb)
Infos






