
Repository demo per CVE-2015-4843 type confusion e heap overflow exploits in JVM, con demo Java eseguibili che dimostrano la corruzione della memoria su architetture aarch64 e Morello.
I dettagli della vulnerabilità sono discussi su confluence.
Questo repository è stato ripreso dopo alcuni anni di inattività, non è stato esaminato il codice DisabledSecurityManager.
Questa è una demo che mostra che possiamo fare overflow nell'area prima dell'array dst. La demo funziona su aarch64 e morello, sebbene l'overflow venga fermato solo sul branch WIP dove i limiti sono strettamente vincolati. Il che è piuttosto interessante perché mostra che usare solo le capacità cheri non offre una protezione sufficiente per i runtime gestiti, e dobbiamo vincolare il nostro heap.
Questa demo mostra che copiando un FakeClass oop in un array di RealClass usando l'overflow, possiamo confondere il tipo ed eseguire la funzione di FakeClass. Questa demo funziona solo su aarch64, poiché su morello un oop non sarebbe un MemoryAddress, e non possiamo più usare l'exploit IntBuffer. Il che è un interessante beneficio collaterale per il nostro porting.
Sia l'overflow che la type confusion possono essere eseguiti dal jar con l'argomento:
overflow: esegue OverflowDemoconfusion: esegue TypeConfusionDemoun esempio è:
./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
il jar viene generato sul remoto utilizzando build-phrack.yml.