Sichere Programmierung - Einfluss der Sprachwahl

Sichere Programmierung

Einfluss der Sprachwahl

Marc Ruef
von Marc Ruef
Lesezeit: 3 Minuten

Ein Computer ist um die Ausführung einzelner Instruktionen bemüht. Diese Instruktionen sind in ihrer reinsten Form als Reihen von Nullen uns Einsen zu verstehen. Für Menschen ist es ganz besonders schwierig, wohldefinierte Programme direkt in dieser Maschinensprache zu schreiben. Aus diesem Grund wurden höhere Programmiersprachen (z.B. FORTRAN, Pascal und Java) entwickelt.

In diesen werden Schlüsselwörter und einfache Konstrukte eingesetzt, um komplexe Abläufe abbilden zu können. Durch Variablenzuweisungen, erweiterte Kontrollstrukturen und andere Konzepte wird es für Programmierer verhältnismässig einfach, umfassende Applikationen zu schreiben. Doch auch hier muss das Programm vor der Ausführung durch den Computer in Maschinencode umgewandelt werden. Diese Aufgabe wird durch einen Compiler wahrgenommen.

Grundsätzlich kann man nicht sagen, dass eine Programmiersprache sicherer ist als eine andere. Eine Programmiersprache selbst ist schliesslich nur eine alternative Darstellung einer bestimmten Befehlsabfolge. Die Sicherheit der Anwendung wird in erster Linie durch die Richtigkeit dieser Anweisungen und deren Abläufe erreicht.

Eine Sprache, die jedoch besonders einfach gehalten ist und sich damit intuitiv benutzen lässt, wird jedoch weniger zu fehleranfälligen Entwicklungen führen. Ein möglichst einfacher Syntax sowie eine strenge Prüfung semantischer Gegebenheiten wird dabei helfen, sichere Anwendungen zu schreiben.

Die Umwandlung der Programmiersprache in den ausführbaren Maschinencode durch den Compiler hat weiterführenden Einfluss auf die Sicherheit. Bei dieser Übersetzung muss die abstrakte Logik der Programmiersprache in den linearen Ablauf des Maschinencodes übertragen werden. Fehler in diesem Prozess können zu Schwachstellen in der finalen Programmnutzung führen.

Ist ein Compiler beispielsweise nicht in der Lage den für eine Variable effektiv zu nutzenden Speicher richtig zu alloziieren, kann dies zu einer klassischen Pufferüberlauf-Schwachstelle führen. Dieses Problem tritt vorzugsweise in der Sprache C auf, welche leider einige undurchsichtige und leicht falsch zu nutzende Funktionen wie strcpy() und gets() anbietet. Die Liberalität der Sprache im Umgang mit eben diesen Funktionen führt erst die Möglichkeit derartiger Schwachstellen ein.

In der Diskussion um sichere Programmiersprachen wird sich immerwieder gegen PHP geäussert. Effektive Argumente hierzu finden sich leider selten. Ein Aspekt mag sein, dass die Sprache eine Vielzahl an redundanten Built-In Funktionen bereitstellt, die jeweils mit gänzlich unterschiedlichem Syntax daherkommen (z.B. chop() und rtrim()). Dies begünstigt den Umstand der fehlerhaften Nutzung einzeler Funktionsaufrufe, was aber auf die Unzulänglichkeit des Programmierers zurückzuführen ist.

Die wirklich mit PHP in Verbindung zu bringenden Schwachstellen sind schlussendlich nur jene, die sich in der Zend-Engine finden, welche für die Interpretation des PHP-Codes zuständig ist. Bei der Übersetzung werden also auch hier Fehler begangen, die zu Speicherschutzverletzungen führen und damit erweiterte Rechte erlangen lassen können. Die Sprache PHP selbst, also die Konstruktion der Schlüsselworte als solche, kann auch hier nur mehr wenig dafür.

Dieser kurze Abriss sollte zeigen, dass die Diskussion zu sicheren Programmiersprachen genauso unfruchtbar ist wie der Disput darüber, welches das bessere Betriebssystem ist. Schlussendlich hat der Entwickler sowie der Benutzer gewisse Anforderungen an eine Lösung. Eine gute Programmiersprache ist deshalb je nachdem einfach, einheitlich, orthogonal, systemnah, abstrahiert, verständlich, kaskadiert, modular, sicher, aussagekräftig, effizient, komfortabel und populär. Die ultimative Sprache, welche alle diese Wünsche gleichermassen erfüllt, ohne für sich selbst erneut Nachteile einzuführen, gibt es nach wie vor nicht.

Über den Autor

Marc Ruef

Marc Ruef ist seit Ende der 1990er Jahre im Cybersecurity-Bereich aktiv. Er hat vor allem im deutschsprachigen Raum aufgrund der Vielzahl durch ihn veröffentlichten Fachpublikationen und Bücher – dazu gehört besonders Die Kunst des Penetration Testing – Bekanntheit erlangt. Er ist Dozent an verschiedenen Fakultäten, darunter ETH, HWZ, HSLU und IKF. (ORCID 0000-0002-1328-6357)

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

×
Konkrete Kritik an CVSS4

Konkrete Kritik an CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentisierung

Voice Authentisierung

Marc Ruef

Bug-Bounty

Bug-Bounty

Marc Ruef

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv