Bugs beheben ist schwer

Software ist wie eine lange Kette mit Millionen von Gliedern.

Ein Glied der KetteEs ist so gut wie unmöglich alle Glieder einzeln und detailliert zu untersuchen.

Ein schwaches GliedEinige Glieder sind schwächer als andere und machen damit die ganze Kette verwundbar. Aber sie zu finden ist wie die Suche nach der sprichwörtlichen Nadel im Heuhaufen.

Eine Schwachstelle in der KetteWenn eine Schwachstelle gefunden wurde, ist es extreme wichtig sie zu schließen. Und zwar RICHTIG.

Die Schwachstelle beheben.Deswegen wird ein Patch erstellt …

Natürlich liegt es dann an Ihnen den Patch aufzuspielen oder Ihre Software zu aktualisieren, um sicherzustellen, dass Ihr System geschützt ist. Leider wird das von vielen nicht getan und stattdessen die Option „Später erinnern“ gewählt. Dabei sind sich User oft gar nicht über die Folgen, die so manch eine offen gelassen Sicherheitslücke hat, bewusst.

Einen Patch herauszugeben beleuchtet Schwachstellen

Wie dem auch sei: Sobald der Patch zur Verfügung steht, wird der Angriffspunkt ins Rampenlicht gerückt. Das schwache Glied der Kette ist entlarvt – es hebt sich von den Millionen anderen Gliedern ab.

Egal ob die Schwachstelle oder der Patch dokumentiert wurden oder nicht, es ist immer möglich den Patch zurückzuentwickeln und die Änderungen, die gemacht wurden, einzusehen (es gibt mehrere fortgeschrittene Tools zu genau diesem Zweck). Indem man sich die Änderungen anschaut, kann man herausfinden was eigentlich wirklich repariert wurde.

Eine neue Schwachstelle

Untersucht man dann noch ganz genau den Teil, für den der Patch gemacht wurde, kann es sein, dass kleinere Schwachstellen gefunden werden, die noch nicht repariert wurden. Da Patches meistens nur einmal im Monat herausgebracht werden, bietet dies einigen Leuten die Möglichkeit, einen einfachen 0-Day zu bekommen, der für einen ganzen Monat unbehoben bleiben könnte!

Bugs beheben ist schwer

Wir sehen also bereits, was für Schwierigkeiten beim Entwickeln eines Patches auf einen zukommen:  Es soll schnell und zuverlässig geschehen, aber es muss dabei mehr berücksichtigt werden, als nur die gefundene Schwachstelle.

In einem älteren Blog haben wir uns angeschaut, wie eine aus alphanumerischen Charakteren erstellte Adobe Flash-Datei einen Angriff auf viele Webseiten ermöglichte. Der ursprüngliche Machbarkeitsnachweis nutzte lediglich die Charaktere 0-9A-Za-z.

Es ist tatsächlich möglich eine Datei zu erstellen, die nur aus alphanumerischen Charakteren besteht.

Und das ist genau das, was der Patch dann repariert hat: Er sah nach, ob die Flash-Datei gänzlich aus diesen Charakteren bestand. Das Risiko selbst war jedoch wesentlich höher: Mit der gleichen Technik war es möglich eine Datei zu erstellen, die durch diesen Filter rutschte. Dazu musste man lediglich einen anderen Charakter, wir zum Beispiel ein „(„ ans Ende hängen und schon wurde der Filter umgangen! Die neue Schwachstelle blieb dann tatsächlich einen ganzen Monat offen (8. Juli bis 12 August).

Mittlerweile ist auch dieser Angriffspunkt längst behoben, aber es zeigt auf jeden Fall auf, das so ein Patch ein zweischneidiges Schwert sein kann: Man bietet den Verteidigern neuen Schutz, aber man beleuchtet für die Angreifer gleichzeitig auch eine alte Schwachstelle. Ja, Bugs beheben ist schwer.

Dieser Artikel ist auch verfügbar in: Englisch

Engine developer