
Демонстрирует эксплойты путаницы типов и переполнения кучи для CVE-2015-4843 в Java, с демо для aarch64 и Morello, подчёркивая ограничения возможностей CHERI.
Детали уязвимости обсуждаются на confluence.
Этот репозиторий был поднят после нескольких лет заброшенности, не рассматривался код DisabledSecurityManager.
Это демонстрация, показывающая, что мы можем выполнить переполнение в область перед массивом dst. Эта демонстрация работает на aarch64 и morello, хотя переполнение останавливается только в ветке WIP, где границы строго ограничены. Это довольно круто, так как показывает, что использование только возможностей cheri не обеспечивает достаточной защиты для управляемых сред выполнения, и нам нужно ограничивать нашу кучу.
Эта демонстрация показывает, что, копируя FakeClass oop в массив RealClass с помощью переполнения, мы можем вызвать путаницу типов и заставить его выполнить функцию FakeClass. Эта демонстрация работает только на aarch64, так как на morello объект oop не будет MemoryAddress, и мы больше не можем использовать эксплойт IntBuffer. Это интересный побочный эффект нашего порта.
И переполнение, и путаницу типов можно запустить из jar-файла с аргументом:
overflow: запускает OverflowDemoconfusion: запускает TypeConfusionDemoПример:
./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
jar-файл генерируется на удалённой машине с помощью build-phrack.yml.