(sanfte Musik) Softwareschwachstellen sind unbeabsichtigte Fehler oder Schwachstellen gefunden in Software, die von einem Angreifer ausgenutzt werden kann. Einige Schwachstellen entstehen, weil von unsachgemäßen Sicherheitskonfigurationen oder Programmierfehlern. Eine Zero-Day-Schwachstelle ist eine Sicherheitslücke in der Software die dem Softwarehersteller bekannt ist aber es gibt keinen Patch, um den Fehler zu beheben. Der Anbieter gibt in der Regel Empfehlungen zur Schadensbegrenzung um eine Ausnutzung der Schwachstelle zu verhindern bis ein Patch entwickelt ist. SQL-Injection ist eine Schwachstelle, die einem Angreifer ermöglicht um nicht autorisierte SQL-Abfragen durchzuführen den eine Anwendung an ihre Datenbank anpasst. Dieses Ergebnis bei unbefugtem Zugriff auf vertrauliche Informationen. Hier ist ein Beispiel einer normalen SQL-Abfrage. Die Kontonummernzeichenfolge wird an eine SQL-Anweisung übergeben. Die Datenbank wird durchsucht, um die Kontonummer abzurufen die mit der eingegebenen Zahl übereinstimmt und gibt alle zugehörigen gespeicherten Daten zurück in der Datenbank über das Konto. Der Code könnte etwa so aussehen. Wenn ein Benutzer eine Kontonummer eingibt im Webseitenformular mit der Bezeichnung, "Bitte geben Sie Ihre Kontonummer ein." Die resultierende SQL-Abfrage sieht folgendermaßen aus. Dieser SQL-Befehl gibt alle zugehörigen Daten zurück mit der eingegebenen Kontonummer. Das funktioniert wie erwartet. Hier ist ein Beispiel für eine SQL-Injection-Abfrage. Ein Angreifer gibt einen SQL-Abfragebefehl ein in das Eingabefeld ein. Anstatt nach der Kontonummer zu suchen, Die Abfrage sucht nach einer Kontonummer oder eins ist gleich eins. Eins gleich eins wird immer wahr sein, also alle Kontodaten aus der Kontonummerntabelle zurückgegeben. Um SQL-Injection-Angriffe zu verhindern, Beachten Sie diese empfohlenen Vorgehensweisen. Führen Sie eine Eingabevalidierung durch. Verwenden Sie eine Whitelist oder eine Zulassungsliste, die bestimmte zulässige Werte enthält, die akzeptiert werden durch das Eingabefeld. Validieren Sie die Eingabe anhand eines bekanntermaßen sicheren Zeichensatzes und Länge und verwenden Sie vorbereitete Anweisungen, um die Eingaben des Benutzers zu berücksichtigen wird nicht als SQL-Anweisung behandelt. Eine weitere Art häufiger Angriffe auf Software-Schwachstellen ist eine Betriebssystem-Befehlsinjektion. Dies geschieht, wenn ein Angreifer dazu in der Lage ist um Systembefehle auf dem Betriebssystem des Geräts auszuführen über eine anfällige Anwendung. Diese Angriffe werden durch eine unzureichende Eingabevalidierung verursacht. Hier ist ein Beispiel für eine veröffentlichte Betriebssystem-Befehlsinjektion auf der Common Weakness Enumeration oder CWE-Liste, eine von der Community entwickelte Liste von Software- und Hardware-Schwächen. In diesem Beispiel der bereitgestellte Eingabewert in der Benutzernamenvariablen wird nicht validiert. Alle bereitgestellten Systembefehle Die Eingabe des Benutzernamens würde akzeptiert und der RM-Befehl würde ausgeführt, um die Dateien zu löschen im Home-Verzeichnis. Eine weitere bewährte Methode zur Verhinderung von Angriffen ist um Konfigurationsfehler innerhalb von Softwarefunktionen zu vermeiden. Unsichere Konfigurationen Softwareeinstellungen können den Benutzer angreifbar machen gegen Angriffe, die diese spezifische Anwendung ausnutzen. Beispiele für Softwarekonfigurationsfehler sind unnötige Funktionen aktiviert oder installiert wie unnötige Ports, Dienste, Seiten, Konten oder Privilegien, Standardkonten mit weiterhin aktivierten Passwörtern und unverändert, Sicherheitsfunktionen wurden nicht implementiert, Software, die veraltet ist und vom Anbieter nicht unterstützt wird. Im August 2021 kam es zu einer Fehlkonfiguration von Microsoft Power Apps 38 Millionen Datensätze offengelegt. Laut UpGuard handelt es sich um sensible Daten einschließlich des COVID-19-Impfstatus, Sozialversicherungsnummern und E-Mail-Adressen wurden fällig offengelegt zu schwachen Standardkonfigurationen für Microsoft Power Apps Hierbei handelt es sich um Low-Code-Tools zum Entwerfen von Apps und öffentliche und private Websites erstellen. Die Sicherheitslücke betraf American Airlines, Regierungsbehörden, und andere Kunden aus zahlreichen Branchen. Als Ergebnis der Exposition Microsoft hat die Software aktualisiert um Tabellenberechtigungen standardmäßig zu aktivieren, Entfernen der Standardkonfiguration das einen anonymen Zugriff ermöglichte. Ein letzter Typ Einer der häufigsten Angriffe auf Software-Schwachstellen ist ein Pufferüberlauf. Ein Puffer ist ein temporärer Lagerraum im Speicher zum Speichern von Daten. Pufferüberlauf ist eine Programmierschwachstelle Dies tritt auf, wenn eine Anwendung mehr Daten speichert im Pufferspeicher größer als die definierte Speichergröße. Nehmen wir zum Beispiel ein Feld Auf einer Webseite ist eine Kontonummer erforderlich. Das Feld erwartet acht Zeichen aber Sie geben stattdessen 10 Zeichen ein, zwei Bytes mehr als erwartet. Die Anwendung akzeptiert die Eingabe und schreibt den 10-stelligen Wert in den Speicher was die erwartete Puffergröße von acht überschreitet. Die Anwendung weist nicht zu einen entsprechend großen Pufferplatz und führt keine Validierungsprüfung durch, um die Größe zu bestätigen des Feldes erwartet, so dass der Pufferüberlauf auftritt. Einige Programmiersprachen wie C oder C++ sind anfälliger für einen Pufferüberlauf weil sie keinen eingebauten Überlaufschutz haben. Java und JavaScript sind weniger anfällig um Überlauf-Schwachstellen zu puffern. Die meisten Pufferüberlauf-Schwachstellen werden verursacht durch unsichere Codierung. Um Pufferüberlauf-Schwachstellen zu verhindern, Erwägen Sie die Einführung sicherer Codierungsprüfungen von Entwicklern durchgeführt. Zu den Überlegungen für Entwickler gehören: Vermeiden riskanter Programmierfunktionen wie STRCPY wenn möglich in anfälligen Programmiersprachen um Überläufe zu puffern, Definieren der geeigneten erwarteten Puffergröße, Durchführen von Eingabevalidierungsprüfungen um die erwartete Feldlänge zu bestätigen und achten Sie auf Compiler-Warnungen und Empfehlungen zur Nutzung sicherer Alternativen der verwendeten Programmierfunktionen.