
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을 사용하여 원격에서 생성됩니다.