Wykonanie kodu arbitralnego - Arbitrary code execution

W bezpieczeństwa komputerowego , wykonanie dowolnego kodu (ACE) jest możliwość atakującemu uruchomić żadnych poleceń lub kod wybrany przez atakującego na komputerze docelowym lub w docelowej procesu . Wykonanie dowolnego kodu luka jest luka bezpieczeństwa w oprogramowanie lub sprzęt umożliwiający wykonanie dowolnego kodu. Program, który został zaprojektowany w celu wykorzystania takiej podatności nazywany jest wykonanie dowolnego kodu exploit . Możliwość wyzwalania wykonania dowolnego kodu przez sieć (zwłaszcza za pośrednictwem sieci rozległej, takiej jak Internet) jest często określana jako zdalne wykonanie kodu (RCE).

Rodzaje podatności

Istnieje wiele klas luk w zabezpieczeniach, które mogą prowadzić do możliwości wykonania przez atakującego dowolnych poleceń lub kodu. Na przykład:

Metody

Wykonanie dowolnego kodu jest zwykle osiągane poprzez kontrolę nad wskaźnikiem instrukcji (takim jak skok lub rozgałęzienie ) uruchomionego procesu . Wskaźnik instrukcji wskazuje następną instrukcję w procesie, która zostanie wykonana. Kontrola nad wartością wskaźnika instrukcji daje zatem kontrolę nad tym, która instrukcja jest wykonywana jako następna. Aby wykonać dowolny kod, wiele exploitów wstrzykuje kod do procesu (na przykład wysyłając do niego dane wejściowe, które są przechowywane w buforze wejściowym w pamięci RAM ) i wykorzystuje lukę w celu zmiany wskaźnika instrukcji tak, aby wskazywał na wstrzyknięty kod. Wstrzyknięty kod zostanie automatycznie wykonany. Ten typ ataku wykorzystuje fakt, że większość komputerów (wykorzystujących architekturę Von Neumanna ) nie dokonuje ogólnego rozróżnienia między kodem a danymi , dzięki czemu złośliwy kod może być zakamuflowany jako nieszkodliwe dane wejściowe. Wiele nowszych procesorów ma mechanizmy, które to utrudniają, takie jak bit no-execute .

Łączenie z eskalacją uprawnień

Sam w sobie exploit do wykonania dowolnego kodu da atakującemu takie same przywileje, jak atakowany proces. Na przykład, jeśli wykorzysta lukę w przeglądarce internetowej , osoba atakująca może działać jako użytkownik, wykonując czynności takie jak modyfikowanie plików komputera osobistego lub uzyskując dostęp do informacji bankowych, ale nie byłaby w stanie wykonać działań na poziomie systemu (chyba że dany użytkownik również miał taki dostęp).

Aby obejść ten problem, gdy atakujący może wykonać dowolny kod na celu, często próbuje się wykorzystać exploita eskalacji uprawnień w celu uzyskania dodatkowej kontroli. Może to dotyczyć samego jądra lub konta takiego jak Administrator, SYSTEM lub root. Z tą wzmocnioną kontrolą lub bez niej, exploity mogą potencjalnie wyrządzić poważne szkody lub zmienić komputer w zombie — ale eskalacja uprawnień pomaga ukryć atak przed uprawnionym administratorem systemu.

Przykłady

Hobbystom retrogamingu udało się znaleźć luki w klasycznych grach wideo, które pozwalają im na wykonanie dowolnego kodu, zwykle przy użyciu precyzyjnej sekwencji naciśnięć przycisków w celu spowodowania przepełnienia bufora , umożliwiając im zapis do chronionej pamięci . Na Awesome Games Done Quick 2014 grupie entuzjastów speedruningu udało się zakodować i uruchomić wersje gier Pong i Snake w kopii Super Mario World , wykorzystując przepełnienie bufora do zapisania dowolnego kodu w pamięci .

12 czerwca 2018 r. badacz bezpieczeństwa Jean-Yves Avenard z Mozilli odkrył lukę ACE w systemie Windows 10 .

1 maja 2018 r. badacz bezpieczeństwa odkrył lukę ACE w archiwizatorze plików 7-Zip .

PHP jest przedmiotem wielu luk ACE.

14 lipca 2020 r. firma Oversecured zajmująca się bezpieczeństwem aplikacji mobilnych poinformowała o ACE w bibliotece Google Play Core, które doprowadziło do wykonania dowolnego kodu w wielu aplikacjach na Androida, w tym Google Chrome .

Zobacz też

Bibliografia