
Demuestra exploits de confusión de tipos y desbordamiento de montón para CVE-2015-4843 en Java, con demos para aarch64 y Morello, destacando las limitaciones de las capacidades CHERI.
Los detalles de la vulnerabilidad se discuten en confluence.
Este repositorio ha sido retomado después de unos años de estar inactivo, sin haber revisado el código DisabledSecurityManager.
Esta es una demo que muestra que podemos desbordar hacia antes del array dst. Esta demo funciona en aarch64 y morello, aunque el desbordamiento solo se detiene en la rama WIP donde los límites están restringidos. Lo cual es bastante interesante, ya que muestra que usar solo capacidades cheri no ofrece la protección suficiente para los entornos de ejecución gestionados, y necesitamos restringir nuestro heap.
Esta demo muestra que al copiar un FakeClass oop en un array de RealClass usando el desbordamiento, podemos confundir el tipo y hacer que ejecute la función de FakeClass. Esta demo solo funciona en aarch64, ya que en morello un oop no sería una MemoryAddress, y ya no podemos usar el exploit IntBuffer. Lo cual es un beneficio secundario interesante para nuestro puerto.
Tanto el desbordamiento como la confusión de tipos se pueden ejecutar desde el jar con el argumento:
overflow: ejecuta el OverflowDemoconfusion: ejecuta el TypeConfusionDemoun ejemplo es:
./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
el jar se genera en el remoto usando build-phrack.yml.