Ein Dateiparsing-Fehler in Easy Grade Pro 4.1 wird als lehrreiches Beispiel genutzt, um zu zeigen, wie Anfänger durch Reverse Engineering mit der Schwachstellenforschung beginnen können.
Ein Lehrbeispiel, das Anfängern zeigen soll, dass Schwachstellenforschung durch Reverse Engineering von Anfang an möglich ist.
Dieses Repository entstand aus dem Bedürfnis, ein einfaches Beispiel zu haben, das beim Unterrichten von Anfängern verwendet werden kann, die mit der Schwachstellenforschung beginnen, insbesondere von denen, die sich für Reverse Engineering interessieren.
Nach Abschluss eines Kurses, einer Schulung oder eines Masterstudiengangs im Bereich Binary Exploitation oder Binary-Analyse haben viele Studenten das Gefühl, dass echte Schwachstellenforschung weit über ihrem Niveau liegt. Sie verbinden Reverse Engineering normalerweise mit sehr fortgeschrittenen Themen wie Kernel-Schwachstellen, Browser-Exploitation, Firmware-Forschung oder komplexen modernen Zielen, und deshalb glauben sie, noch nicht bereit zu sein. In der Praxis liegt das Problem nicht im Mangel an Wissen, sondern im Fehlen eines realistischen Ausgangspunkts.
Ich wollte ein Beispiel, das zeigt, dass es mit den in einem Grundkurs erlernten Fähigkeiten bereits möglich ist, ein reales Programm zu nehmen, zu verstehen, wie es funktioniert, einen Absturz auszulösen und einen echten Fehler zu identifizieren.
Dieses Repository ist genau diese Art von Beispiel. Es geht nicht darum, eine komplexe Schwachstelle zu finden. Es geht darum zu zeigen, dass Anfänger mit etwas Kleinem, Reproduzierbarem und Verständlichem beginnen und trotzdem echte Schwachstellenforschung betreiben können.
Dieses Repository steht in direktem Zusammenhang mit meinem Vortrag "Der Weg, der zu Ihrer ersten CVE führt", in dem ich erkläre, dass es mehrere Wege gibt, in die Welt der Schwachstellenforschung einzusteigen, und dass jeder Mensch je nach seinen Interessen normalerweise einem anderen Weg folgt.
Manche beginnen mit Quellcode-Auditing, andere mit Reverse Engineering, wieder andere mit Websicherheit und andere mit Technologieforschung. Alle diese Wege sind gültig, aber der wichtige Teil ist zu verstehen, dass jeder Bereich auch anfängerfreundliche Einstiegspunkte hat.
Beispiele für Anfängerpfade sind:
Diese Arten von Zielen mögen einfach aussehen, aber sie vermitteln dieselben Kernfähigkeiten, die später bei der Arbeit mit komplexen Systemen benötigt werden.
Dieses Repository repräsentiert einen dieser Anfängerpfade im Bereich Reverse Engineering.
Die hier dokumentierte Schwachstelle wurde gefunden, indem eine alte Anwendung analysiert, verstanden wurde, wie ihr Dateiformat geparst wird, und ein Programmierfehler identifiziert wurde, der zu einem Absturz führt. Die Auswirkung selbst ist nicht komplex, aber der Prozess ist real, reproduzierbar und nützlich, um zu lernen, wie Schwachstellenforschung tatsächlich funktioniert.
Dies ist die Art von Beispiel, das ich verwende, wenn ich "Der Weg, der zu Ihrer ersten CVE führt" erkläre, um zu zeigen, dass Reverse Engineering von Anfang an ein gültiger Weg ist und dass es nicht nur akzeptabel, sondern oft der beste Weg ist, mit einfachen Zielen zu beginnen.
Wenn man anfängt, sind moderne Anwendungen oft zu komplex. Sie verwenden Schutzmaßnahmen, Sicherheitsvorkehrungen und Codebasen, die ohne viel Erfahrung schwer zu verstehen sind. Alte Software ist anders.
Legacy-Anwendungen wurden nicht mit modernen Sicherheitspraktiken entwickelt. Sie enthalten oft einfache Parsing-Fehler, unsichere Speicheroperationen und Logikfehler, die mit grundlegenden Reverse-Engineering-Fähigkeiten verstanden werden können. Das macht sie ideal zum Lernen.
Mit einem alten Programm kann man: die Binärdatei zurückentwickeln, das Dateiformat verstehen, einen Absturz auslösen, den Absturz analysieren, den Fehler lokalisieren, das Problem dokumentieren und die Schwachstelle melden. Mit anderen Worten: Man lernt die grundlegenden Fähigkeiten, die jeder Schwachstellenforscher braucht.
Genau darum geht es in diesem Beispiel.
Dieses Beispiel ist wichtig, weil es etwas sehr Einfaches zeigt:
Wenn Sie Reverse Engineering mögen, können Sie diesen Weg von Anfang an gehen. Es mag Jahre dauern, es zu meistern, aber Sie müssen nicht Jahre warten, um mit echter Arbeit zu beginnen.
Die Schwachstelle (CVE-2025-70330)) betrifft die Dateiparsing-Logik von Easy Grade Pro 4.1 beim Laden proprietärer .EGP-Notenbuchdateien.
Die Anwendung rekonstruiert interne Notenbuchstrukturen, indem sie Felder an festen Positionen aus der Datei liest und diese Werte als Offsets innerhalb des geladenen Dateipuffers verwendet. Diese Offsets werden später verwendet, um Speichergrößen zu berechnen und Daten in dynamisch zugewiesene Puffer zu kopieren.
Unter normalen Bedingungen durchläuft die Datei mehrere strukturelle Prüfungen, bevor das Parsen fortgesetzt wird. Sobald diese Prüfungen jedoch erfolgreich sind, vertraut der Parser den in der Datei gespeicherten Offset-Werten, ohne zu validieren, dass sie innerhalb der Grenzen des geladenen Puffers bleiben.
Durch das Ändern bestimmter Bytes innerhalb einer ansonsten gültigen .EGP-Datei ist es möglich, diese internen Offset-Berechnungen zu korrumpieren. Wenn der Parser diese Werte später verwendet, versucht er, Speicher außerhalb des gültigen Dateibereichs zu lesen, was zu einer Zugriffsverletzung und einem Anwendungsabsturz führt.
Dieser Zustand entspricht einem Out-of-Bounds-Read (CWE-125), der zu einem lokalen Denial-of-Service führt, wenn die präparierte Datei geöffnet wird.