
JavaにおけるCVE-2015-4843の型混乱およびヒープオーバーフローエクスプロイトを実演し、aarch64とMorello向けのデモを含み、CHERIケイパビリティの制限を強調します。
脆弱性の詳細は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を使用してリモート上に生成されます。