Hacker knackt Java für Handys

Suche nach Angriffspunkten

Die Suche nach Schwachstellen liefert laut Gowdiak schnell mehrere Ansätze. So überprüft der Verifier bei einer GOTO-Instruktion lediglich, ob überhaupt ein Stack-Map-Eintrag vorhanden ist, nicht jedoch, ob das Sprungziel im erlaubten Bereich liegt. Prinzipiell sind so Sprünge an illegale Stellen möglich.

Die GOTO_W-Instruktion reduziert zunächst die Zieladresse von 32 Bit auf 16 Bit, da die Stack Maps für Sprungadressen lediglich 16 Bit vorsehen. Bei geschickter Manipulation lässt sich dieser Umstand nutzen, um zu illegalen Adressen, etwa außerhalb der Sandbox im Bereich der KVM selbst, zu verzweigen. Damit ist ein erster Weg aus dem geschützten Bereich vorgezeichnet.

Der eingebrachte Code muss an eine bestehende Methode gebunden werden. Dies verhindert, dass der Garbage Collector (GC) den unerlaubten Bytecode aus dem Speicher-Heap löscht.