
Demonstrationsrepository für CVE-2015-4843 Typverwirrung und Heap-Overflow-Ausnutzungen in der JVM, mit ausführbaren Java-Demos, die Speicherkorruption auf aarch64- und Morello-Architekturen demonstrieren.
Details zur Schwachstelle werden im Confluence diskutiert.
Dieses Repository wurde nach einigen Jahren der Inaktivität wieder aufgegriffen, der Code DisabledSecurityManager wurde nicht betrachtet.
Dies ist eine Demo, die zeigt, dass wir in den Bereich vor dem dst-Array überlaufen können. Diese Demo funktioniert auf aarch64 und morello, obwohl der Überlauf nur im WIP-Zweig gestoppt wird, wo die Grenzen eng gesetzt sind. Das ist ziemlich cool, da es zeigt, dass die alleinige Verwendung von CHERI-Fähigkeiten nicht den ausreichenden Schutz für verwaltete Laufzeiten bietet und wir unseren Heap einschränken müssen.
Diese Demo soll zeigen, dass wir durch das Kopieren eines FakeClass oop in ein Array von RealClass mittels des Überlaufs eine Typverwechslung herbeiführen und die Funktion von FakeClass ausführen lassen können. Diese Demo funktioniert nur auf aarch64, da auf morello ein oop keine MemoryAddress wäre und wir den IntBuffer-Exploit nicht mehr verwenden können. Dies ist ein interessanter Nebeneffekt unseres Ports.
Sowohl der Überlauf als auch die Typverwechslung können mit dem Argument aus der JAR-Datei ausgeführt werden:
overflow: führt den OverflowDemo ausconfusion: führt den TypeConfusionDemo ausEin Beispiel ist:
./build/bsd-aarch64-template-aarch64-release/jdk/bin/java -Xmx8G -Xms8G -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -jar /home/slatere/phrack/target/TestOverflow-1.0-SNAPSHOT-jar-with-dependencies.jar confusion
Die JAR-Datei wird auf das entfernte System generiert, indem die build-phrack.yml verwendet wird.