Das eigentliche Software-Sicherheitsproblem sind wir

Ein Kollege beschrieb kürzlich einen lustigen Freitagabend für seinen Sohn im Teenageralter: zu Hause bleiben und online chatten. Hin und wieder gibt es eine Party, auf der sich alle seine Freunde auf ihren Laptops unterhalten.





Wir gewöhnen uns immer mehr daran, in solchen virtuellen Räumen zu leben – aber es gibt einen wichtigen Unterschied zwischen virtuellen Räumen und den tatsächlichen physischen Räumen, in denen wir uns bewegen. Wir erwarten normalerweise, dass wir über eine Brücke oder in ein Gebäude gehen können ohne dass die Struktur zusammenbricht. Bei Softwareprogrammen haben wir dieses Vertrauen nicht.

Glauben Sie es nicht, wir könnten in nicht allzu ferner Zukunft tatsächlich in einer Welt leben, in der Software nicht zufällig und katastrophal ausfällt. Unsere Softwaresysteme konnten Angriffen standhalten. Unsere privaten Social-Media- und Gesundheitsdaten konnten nur von Personen eingesehen werden, die dazu berechtigt waren. Alles, was wir brauchen, sind die richtigen Fixes.

Das Problem mit moderner Software ist, dass wir unsere Wolkenkratzer mit den gleichen Materialien und Techniken gebaut haben, die zum Bau von Hütten verwendet werden. Software begann als eine Sammlung von Bausteinen: einfache Prozeduren, Befehlsfolgen für Berechnungen, Spiele und Kuriositäten. Jahrzehnte später haben wir Millionen von Prozeduren, die auf vernetzten Maschinen miteinander interagieren und Zugriff auf alle Arten von geheimen Informationen haben. Dennoch verwenden wir immer noch ähnliche Sprachen und Tools.



Wenn wir wollen, dass unsere Systeme weniger Schwachstellen aufweisen, müssen wir bessere Baumaterialien verwenden. Die heute verwendeten Sprachen machen es dem Programmierer zu leicht, Fehler zu machen, und sie machen es zu schwer, die Fehler zu erkennen.

Ein besserer Weg wäre, Sprachen zu verwenden, die die von uns benötigten Garantien bieten. Die Heartbleed-Schwachstelle ist aufgetreten, weil jemand vergessen hat zu überprüfen, ob ein Teil des Speichers dort endet, wo er sollte. Dies könnte nur in einer Programmiersprache geschehen, in der der Programmierer für die Verwaltung des Speichers verantwortlich ist. Warum also nicht Sprachen verwenden, die den Speicher automatisch verwalten? Warum nicht die Programmiersprachen die schwere Arbeit erledigen lassen?

Eine andere Möglichkeit wäre, Software einfacher analysierbar zu machen. Facebook hatte so große Probleme, die verwendete Software zu verstehen, dass es Hack and Flow erstellte, kommentierte Versionen von PHP und Javascript, um die beiden Sprachen verständlicher zu machen.



Dies ist teilweise unsere eigene Schuld. Das Online-Leben macht uns Spaß, daher lassen wir Websites mit unseren personenbezogenen Daten tun, was sie wollen. Softwareunternehmen reagieren darauf, indem sie neue Funktionen so schnell wie möglich herausbringen und dabei die bequemsten Materialien und Tools auf Kosten der Sicherheit verwenden.

Veränderung wird nicht geschehen, bis wir verlangen, dass sie geschieht. Unsere Software könnte so gut konstruiert und zuverlässig sein wie unsere Gebäude. Um dies zu erreichen, müssen wir alle technische Solidität über Neuheit stellen. Es liegt an uns, das Online-Leben so sicher wie angenehm zu gestalten.

Jean Yang ist Assistenzprofessorin für Informatik an der Carnegie Mellon University und Mitbegründerin von Cybersecurity Factory, einem Accelerator, der sich auf Softwaresicherheit konzentriert.



verbergen