Sicherere und anfälligere Programmiersprachen

Heute leben wir in der Welt der Unsicherheit und des Mangels an Privatsphäre. Von den Betriebssystemen selbst bis zu den Programmen, die wir täglich verwenden, sind häufig alle Arten von Sicherheitslücken zu finden, die unsere Sicherheit gefährden können. Wessen Schuld ist es jedoch, dass es Sicherheitslücken gibt? Von den Entwicklern? Von Programmiersprachen? Gibt es sichere und unsichere Programmiersprachen? Oder sind wirklich beide Parteien schuld?

Heutige Betriebssysteme und Programme sind wirklich komplexe Projekte. Der kleinste Fehler oder Fehler in einer der Hunderte von Bibliotheken kann dazu führen, dass unser Programm die Benutzer gefährdet. Alle Programmiersprachen sind standardmäßig sicher. Wenn wir sie gut verwenden, müssen sie die Benutzer nicht gefährden. Obwohl es jetzt gibt Sprachen viel anfälliger für Fehler (aufgrund von Pannen, Komplexität oder fehlenden Sicherheitsmaßnahmen), die zu Schwachstellen aller Art führen können.

Sicherere und anfälligere Programmiersprachen

Sicherere Programmiersprachen

Von allen am häufigsten verwendeten Programmiersprachen ist die mit den geringsten Schwachstellen Rubin. Diese Programmiersprache ist nur von 5% der Sicherheitslücken betroffen. Darüber hinaus ist es im Großen und Ganzen eine der sichersten und robustesten Sprachen, da, obwohl mehrere Schwachstellen darin gemeldet wurden, die Möglichkeit, XSS-Angriffe auszuführen, die einzige wirklich besorgniserregende ist. Wenn die sicherste Programmiersprache wäre zu empfehlen, wäre dies die ideale für den Titel.

Open Source-Schwachstellen

C ++ ist eine weitere Programmiersprache mit den wenigsten Sicherheitslücken, die wir finden können, mit nur 6% des anfälligen Codes. Es ist jedoch nicht gerade eines der am meisten debuggten, da es eine große Anzahl von Speicherbeschädigungsproblemen und Pufferfehlern aufweist, die zu komplexeren Computerangriffen führen können.

Fortsetzung der Liste sicherer Programmiersprachen mit weniger Schwachstellen Python. In der Vergangenheit war diese Sprache eine der schlechtesten in Bezug auf die Sicherheit. In den letzten Jahren hat er sich jedoch stark verbessert und die meisten Probleme angegangen, die ihn in der Vergangenheit betroffen haben. Natürlich weist es immer noch die kritischsten Schwachstellen auf, die wir heute finden können, wie z. B. fehlende Eingabevalidierung, Eskalation von Berechtigungen, Informationsverlust und XSS. Wenn wir wissen, wie man in Python programmiert, können wir ein robustes Programm haben. Aber wenn wir falsch programmieren, haben wir buchstäblich ein Sieb.

Und es hat auch etwas Besonderes JavaScript erwähnen . Dies wird auch häufig in der Webentwicklung verwendet und verbirgt nur 11% der Sicherheitslücken. Zu den Hauptschwächen zählen kryptografische Probleme, die uns zwingen, APIs von Drittanbietern zu verwenden, um sie zu lösen.

Sprachen mit mehr Schwachstellen

Auf der anderen Seite ist die erste, die wir finden werden, eine der anfälligsten Programmiersprachen C. Dies ist offensichtlich, da es sich um eine der Programmiersprachen handelt, in der mehr geschriebener Code (insbesondere alter Code) vorhanden ist. Daher ist die Wahrscheinlichkeit, dass in diesem Code Schwachstellen entdeckt werden, sehr hoch. 47% der insgesamt gefundenen Sicherheitslücken befinden sich in Code, der in dieser Programmiersprache geschrieben wurde. Es wurden jedoch nur zwei Fehler gefunden, die für die Sprache spezifisch sind: ein Pufferfehler und unterschiedliche Validierungsprobleme.

PHP ist eine der am häufigsten verwendeten Sprachen in der Webprogrammierung (Backend) und daher eine der auffälligsten für Hacker. Dies ist die zweite Programmiersprache mit den meisten Sicherheitslücken (17% der Gesamtzahl). Am auffälligsten ist, dass diese Sprache die einzige ist, die kritische Sicherheitslücken wie SQL Injection aufweist und die auch über XSS ausgenutzt werden kann. Zwei stark ausgenutzte Sicherheitslücken im gesamten Netzwerk, die schwer zu beseitigen sind.

Und natürlich konnten wir nicht fertig werden, ohne darüber zu sprechen Java. Die vor einigen Jahren verwendete Multiplattform-Programmiersprache ist aufgrund ihrer Komplexität auch eine der verborgensten Sicherheitslücken im Inneren. 12% der Sicherheitslücken finden sich in dieser Programmiersprache, die zwar in letzter Zeit an Popularität verloren hat, aber immer noch eine der Grundpfeiler von ist Android.

Wiederverwendungscode: Vorteil oder Risiko?

Derzeit ist es möglich, eine große Menge an Open Source auf Plattformen wie GitHub zu finden. Dieser Code kann abhängig von Ihrer Lizenz frei in anderen Projekttypen wiederverwendet werden, was uns viel Zeit bei der Gestaltung unserer Programme sparen kann. Die Wiederverwendung von Code verbirgt jedoch eines von OpenSource's größte Probleme : Schwachstellen.

Es ist sehr verbreitet für alle Arten von Entwicklern, einschließlich großer Unternehmen wie Microsoft oder Google, um offene Bibliotheken zu nutzen und Benutzern bestimmte Funktionen und Merkmale zur Verfügung zu stellen. So weit so gut, da es darüber hinaus ein wenig Transparenz für die undurchsichtigen Projekte bietet, die diese Unternehmen normalerweise erstellen. Wir müssen jedoch ein sehr wichtiges Handicap berücksichtigen: Eine Sicherheitsanfälligkeit in einer Open Source-Bibliothek gefährdet automatisch alle Projekte, die sie verwenden.

Das haben wir schon gesehen Hauptschwachstellen (wie OpenSSL), die die Sicherheit von Tausenden von Programmen und Plattformen auf der ganzen Welt in Frage gestellt haben. Wenn eine Sicherheitsanfälligkeit dieses Typs entdeckt wird, muss einerseits der Entwickler des ursprünglichen Projekts seine Bibliothek aktualisieren und andererseits die Entwickler der anfälligen Programme die neue Version einschließen in ihrem Programm durch ein Update.

Wiederverwendung von Code ist eines der Merkmale moderner Programme und Systeme. Wir sollten uns jedoch niemals selbst vertrauen, da die Wahrscheinlichkeit, dass in dem von uns verwendeten Code eine Sicherheitsanfälligkeit auftritt, viel höher ist, als wenn wir den Code selbst erstellt hätten.