211service.com
Dlaczego dodawanie błędów do oprogramowania może sprawić, że będzie ono bezpieczniejsze?
Jeśli chodzi o śledzenie radarowe, jednym z najskuteczniejszych środków zaradczych jest uwolnienie chmury aluminiowych pasków lub metalizowanego plastiku. Silnie odbijają one radar i tworzą tysiące celów, które zalewają i dezorientują sygnały radarowe. To myli wszystko, co próbuje cię wyśledzić, na przykład pocisk naprowadzany radarem.
Większość samolotów wojskowych i okrętów wojennych, a także wiele pocisków balistycznych ma systemy wabików, które zawierają plewy. A teraz badacze cyberbezpieczeństwa stosują ten sam pomysł do oprogramowania.
Pomysł jest w zasadzie prosty. Oprogramowanie często zawiera błędy, z których większość pozostaje niezauważona przez jego twórców i legalnych użytkowników. Jednak złośliwi aktorzy aktywnie wyszukują te błędy, aby móc wykorzystać je do ataków ukierunkowanych. Ich celem jest przejęcie komputera lub manipulowanie nim w inny sposób.
Ale nie wszystkie błędy są równe. Niektórych nie można wykorzystać do złośliwych celów i nie robią nic gorszego niż spowodowanie awarii programu. Może to być poważne, ale istnieje duża klasa oprogramowania, na przykład mikrousługi działające w tle, które są zaprojektowane do wdzięcznej obsługi awarii poprzez ponowne uruchomienie oprogramowania, gdy użytkownik nie jest mądrzejszy. Te błędy są znacznie mniej poważne niż te, które umożliwiają złośliwą kontrolę.
Ale odróżnienie ich nie zawsze jest proste. Gdy złośliwi programiści znajdą błędy, muszą odróżnić te, które są naprawdę niebezpieczne od tych, które są stosunkowo łagodne, a proces ten jest ogólnie trudny i czasochłonny.
To podstawa nowego podejścia opracowanego przez Zhenghao Hu i współpracowników z New York University. Dlaczego nie wypełnić zwykłego kodu łagodnymi błędami, aby oszukać potencjalnych napastników?
Chodzi o to, aby zmusić atakujących do wykorzystania swoich zasobów na znajdowanie i testowanie błędów, które będą dla nich bezużyteczne. Hu i spółka nazywają te wabiki „placami”, analogicznie do aluminiowych pasków używanych do oszukiwania operatorów radarów.
Pomysł jest tylko najnowszym posunięciem w coraz bardziej złożonej grze w kotka i myszkę, w której eksperci ds. bezpieczeństwa stawiają czoła napastnikom. W ostatnich latach różne grupy opracowały programy przeszukujące kod, szukając luk, które może wykorzystać atakujący. Eksperci ds. bezpieczeństwa stosują to podejście, aby znaleźć i usunąć te luki, zanim kod stanie się publiczny, podczas gdy złośliwi atakujący stosują to samo podejście do znajdowania błędów, które mogą wykorzystać.
Jednak dla badaczy bezpieczeństwa tworzenie tych programów jest trudne i wymaga przede wszystkim istnienia luk w oprogramowaniu. Dlatego badacze opracowali kolejne narzędzie, które automatycznie dodaje te błędy do oprogramowania, aby później mogły zostać wykryte przez program wyszukujący luki.
Okazuje się, że dodawanie błędów wcale nie jest proste. Losowe zmiany w kodzie sprawiają, że staje się on bezużyteczny, zamiast wprowadzać interesujące anomalie. Zamiast tego proces obejmuje uruchamianie kodu z różnymi danymi wejściowymi i monitorowanie, co dzieje się z tymi danymi wejściowymi w miarę postępu kodu.
Ten proces wyszukuje w programie punkty, w których dane wejściowe nie są już wykorzystywane do podejmowania jakichkolwiek przyszłych decyzji. W takim przypadku martwe dane wejściowe można złośliwie manipulować, aby uszkodzić lub przepełnić pamięć.
Program wykrywający luki w zabezpieczeniach odnotowuje, gdzie znajdują się te martwe strefy, aby można je było później wykorzystać.
Okazuje się, że te potencjalne błędy są powszechne w kodzie pisanym w językach takich jak C i C++, które nie mają systemów nadzorujących wykorzystanie pamięci.
Hu i co po prostu używają tego podejścia, aby dodać błędy związane z uszkodzeniem pamięci w całym kodzie. W zwykłych okolicznościach te błędy są łagodne. Ale jeśli zostaną znalezione przez złośliwego gracza, mogą zostać wykorzystane tylko do zawieszenia programu — nie do niczego bardziej złowrogiego. Dlatego działają jak plewy.
Atakujący, którzy próbują znaleźć i wykorzystać błędy w oprogramowaniu, z dużym prawdopodobieństwem znajdą celowo umieszczony błąd, którego nie można wykorzystać, i marnują cenne zasoby, próbując zbudować działający exploit, powiedzmy Hu i spółka.
Zespół pokazuje, że obecne procesy wykrywania potencjalnych błędów są oszukane przez to podejście. Pokazujemy, że funkcjonalność oprogramowania nie jest uszkodzona i pokazujemy, że nasze błędy wyglądają na możliwe do wykorzystania przez obecne narzędzia do segregacji, mówią
To interesujące podejście, które może znacząco zniechęcić złośliwych napastników. Uważamy, że robaki plew mogą służyć jako skuteczny środek odstraszający zarówno przeciwko ludzkim napastnikom, jak i automatycznym systemom Cyber Reasoning, mówią Hu i spółka.
Ale rodzi też kilka interesujących pytań. Na przykład nie ma faktycznego dowodu na to, że segregowanie błędów w celu znalezienia tych, które można wykorzystać, jest z konieczności trudne i czasochłonne. Teoretycznie jest możliwe, że ktoś gdzieś znalazł na to szybki sposób.
Jeśli okaże się, że istnieje sposób na łatwe odróżnienie błędów sieczki od tych, które można wykorzystać, to podejście to stanie się mniej wartościowe. Rzeczywiście, Hu i spółka nie próbują ukrywać ani ukrywać swoich błędów. Oznacza to, że obecnie zawierają wiele artefaktów, które atakujący mogą wykorzystać do ich zidentyfikowania i zignorowania.
Istnieje również bardzo mała zmienność tych wstrzykiwanych błędów. [To] może umożliwić atakującemu zidentyfikowanie wzorców w generowanych przez nas błędach i wykluczenie tych, które pasują do wzorca.
Ale przed nami znaczny potencjał. Pomysł dodawania błędów zamiast ich usuwania to cudownie wrogie podejście do cyberprzestępczości, które powinno zainicjować interesujące kierunki przyszłych badań.
Nr ref.: arxiv.org/abs/1808.00659 : Chaff Bugs: odstraszanie napastników przez tworzenie oprogramowania Buggier