Das Internet kann aufgrund von Sprachen wie C und C ++, die zu Sicherheitslücken beitragen, schwerwiegende Probleme haben

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels " Internet-Aurait de sérieux problèmes à Ursache de langages comme C et C ++ favorisant la survenue de failles " (Französisch).

Aber nur wenige Entwickler interessieren sich dafür.


Ein Fehler betrifft das iPhone, ein anderer - Windows und der dritte - Server, die unter Linux ausgeführt werden. Auf den ersten Blick haben diese Fehler nichts gemeinsam, da sie sich auf verschiedene Plattformen beziehen: Android, iOS, MacOS, Windows, Linux. In Wirklichkeit ist jedoch alles anders, so Alex Gaynor, Software-Sicherheitsingenieur bei Mozilla, der zuvor für USDS (United States Digital Service) gearbeitet hat.

[1]
Weitere Details - https://www.usds.gov , im Folgenden ca. Übersetzer.

Während des dritten Weakest Link, einer jährlichen Veranstaltung, die von Motherboard Vice organisiert wird,


Zum Thema Computer-Hacking und Cybersicherheit in der Zukunft hat Alex Gaynor ein ernstes Problem aufgeworfen, das seiner Meinung nach das Internet bedrohen könnte, aber paradoxerweise Entwickler völlig gleichgültig lässt.

Gaynor erklärte, dass die drei zuvor genannten Fehler vorliegen, da die Software, die sie auf verschiedenen Plattformen betreffen, mit Programmiersprachen geschrieben wurde, die eine unangenehme Tendenz haben, Fehler wie „Speichersicherheit“ zu verursachen und den Zugriff auf nicht zugewiesene Speicherbereiche zu ermöglichen.

[3]
Höchstwahrscheinlich war gemeint, dass das Verweisen auf das 6. Element eines Arrays, das aus 5 Elementen besteht, zulässig ist, obwohl in anderen Programmiersprachen, die „sicherer“ sind, zumindest eine Fehlermeldung angezeigt wird.

Diese Kategorie von Fehlern kann beim Zugriff auf den Speicher zu Fehlern und Sicherheitslücken führen.

Durch das Zulassen von Fehlern wie „Speichersicherheit“ können Programmiersprachen wie C und C ++ über die Jahre einen nahezu endlosen Strom kritischer Sicherheitslücken verbreiten. Ein Beispiel für diese Sicherheitsanfälligkeiten ist:

  • Typ Nichtübereinstimmung
  • Pufferüberlauf
  • Überlauf einer ganzzahligen Variablen
  • Verwendung nach freier Verwundbarkeit

Typinkongruenz kann auftreten, wenn ein Codetyp den an ihn übergebenen Objekttyp nicht überprüft und blind verwendet. Diese Situation kann gefährlich sein. Zusätzlich zu Typinkongruenzen werden dem falschen Teil des Codes falsche Funktionszeiger oder falsche Daten zugeordnet, was in einigen Fällen zu seiner Ausführung führen kann.

Der Pufferüberlauf (oder "Pufferüberlauf" in Englisch) ist eine kritische Sicherheitslücke, die auftritt, wenn ein Benutzer eine Zeichenfolge eingibt, die aus einem Array von Zeichen mit unzureichender Größe besteht. Dies führt dazu, dass Daten außerhalb des für das Array zugewiesenen Speicherbereichs geschrieben werden. HeartBleed beispielsweise, von dem 17% der sicheren Server im Internet betroffen waren, war eine Sicherheitsanfälligkeit durch Pufferüberlauf, die es ihm ermöglichte, nach dem Ende der Liste 60 KB zu lesen, einschließlich Kennwörtern und anderen Benutzerdaten.

Ein ganzzahliger Überlauf ist eine schwer zu erkennende Sicherheitsanfälligkeit, die die Tatsache ausnutzt, dass Zahlen einen bestimmten Wert nicht überschreiten können. Dies hängt von der Anzahl der zur Darstellung verwendeten Bits und der Codierungsmethode ab.

Die Sicherheitsanfälligkeit "Use after Free" tritt normalerweise auf, wenn ein Zeiger oder Daten im Speicher verwendet werden, wenn der Zeiger (oder Speicherblock) bereits freigegeben ist.

Zusammen sind diese Sicherheitsanfälligkeiten die Exploits, die in gängiger Software wie Firefox, Chrome, Windows, Android oder iOS am häufigsten vorkommen. Gaynor hat bereits mindestens 400 gezählt und behauptet: „Ich habe die Sicherheit dieser Projekte seit über einem Jahr überwacht, und in fast allen Versionen dieser Produkte ist mehr als die Hälfte der Sicherheitslücken Speichersicherheit. Noch alarmierender ist, dass schwerwiegende und kritische Schwachstellen [...] fast immer diesen Typ haben. “

Trotz der erheblichen Risiken, die mit der Sicherheit der von ihnen unterstützten Software verbunden sind, werden speicherunsichere Programmiersprachen wie C oder C ++ weiterhin von Entwicklern verwendet, während bewährte Alternativen wie Rust und Swift in Betracht gezogen werden können. als Sprachen sind "Memory Safe" selten.

Dies kann auf die Tatsache zurückzuführen sein, dass Entwickler für ein neues Projekt in der Regel eine Programmiersprache auswählen, die auf Sprachen basiert, die ihr Team kennt, Leistung und Bibliothekssysteme, die sich aus dieser Auswahl ergeben können. Bei Entscheidungen wird die damit verbundene Sicherheitskomponente fast nie oder zumindest nicht ausreichend berücksichtigt, sagte Gaynor.

Darüber hinaus sind die meisten Softwareprojekte, auch die wichtigsten für die Internetsicherheit, nicht neu. Sie wurden vor zehn Jahren ins Leben gerufen, wenn nicht mehr. Linux, OpenSSL und der Apache-Webserver sind beispielsweise mehr als zwanzig Jahre alt. Bei großen Projekten wie diesen ist es nicht möglich, den gesamten Code in einer neuen Sprache neu zu schreiben. Sie müssen schrittweise transformiert werden, was bedeutet, dass Projekte in zwei verschiedenen Sprachen anstatt in einer geschrieben und gespeichert werden müssen. Dies impliziert auch die Notwendigkeit, ein großes Team zu bilden, was viel Zeit in Anspruch nimmt und mehr Geld erfordert.

Das größte Problem ist schließlich, dass viele Entwickler nicht glauben, dass das Problem überhaupt besteht. Sie glauben, dass das Problem nicht darin besteht, dass Sprachen wie C oder C ++ zu Sicherheitslücken beitragen, sondern dass andere Programmierer fehlerhaften Code schreiben. Sie glauben, dass es keine Probleme mit diesen angeblich "speicherunsicheren" Sprachen gibt, weil kein Code perfekt ist, nur die Leute nicht wissen, wie man sie benutzt.

Was denkst du darüber?



Ich stelle fest, dass auch eine fundierte Kritik an der Übersetzung willkommen ist.

Vielen Dank für Ihre Aufmerksamkeit!

Source: https://habr.com/ru/post/de432502/


All Articles