Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Programowanie bez wykorzystania typowych instrukcji, czyli MMU hacking!
Julian Bangert i Sergey Bratus, dwaj badacze z Trust Lab Dartmouth College, zaprezentowali niedawno fascynujące wyniki swych prac z zakresu ekstremalnie nietypowych rozwiązań programistycznych. Mianowicie, przedstawili praktyczne przykłady programów działających nie z wykorzystaniem klasycznych instrukcji CPU, lecz jedynie pewnych specyficznych własności jednostki zarządzania pamięcią MMU (ang. Memory Management Unit).
W swych pracach o żartobliwym kryptonimie „Page Fault Liberation” (w wolnym tłumaczeniu „Front Wyzwolenia Błędów Stronicowania”) badacze dowiedli, że jednostka MMU (a dokładniej jej mechanizmy obsługi błędów dostępu do stron pamięci) jest kompletna w sensie Turinga. Oznacza to, że za jej pomocą można wykonać dowolny algorytm. Poniżej można zobaczyć zapis działania tego typu aplikacji.
Badacze nie ograniczyli się do nudnych rozważań teoretycznych, lecz przedstawili kompletną i w pełni działającą implementację swego nietypowego pomysłu. Całość została zrealizowana jako maszyna obliczeniowa typu OISC (ang. one instruction set computer), zwana też czasem URISC (ang. ultimate reduced instruction set computer). Oznacza to, że do dyspozycji mamy tylko jedną instrukcję. Jednak przy odpowiednim dobrze tejże instrukcji, możliwe jest właśnie wykonanie dowolnego algorytmu! Wybrana została instrukcja „Decrement-Branch-If-Negative”, która w pełni spełnia powyższe wymogi.
Julian i Sergey opublikowali nie tylko nagranie prezentujące działającą implementację „Gry w życie”, ale również opublikowali wszystkie kody źródłowe. Zachęcam także do obejrzenia poniższej prezentacji, w trakcie której badacze z wielką pasją i specyficznym humorem opowiadają o swych unikalnych pomysłach.
Na koniec warto się jeszcze chwilę zastanowić nad potencjalnymi praktycznymi zastosowaniami dla tak nietypowego pomysłu. Oczywiście od razu na myśl przychodzi zaciemnianie kodu, a potencjalna analiza wynikowego kodu binarnego musi być w przypadku zastosowania powyższej techniki wyjątkowo uciążliwa.
Do czego jeszcze waszym zdaniem MMU hacking mógłby zostać wykorzystany w praktyce?
– Wojciech Smol, (wojciech.smol<at>sekurak.pl)