
CVE-2015-4843の型混乱とヒープオーバーフローエクスプロイトのデモリポジトリ(JVM向け)。aarch64およびMorelloアーキテクチャ上でメモリ破壊を実演する実行可能なJavaデモを含む。
脆弱性の詳細はconfluenceで議論されています。
このリポジトリは数年放置されていた後に復活しました。DisabledSecurityManagerのコードは確認していません。
これは、dst配列の前にオーバーフローできることを示すデモです。このデモはaarch64とmorelloで動作しますが、オーバーフローは境界が厳密に制約されているWIPブランチでのみ停止します。これは非常に興味深いことで、CHERIケイパビリティだけではマネージドランタイムに十分な保護を提供できず、ヒープを制約する必要があることを示しています。
このデモは、オーバーフローを利用してFakeClass oopをRealClassの配列にコピーすることで、型を混乱させ、FakeClassの関数を実行させることができることを示しています。このデモはaarch64でのみ動作します。なぜならmorelloではoopがMemoryAddressではなくなり、IntBufferエクスプロイトが使えなくなるからです。これは私たちの移植における興味深い副次的利点です。
オーバーフローと型混乱の両方は、引数を指定してjarから実行できます:
overflow: OverflowDemoを実行しますconfusion: 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を使用してリモート上に生成されます。