Taming the Chaos

0
379
views

Hacking, Compromising, Exploiting – ein großer Teil der Vorträge auf dem CCC handelt wie immer von Sicherheitslücken und wie sie ausgenutzt werden können. Statt nur Probleme aufzuzeigen, geht Peter Sewell das Thema andersherum an: Ist es möglich, wirklich „sichere“ Systeme zu entwerfen?

Das Grundproblem, das der aktuellen Situation des Katz- und Maus-Spiels zwischen Entwicklern und Hacken zu Grunde liegt, ist laut ihm die Herangehensweise, wie Software entwickelt wird. Ein Thema dabei ist die nötige Kompatibilität zu Legacy-Komponenten. Statt immer nur einzelne Teile eines Systems auszutauschen oder anzupassen, würde ein komplett neues System viele bestehende Probleme abschaffen. Die Interfaces zwischen diesen Komponenten sind ein weiterer Aspekt. Bestehende Schnittstellen zeugen teilweise noch von einer gewissen Naivität der 1970er, und grundsätzlich sind meist nur die erwarteten Fälle detailliert abgehandelt. Als Beispiel hierfür dient die C-Spezifikation: Während der Standard im Falle von Zugriffen auf Pointer, die außerhalb ihres eigentlichen Datenbereichs verschoben wurden, kein Verhalten vorschreibt, lässt der Compiler in der Praxis solche Zugriffe meist ungehindert zu und ermöglicht es somit, in anderen Speicherbereichen zu lesen. Zu guter Letzt sind auch die Anreize bei der Softwareentwicklung problematisch: Immer etwas Neues, und immer komplexer. Dadurch werden Sicherheitslücken geradezu gefördert. Ein sinnvollerer Fokus wäre hingegen Einfachheit und Sicherheit.

Ein Ansatz, diese Themen anzugehen, ist CHERI (Capability Hardware Enhanced RISC Instructions). Mit den sogenannten Capabilities besteht eine sichere Alternative zu normalen Pointern: So werden zusätzlich zur Adresse weitere Metadaten gespeichert. Dabei handelt es sich um die ursprüngliche Adresse, die Länge der Daten und Zugriffsberechtigungen. Während CHERI C so die wohl größte Schwachstelle in C, das unsichere Speichermanagement, behebt, bleibt es auch weitergehend kompatibel und erfordert nur minimalen Aufwand beim Portieren von bestehendem C-Code.

Den gesamten Vortrag, inklusive ausführlicherer Erklärungen und weiterer Lösungsansätze, findet ihr hier.

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here