JIT rozpylanie - JIT spraying

Rozpylanie JIT jest klasa bezpieczeństwa komputerowego exploit , który omija ochronę randomizacji adres miejsca układ (ASLR) i zapobieganie wykonywaniu danych (DEP) wykorzystując zachowanie JIT . Jest on używany w celu wykorzystania PDF format i Adobe Flash .

Kompilator Just-in-time (JIT) z definicji tworzy kod, jak jego danych. Ponieważ celem jest uzyskanie danych wykonywalny, kompilator JIT jest jednym z niewielu rodzajów programów, które nie mogą być uruchamiane w środowisku nie-executable-danych. Z tego powodu, JIT kompilatory są zazwyczaj zwolnione z zapobiegania wykonywaniu danych. Atak sprayu JIT ma sterty natrysku z wygenerowanego kodu.

Aby wyprodukować kod z JIT wykorzystać, stosuje się pomysł z Dion Blazakis. Program wejście, zazwyczaj JavaScript lub ActionScript , zwykle zawiera wiele wartości stałych, które mogą być błędnie wykonywane jako kod. Na przykład, XOR operacja może być używany:

var a = (0x11223344^0x44332211^0x44332211^ ...);

JIT następnie przekształci kodu bajtowego do natywnego kodu x86, takich jak:

0:  b8 44 33 22 11      mov $0x11223344,%eax    mov eax,0x11223344
5:  35 11 22 33 44      xor $0x44332211,%eax    xor eax,0x44332211
a:  35 11 22 33 44      xor $0x44332211,%eax    xor eax,0x44332211

Atakujący wykorzystuje następnie odpowiedni błąd przekierować wykonanie kodu na nowo wygenerowanego kodu. Na przykład, przepełnienie bufora lub używania po zwolnieniu błąd może umożliwić atak zmodyfikować wskaźnik funkcji lub adres zwrotny.

To powoduje, że procesor do wykonywania instrukcji w taki sposób, aby była niezamierzona przez autorów JIT. Atakujący zazwyczaj nawet nie ograniczają się do oczekiwanych granicach instrukcji; możliwe jest, aby wskoczyć do środka instrukcji ma mieć procesor interpretuje go jako coś innego. Podobnie jak w przypadku innych niż JIT RPO ataków, może to być wystarczająca do działania z pożytkiem przejąć kontrolę nad komputerem. Kontynuując powyższy przykład, skoki do drugiego bajtu z „mov” wyników instrukcji w „inc” nauczania:

1:  44                  inc %esp                inc esp
2:  33 22               xor (%edx),%esp         xor esp,DWORD PTR [edx]
4:  11 35 11 22 33 44   adc %esi,0x44332211     adc DWORD PTR ds:0x44332211,esi
a:  35 11 22 33 44      xor $0x44332211,%eax    xor eax,0x44332211

Sprzęt komputerowy, który pozwala na skoki w środku zawiera instrukcji x86 , x86-64 oraz ARM . Chociaż szczególnie skuteczny na tego typu sprzęcie, opryski JIT działa na innych systemach, jak również.

W celu ochrony przed oprysków JIT, kod JIT może być wyłączona lub wykonane mniej przewidywalne dla atakującego.

Referencje