Software-Sicherheit – Teil 3

Exploits mit Security-Funktionen wie ASLR, DEP und Bounds Checking stoppen

Seite: 3/3

Firmen zum Thema

Alternative Sprachen mit automatischem Bounds Checking

Ein vollkommen anderer Ansatz, um Pufferüberläufe und weitere C-typische Fehler zu vermeiden, ist der Wechsel zu einer moderneren Sprache. Java- oder .NET-Programme führen automatisch Bounds Checking durch, sodass Buffer Overflows sofort abgefangen werden. Bei Skriptsprachen wie PHP, Perl, Python und anderen sieht die Lage ähnlich positiv aus.

Leider kann die Programmiersprache gerade bei größeren Projekten selten frei und willkürlich gewählt werden, sondern ist vielmehr an Abhängigkeiten und Bedingungen geknüpft. Darüber hinaus hat jede Sprache eigene Stolpersteine, die sich als genauso gefährlich erweisen können wie übergelaufene Puffer.

Mit dem Java Native Interface (JNI) ist es sogar möglich, von Bibliotheksfunktionen außerhalb der virtuellen Maschine Gebrauch zu machen. Über diesen Umweg könnten sich dann auch wieder alle möglichen Bugs einschleichen.

Und letzten Endes sind die Interpreter und virtuellen Maschinen der vielen modernen Programmiersprachen meist selbst in C oder C++ geschrieben und somit auch vor den genannten Risiken nicht gefeit.

Weiterführende Literatur

All jene, welche die Themen dieses Artikels bzw. der gesamten Artikelreihe noch weiter vertiefen wollen, finden in den Büchern „Aus dem Tagebuch eines Bughunters“ sowie „Buffer Overflows und Format-String-Schwachstellen“ von Tobias Klein eine Vielzahl detailliert und spannend beschriebener Beispiele.

Inhalt

  • Seite 1: Unsichere Bibliotheksfunktionen mit Libsafe abfangen
  • Seite 2: Stack-Overflows mit Compiler-Erweiterungen unterbinden
  • Seite 3: Alternative Sprachen mit automatischem Bounds Checking

(ID:2050475)