co to jest atak RCE (zdalne wykonywanie kodu)?
zdalne wykonywanie kodu służy do ujawnienia luki, która może być wykorzystana, gdy wejście użytkownika jest wstrzykiwane do pliku lub ciągu znaków, a cały pakiet jest uruchamiany na parserze języka programowania. Nie jest to typ zachowania, który jest wykazywany przez twórcę aplikacji internetowej. Zdalny Atak Na wykonanie kodu może prowadzić do ataku na pełną skalę, który zagroziłby całej aplikacji internetowej i serwerowi internetowemu. Należy również pamiętać, że praktycznie wszystkie języki programowania mają różne funkcje ewaluacji kodu.
ewaluacja kodu może również wystąpić, jeśli użytkownik zezwoli na wprowadzanie danych w celu uzyskania dostępu do funkcji, które oceniają kod w tym samym języku programowania. Ten rodzaj miary może być celowo zaimplementowany w celu uzyskania dostępu do funkcji matematycznych języka programowania lub przez przypadek, ponieważ dane wejściowe sterowane przez użytkownika są zaprojektowane przez programistę tak, aby znajdowały się wewnątrz którejkolwiek z tych funkcji. Nie zaleca się wykonywania tej linii działania. Wiele osób uważa, że złośliwe jest nawet używanie oceny kodu.
przykład kodu
przyjrzyjmy się przykładowi ataku oceny kodu.
może się wydawać, że lepszym pomysłem jest dynamicznie generowane nazwy zmiennych dla każdego użytkownika i zapisywanie daty rejestracji. To jest przykład jak można to zrobić w PHP
eval("$$user = '$regdate');As long as the username is controlled by the user's input, an attacker may create a name like this:x = 'y';phpinfo();//
wygenerowany kod PHP przypominałby ten:
$x = 'y';phpinfo();// = 2016';
możesz teraz zobaczyć, że zmienna jest określana jako x, ale ma wartość y. kiedy atakujący może przypisać inną wartość do zmiennej, będzie mógł utworzyć nowe polecenie za pomocą średnika (;). Może teraz wypełnić resztę z ciągu. W ten sposób nie otrzyma żadnych błędów składniowych w swojej pracy. Jak tylko wykona ten kod, wynik phpinfo zostanie wyświetlony na stronie. Należy zawsze pamiętać, że jest to możliwe w PHP i innych językach z funkcjami, które mogą oceniać dane wejściowe.
organizowanie zdalnego wykonywania kodu przez Origin
większość wyróżnionych słabych punktów RCE wynika z pewnych podstawowych przyczyn, które można śledzić z powrotem do punktu wyjścia. Grupowanie zdalnego wykonywania kodu przez początek jest badane w następujący sposób.
dynamiczne wykonywanie kodu
dynamiczne wykonywanie kodu jest przez wszystkie konta najbardziej rozpoznawalnym podstawowym powodem, który skłania do ataku na wykonanie kodu. Wiele dialektów programowania jest zaplanowanych do tego stopnia, że mogą one produkować kod z innym kodem i wykonywać go od razu. Ten pomysł jest niesamowity, który radzi sobie z różnymi złożonymi problemami. Niezależnie od tego, złośliwy napastnik może kontrolować ten pomysł, aby uzyskać dostęp do RCE i możliwości.
Zwykle kod wytwarzany szybko zależy od pewnych danych wejściowych klienta. Zwyczajowo kod zawiera informacje, które zostały zapamiętane dla określonej struktury. Kiedy złośliwy agresor rozumie, że potężny wiek kodu będzie wykorzystywać pewne informacje, może to zrobić znaczny kod jako rodzaj dostępu do oddzielenia aplikacji. Jeśli wkład klientów nie zostanie zbadany, kod zostanie wykonany zgodnie z jego celem.
w momencie, gdy zdecydujesz się uważnie przyjrzeć, dynamiczne wykonywanie kodu odpowiada za dwa rodzaje ataków opartych na RCE; natychmiastowe i okrężne.
Direct
zarządzając ilustracją bezpośredniego wykonania unikalnego hołdu, agresor zdaje sobie sprawę, że ich opinia zostanie wykorzystana do stworzenia kodu.
pośredni
w dziwny sposób martwi się potężnym wiekiem kodu z wejściami klienta. Dane wejściowe klienta zazwyczaj podlegają co najmniej jednej warstwie. Część warstw może być odpowiedzialna za zmianę wkładu, zanim skończy się dynamicznym wiekiem kodu. Dodatkowo, dynamiczny wiek kodu może być późniejszym wpływem, a nie natychmiastowym wykorzystaniem informacji. To jest powód, dla którego może nie być jasne dla klienta, że podaje informacje, które będą wypełniać jako blok struktury w złom kodu, który będzie wykonywany odlegle.
Deserializacja
Deserializacja jest niesamowitym przewodnikiem przedstawiającym obecną sytuację. Żaden potężny wiek kodu nie powinien wystąpić podczas deserializacji. Sporadycznie jest to sytuacja, która ma miejsce, gdy serializowany obiekt zawiera surowe pola informacji lub obiekty porównywalnego rodzaju. Rzeczy stają się bardziej skomplikowane, gdy elementy artykułu są serializowane. Deserializacja obejmowałaby również pewien stopień dynamicznego wieku kodu.
wydaje się, że tylko potężne dialekty są pod wpływem serializacji pracy. Pod warunkiem, że jest to prawda, kwestia ta byłaby bardzo ograniczona. Niezależnie od tego, sytuacja ta jest bardzo pomocna również w statycznych dialektach. Trudniej jest to osiągnąć za pomocą języka statycznego, ale z pewnością nie jest to wykonalne.
sporadycznie realizacja tego pomysłu zarządza produkowanymi przez deserializację zdolnościami pośrednimi. Obiekty Age w czasie wykonywania są po prostu możliwe w przypadku dynamicznego wieku kodu. Oznacza to, że jeśli informacja, która zostanie zderializowana, zostanie przekazana w nagabywaniu, złośliwy napastnik może ją zarekwirować i dostosować. Wszystko wokół zaplanowanych bitów kodu może być również zaznajomione z potężnym wiekiem kodu, aby wykonać pojemność, gdy zostanie włączony jako element deserializacji.
bezpieczeństwo pamięci
jeszcze jeden podstawowy powód ataków RCE identyfikuje się z zabezpieczeniem pamięci lub zabezpieczeniem API. Dobrobyt pamięci odnosi się do przeciwdziałania kodzie z dostania się do podstawowych fragmentów pamięci, które nie zostały zainstalowane. To normalne, że brak bezpieczeństwa pamięci spowoduje nieautoryzowany dostęp do informacji. W każdym razie, struktura robocza i sprzęt zależą od Pamięci do przechowywania kodu wykonywalnego. Metadane identyfikujące wykonanie kodu są przechowywane w pamięci. Dostęp do tego fragmentu pamięci może podpowiadać ACE i RCE. W ten sposób, jakie są części przyczyn problemów dobrego samopoczucia pamięci?
niedoskonałości planu produktu
niedoskonałości w konfiguracji produktu są rodzajem słabości dobrego samopoczucia pamięci, która ma miejsce, gdy w określonej ukrytej części występuje błąd planowania. Sporadycznie wadą może być kompilator, Tłumacz, maszyna wirtualna, a nawet część robocza lub biblioteka. W tej klasie są różne skazy. Część składu;
przepełnienie bufora
przepełnienie bufora dodatkowo nawiązuje do nadmiernego obciążenia bufora, może być wykorzystane do nawiązania do podstawowej i słynnej metody, która jest wykorzystywana do łamania dobrego samopoczucia pamięci. Ten atak wykorzystuje konkretną skazę planu lub błąd, aby pozostać w kontakcie z komórkami pamięci, które znajdują się w kierunku końca poduszki pamięci. Wsparcie wróciłoby z autentycznego połączenia do publicznego API. Niemniej jednak, cradle po prostu nawiązuje do miejsca początkowego zagrożenie jest wykorzystywane do rejestrowania rzeczywistych lokalizacji pamięci konkretnego licznika artykułu lub programu. Ich oddzielenie od kołyski jest zauważalne lub można je bez wątpienia spekulować. Badanie kodu za każdym razem, gdy jest dostępny lub rozwiązywanie problemów z wykonaniem całego programu w czasie wykonywania może okazać się przydatne dla agresora, który musi przyjrzeć się względnym pozycjom.
oznacza to, że zalew kołyski pozwoliłby w pewnym stopniu na zmianę niedostępnej pamięci. Kołyska może znajdować się w przestrzeni Lokalizacji jeszcze jednej maszyny i zostanie zmieniona przez wywołanie odległego API. Spowoduje to zapis do pamięci zdalnej maszyny. Istnieje wiele sposobów wykorzystania tego rodzaju dostępu do tworzenia podwójnych transakcji RCE. Istnieje ogólne podejrzenie, że zakładając, że istnieje słabość powodzi, atak oparty na RCE nie jest poza kartami. Oznacza to, że właściciele kodu są polegani na natychmiastowym naprawieniu powodzi wsparcia przed atakiem RCE.
wady konstrukcyjne sprzętu
dobre samopoczucie Pamięci Może być również spowodowane wadami konfiguracji sprzętu. Nie są one tak normalne jak ataki programistyczne i są znacznie trudniejsze do rozpoznania. Jednak ten rodzaj ataku ogromnie wpływa na ramy.
wpływ luki w zdalnej ocenie kodu
atakujący, który może wykonać zdalny atak oparty na kodzie na systemie, byłby w stanie wykonać inne polecenia, korzystając z języka programowania lub serwera www. W wielu językach programowania atakujący byłby w stanie nakazać systemowi zapisywanie, odczytywanie lub usuwanie plików. Może nawet być możliwe połączenie się z różnymi bazami danych z zaatakowanym systemem.
dlaczego atakujący uruchamiają ataki RCE?
chociaż nie ma szczególnego powodu, dla którego atakujący decydują się na wykorzystanie RCE do ataku na aplikację internetową, nie ma szczególnego powodu. Chodzi o to, że niektórzy złośliwi łatwo wykorzystują to wykonanie kodu, aby uzyskać dostęp do systemów.
Jak Zapobiegać Atakom Zdalnego Wykonywania Kodu?
na początek należy unikać wprowadzania danych przez użytkownika wewnątrz ocenianego kodu. Najlepszym rozwiązaniem w tej sytuacji byłoby całkowite uniknięcie korzystania z funkcji takich jak eval. Jest uważany za formę złej praktyki i można go łatwo uniknąć. Zaleca się również, aby nigdy nie pozwalać użytkownikowi edytować zawartości plików, które mogły zostać przeanalizowane przez dany język programowania. Często obejmuje to umożliwienie użytkownikowi utworzenia nazwy i rozszerzeń plików, które chce przesłać lub utworzyć w aplikacji internetowej.
oto niektóre z rzeczy, których nie powinieneś robić, aby uniknąć ataków opartych na RCE. Należą do nich:
- dezynfekcja danych wejściowych użytkownika. Często jest to trudne do osiągnięcia, ponieważ istnieje duża ilość wstępnie zainstalowanych obejść i ograniczeń.
- Pozwól użytkownikowi zdecydować lub utworzyć rozszerzenie lub zawartość plików, które mają być używane na serwerze internetowym. Musi stosować wiele bezpiecznych praktyk podczas przesyłania plików lub ryzykować, że ważne informacje wpadną w niepowołane ręce.
- przekaż dowolne wejście sterowane przez użytkownika do wywołań zwrotnych systemowych lub funkcji ewaluacyjnych
- aktywnie umieszczając na czarnej liście znaki specjalne lub nazwy funkcji. Należy tego unikać, podobnie jak dezynfekcji danych wejściowych użytkownika. Ale jest to niezwykle trudne do wdrożenia.