Was es mit Software-Schwachstellen auf sich hat

Warum braucht es nervige Updates? Kann man Software nicht von Anfang an ohne Schwachstellen bauen? Wir erklären, was Software-Schwachstellen sind, zeigen, wie sie aussehen und geben Tipps, wie Sie diese «Plage» in den Griff bekommen.

Software-Fehler und Software-Schwachstellen haben vieles gemeinsam. Wir zeigen, wie man die Sicherheit erhöhnt und warum es wichtig ist dabei diese Fehler zu kennen.

Wie Softwarefehler entstehen und aussehen

Grundsätzlich sind Programme nichts anderes als eine Reihe von Befehlen, welche durch einen Computer (auch Smartphones und Tablets sind Computer) nach einem bestimmten Regelwerk ausgeführt werden. Dieses Regelwerk wird durch die Befehlsarchitektur des Computers bzw. eine Programmiersprache vorgegeben.

Beim Schreiben eines Computerprogramms müssen wir Menschen uns an diese Regeln halten, ansonsten kann das System die Befehle nicht korrekt ausführen. Doch selbst wenn alle Regeln eingehalten werden, ist dies keine Garantie für das korrekte Funktionieren eines Programms. Anders als ein Mensch, kann ein Computer nicht hinterfragen, was Sinn und Zweck der Instruktionen ist, sondern diese lediglich stur ausführen.

Ein Beispiel

Isabelle übt sich in der Kunst des Programmierens und schreibt ein Programm, welches zwei minus eins rechnet.

Die Dokumentation ihrer Programmiersprache gibt vor, dass mit dem Befehl MINUS ZahlA ZahlB die ZahlA von ZahlB subtrahiert wird.

Da sie sich nicht mehr genau an die Dokumentation erinnert, schreibt sie den Befehl folgendermassen:

2 MINUS 1

Das System erwartet jedoch zuerst das Stichwort MINUS und dann die beiden Zahlen, folglich kann es den Befehl nicht ausführen und gibt klassischerweise eine Fehlermeldung aus. Der Fehler wird also durch das System erkannt. Isabelle schaut in der Dokumentation nach und ändert die Zeile kurzerhand zu:

MINUS 2 1

Wird das System dieses Mal eine Fehlermeldung ausgeben? Nein, der Befehl entspricht den Vorgaben der Programmiersprache: Zuerst der Befehl, dann zwei Zahlen.

Läuft das Programm fehlerfrei? Leider nein, das System befolgt die Regeln der Programmiersprache und rechnet die zweite Zahl minus die erste Zahl, also 1 – 2 anstelle von den gewünschten 2 – 1.

Wie Sie sehen, können sich selbst in einem solch einfachen Programm Fehler einschleichen. Entsprechend ist es naheliegend, dass alltäglich genutzten Programme mit Millionen von Codezeilen Fehler aufweisen, welche weder von Mensch noch von Maschine entdeckt werden.

Schwachstellen sind besondere Softwarefehler

Was haben Softwarefehler mit Schwachstellen zu tun? Sehr viel, denn eine Schwachstelle ist ein Softwarefehler, welcher sich negativ auf die Sicherheit Ihrer Nutzerschaft auswirken kann.

Ein Beispiel für Softwarefehler

Isabelle schreibt für ihre jüngeren Geschwister Pascal und Julia ein Ratespiel als Computerprogramm. Die Regeln sind einfach, Pascal beginnt und gibt eine Zahl ein, Julia muss diese erraten. Die Programmiersprache, welche Isabelle nutzt, stellt unter anderem folgende Befehle zur Verfügung:

Mit dem Befehl EINGABE X wird das System instruiert, auf eine Tastatureingabe zu warten und den eingegebenen Wert an den Speicherort mit der Adresse X zu schreiben.

Der Befehl MINUSV AdresseA AdresseB geht etwas weiter als der Befehl MINUS aus dem vorherigen Beispiel. Hier werden die Zahlen aus den Speicherorten mit den Adressen A und B voneinander subtrahiert. Ist in A oder B keine Zahl, sondern eine weitere Adresse abgelegt, wird der an dieser Adresse gespeicherte Wert genutzt.

EINGABE X
EINGABE Y
MINUSV Y X
… WENN das Ergebnis 0 ist, DANN gewinnt Julia SONST gewinnt Pascal …

Was wäre aber, wenn Julia anstelle einer Zahl die Speicheradresse von Pascals Eingabe eingibt?Da Pascal irgendeine Zahl wählen kann und Julia nur ein Versuch hat diese zu erraten, gewinnt er praktisch jedes Spiel.

An der Stelle MINUSV Y X wird in diesem Fall das Programm an der Speicherstelle Y die Adresse zur Speicherstelle X finden. Dort steht jedoch die Eingabe von Pascal, folglich wird das Ergebnis der Operation immer 0 sein. Egal welche Zahl Pascal eingibt, Julia wird mit dieser Strategie das Spiel immer gewinnen.

Im vorliegenden Beispiel kann wohl kaum von einer Schwachstelle gesprochen werden, da es sich lediglich um ein Spiel handelt. Was aber, wenn derselbe Programmausschnitt bei einer Zugriffskontrolle (z.B. dem Vergleich einer Passworteingabe mit dem Passwort) oder der Verarbeitung von Geldtransaktionen verwendet wird? Ob ein Softwarefehler eine Schwachstelle darstellt, hängt auch von der Art und Weise ab, wie und in welchem Umfeld die Anwendung genutzt wird. Da das Einsatzumfeld einer Software schwer abzuschätzen ist, empfiehlt es sich sämtliche Fehler zu beheben, welche gefunden werden.

Um den Fehler in unserem Beispiel zu beheben, könnte Isabelle das Programm nach jeder Eingabe prüfen lassen, ob tatsächlich nur eine Zahl und nicht eine Speicheradresse oder sonst irgendetwas eingegeben wurde.

EINGABE X
… WENN Wert von X keine Zahl DANN abbrechen …
EINGABE Y
… WENN Wert von Y keine Zahl DANN abbrechen …
MINUSV Y X
… WENN das Ergebnis 0 ist, DANN gewinnt Julia sonnst gewinnt Pascal …

Ist ein Softwarefehler einmal behoben, muss die Korrektur auch auf allen Systemen, auf welchen die fehlerhafte Kopie des Programms installiert ist, angewendet werden. Dies geschieht idealerweise über eine automatische Update-Funktion. Leider verfügen nicht alle Programme über solch eine Funktion oder erhalten gar keine Updates mehr. In beiden Fällen muss von Hand nach Updates bzw. nach Alternativen gesucht und diese installiert werden.

Was Sie tun können für mehr Sicherheit

Installieren Sie ausschliesslich Software, welche Sie benötigen.

Denn je weniger Programme auf Ihren Geräten installiert sind, desto weniger Fehler sind auf diesem vorhanden. Dies verringert effektiv die Angriffsfläche für Hacker und Malware.

Um dies auf Unternehmensebene sicherzustellen, empfiehlt es sich in erster Linie eine entsprechende Vorgabe zu verabschieden und die Installation von Software einem Bewilligungs- und Freigabeprozess zu unterstellen. Diese kann bei einer geringen Anzahl an Geräten durch manuelle Kontrollen durchgesetzt werden. Als zusätzliche Massnahme kann die Installation von Software durch Mitarbeitende technisch unterbunden werden.

Bei grösseren Flotten besteht die Möglichkeit die Freigabe und Installation von Software über eine firmenweite Softwareablage, ähnlich wie bei einem App-Store, zu steuern.

Installieren Sie Updates zeitnah nach ihrem Erscheinungsdatum.

Denn auch potenzielle Angreifer erfahren von den Updates und können durch Vergleichen der neuen mit der alten Version relativ schnell auf die behobenen Schwachstellen schliessen. Um dies sicherzustellen, empfiehlt es sich einen unternehmensweiten Patchmanagement-Prozess zu etablieren. Dabei sind jeweils folgende Schritte zu beachten:

  • Identifikation der betroffenen Systeme und der hierfür geeigneten Sicherheitsupdates.
  • Beschaffung der Sicherheitsupdates aus einer vertrauenswürdigen Quelle, insbesondere auch für Systeme ohne direkten Internet-Zugang.
  • Vorgängiges Testen von Wirksamkeit und «Nebenwirkungen» von Sicherheitsupdates auf nicht kritischen Systemen.
  • Systemabhängige Freigabe von Sicherheitsupdates und Terminierung der Installation ausserhalb der Produktionszeiten.
  • Bei kritischen Systemen: Planung von temporären Ausweichlösungen und Fallback-Szenarien.
  • Dokumentation der vorgenommenen Änderungen.

Da es sich hierbei um einen rollenden Prozess handelt, empfiehlt sich das Festlegen von periodischen, fixen Zeitfenstern für die Wartung der Systeme. So können Sicherheitsupdates über eine gewisse Zeit gesammelt, geprüft und vorbereitet werden, deren Installation jedoch bis zum nächsten Zeitfenster aufgeschoben werden.

Schützen Sie sich und Ihr Unternehmen auch vor anderen Risiken.

Denn Softwareschwachstellen sind nicht das einzige Risiko für Ihre Daten und Geräte. Beachten Sie die Tipps für KMU, Informationssicherheit versus Datenschutz, Phishing, Smishing, Vishing: Achtung Datendiebstahl sowie 5 Schritte für Ihre digitale Sicherheit.

Autor: Fernand Dubler, Wissenschaftlicher Mitarbeiter Informationssicherheit & Datenschutz, Team «eBanking – aber sicher!» (www.ebas.ch), Hochschule Luzern – Informatik

«eBanking – aber sicher!» ist eine unabhängige Plattform der Hochschule Luzern – Informatik, die Sie dabei unterstützt, Ihre persönliche Informationssicherheit mit Fokus auf E-Banking wahrzunehmen. Auf der Website www.ebas.ch finden Interessierte praxisnahe Informationen rund um das Thema Informationssicherheit und notwendige Massnahmen und Verhaltensregeln für eine sichere Anwendung von E-Banking-Applikationen.

Die Kommentarfunktion ist geschlossen.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More