
Dépôt de démonstration pour les exploits de confusion de type et de dépassement de tas CVE-2015-4843 dans la JVM, avec des démos Java exécutables démontrant la corruption de mémoire sur les architectures aarch64 et Morello.
Les détails de la vulnérabilité sont discutés sur confluence.
Ce dépôt a été repris après quelques années d'inactivité, sans que le code DisabledSecurityManager n'ait été examiné.
Ceci est une démo qui montre que nous pouvons déborder avant le tableau dst. Cette démo fonctionne sur aarch64 et morello, bien que le débordement ne soit stoppé que sur la branche WIP où les limites sont strictement contraintes. Ce qui est plutôt cool car cela montre qu'utiliser les capacités cheri seules n'offre pas une protection suffisante pour les runtimes gérés, et que nous devons contraindre notre tas.
Cette démo montre qu'en copiant un FakeClass oop dans un tableau de RealClass en utilisant le débordement, nous pouvons le confondre de type et lui faire exécuter la fonction de FakeClass. Cette démo ne fonctionne que sur aarch64, car sur morello, un oop ne serait pas une MemoryAddress, et nous ne pouvons plus utiliser l'exploit IntBuffer. Ce qui est un avantage secondaire intéressant de notre port.
Les deux démonstrations (débordement et confusion de type) peuvent être exécutées depuis le jar avec l'argument :
overflow: exécute la OverflowDemoconfusion: exécute la TypeConfusionDemoun exemple est :
./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
le jar est généré sur la machine distante en utilisant le build-phrack.yml.