Memory Safety: Ein Interview über Rust und die Zukunft sicherer Softwareentwicklung, Teil 2
Im ersten Teil wurde die Problematik von Memory-Safety-Schwachstellen und mögliche Lösungsansätze beleuchtet. Die Programmiersprache Rust gilt dabei als vielversprechender Weg zu sichererer Software. Hardware-Security-Experte Pascal Mainini (BFH TI) erklärt im Interview, warum sich der Blick auf Rust lohnt, wo die grössten Hürden für Unternehmen liegen und in welchen Bereichen die Sprache bereits heute an Bedeutung gewinnt.
[Herren]: Sie unterrichten das Modul Introduction to Rust and Embedded Systems und beschäftigen sich intensiv mit Rust. Wie sind Sie erstmals mit dieser Sprache in Berührung gekommen, und was hat Ihr Interesse speziell an Rust geweckt?
[Mainini]: Ich hatte schon von dieser Programmiersprache gehört, jedoch noch keine Erfahrung damit. An einer Abteilungskonferenz fragte der damalige Leiter Informatik, ob jemand ein Betriebssystem namens «Tock» kennt; dieses ist in Rust geschrieben und hat auch sonst interessante Eigenschaften. Ich war dann ein bisschen mutig und habe mich gemeldet – obwohl ich es nicht kannte. So bin ich dann zu diesem Wahlmodul gekommen, welches ich nun bereits zum 6. Mal unterrichte.
[Herren]: Warum sollte jemand aus Ihrer Sicht auf Rust setzen? Warum nicht z.B. bei der etablierten Sprache C++ bleiben, welche auch zunehmend auf Memory-Safety setzt?
[Mainini]: Die Frage ist begründet. Im Vergleich zu den Zeiten, als ich mit Rust begonnen habe, hat effektiv auch bei anderen Sprachen ein Umdenken eingesetzt. Es ist auch ein bisschen eine Frage der Philosophie: Ich kann ja z.B. auch mit der Sprache C speichersichere Programme schreiben, die notwendige Vorsicht und der Aufwand sind einfach bedeutend höher. Nehme ich dann nicht besser gleich eine Sprache, die die entsprechenden Prinzipien bereits grundlegend eingebaut hat?
Andererseits kann ich auch in Rust nicht-speichersichere Programme schreiben, doch zwingt mich die Sprache, solche Bereiche explizit zu markieren. Dies ist aus meiner Sicht ein grosser Vorteil und besser als das umgekehrte Vorgehen. Auch gibt es seit einiger Zeit nun zertifizierte Compiler, welche den Einsatz der Sprache in sicherheitsrelevanten Bereichen wie z.B. in der Automobiltechnik erst ermöglichen.
[Herren]: Wie sehen Sie die Zukunft von Rust? Werden Firmen vermehrt auf Rust umstellen?
[Mainini]: Es gibt wie immer die Early Adopters, aber auch solche die jetzt schon voll mit dabei sind. Dazwischen gibt es ein grosses Feld, welches beobachtet und vielleicht zum testen mal eine einzelne Applikation in Rust entwickelt. Auf Konferenzen sieht man aber auch grosse Namen, welche voll auf Rust setzen, auch gibt es im Consulting-Bereich mittlerweile einiges an Angeboten. Ich denke, in der Industrie ist das Thema definitiv angekommen.
[Herren]: In welchen Branchen oder Bereichen wird Rust an Bedeutung gewinnen?
[Mainini]: Rust ist als Sprache grundsätzlich universell einsetzbar, aber es gibt Bereiche, in denen die Adoption schon weiter fortgeschritten ist. Einerseits natürlich HW-nahe Programmierung, aber auch z.B. der Cloud-Bereich. Da Rust eine sehr effiziente Sprache ist, trägt sie auch zur Energieeffizienz bei, wenn Applikationen auf tausenden von Servern laufen. Last but not least ist Rust auch die einzige Sprache, die mittlerweile neben C zur Entwicklung von Treibern für den Linux-Kernel genutzt werden kann.
[Herren]: Was sind die grössten Hürden für Firmen, die mehr auf Rust setzen möchten?
[Mainini]: Ich denke sicherlich die Personalsituation: Programmierer*innen die seit 20 Jahren C++ programmieren, lassen sich auf dem Markt finden – bei Rust ist dies noch nicht der Fall. Auch mögliche Kosten, die immer auftreten wenn etablierte Prozesse angepasst werden müssen. Und auch eine gewisse Unsicherheit bezüglich der zukünftigen Weiterentwicklung von Rust, wobei ich denke, dass diese immer kleiner wird.
[Herren]: Denken Sie, dass wenn Rust in Zukunft an Bedeutung gewinnt, Sicherheitslücken die mit Speichersicherheit zusammenhängen, weniger werden?
[Mainini]: Absolut. Das ist ja das Ziel der Industrie, aber auch der Politik. Es gibt ja bis zum weissen Haus hin entsprechende Äusserungen. Es geht hier nicht primär um Rust, aber um Speichersicherheit – ich teile dieses Ziel!
[Herren]: Gibt es irgendwelche Entwicklungen, wo Sie in Zukunft darauf gespannt sind, wie sich Rust weiterentwickeln wird?
[Mainini]: Ja, einerseits die Entwicklungen beim Linux-Kernel, da gibt es viele kontroverse Diskussionen, obwohl das Thema gesetzt ist. Und auch im Embedded-Bereich bin ich gespannt: hier gehen die Dinge in der Regel etwas langsamer vonstatten. Es sind Firmen, die lange auf dem Markt sind, es gibt etablierte Prozesse und Systeme.
[Herren]: Was würden Sie jetzt zukünftigen Entwickler*innen raten? Lohnt es sich, Rust genauer anzuschauen?
[Mainini]: Es lohnt sich definitiv, Rust genauer anzuschauen. Selbst wenn man danach nicht in Rust programmiert, sensibilisiert es enorm. Ich finde es generell eine gute Idee, sich verschiedene Sprachen anzuschauen, und Rust ist eine Sprache mit interessanten Konzepten.
Was ist Memory-Safety?
Memory-Safety beschreibt, wie sicher und korrekt eine Software mit der Verwaltung, Zuweisung und Freigabe von Arbeitsspeicher (RAM) umgeht. Im Arbeitsspeicher werden sowohl Programmcode (die Anweisungen, die der Computer ausführt) als auch Daten (wie Benutzerdaten oder Ergebnisse von Berechnungen) gespeichert. Fehlerhafte Zugriffe auf den Arbeitsspeicher können von Angreifer*innen ausgenutzt werden, um beispielsweise Schadcode auszuführen oder vertrauliche Daten auszulesen. Memory-Safety bleibt trotz jahrelanger Forschung eine der häufigsten Schwachstellenursachen in moderner Software.
Wo sind Memory-Safety-Schwachstellen in der Praxis zu finden?
Aus einer Auswertung von Daten der National Vulnerability Database (NVD) geht hervor, dass anhaltend ungefähr 15-20% der publizierten Schwachstellen, gesehen über die ganze IT-Landschaft, mit Memory-Safety zusammenhängen. Solche Schwachstellen treten auch in alltäglich genutzten Systemen verschiedenster Art auf.
Was sind Ansätze zur Verbesserung von Memory-Safety?
Um Memory-Safety-Schwachstellen zu vermeiden, wird empfohlen, dass Programmcode möglichst in Memory-Safe-Sprachen geschrieben wird. Sprachen wie Python, Java und C# erreichen dies durch automatische Speicherverwaltung (z.B. mit einem Garbage Collector). Die Sprache Rust hingegen setzt auf strenge Regeln zur Speicherverwaltung, die Memory-Safety bereits zur Entwicklungszeit garantieren, ohne zusätzlichen Garbage Collector.
Interessiert?
Um mehr über das Thema Memory-Safety zu erfahren, den ganzen Artikel dazu hier lesen.
Create PDF


Beiträge als RSS
Dein Kommentar
An Diskussion beteiligen?Hinterlasse uns Deinen Kommentar!