Konkretny atak, na który wyraziłeś obawy, to:
często osoba atakująca oszuka po prostu łatwowiernego użytkownika, aby uruchomił plik wykonywalny, pobierając i klikając.
Przynajmniej w powszechnym przypadku, gdy plik jest pobierany w przeglądarce internetowej, powinno się temu już zapobiegać w Ubuntu przez przestrzeganie przez przeglądarkę zasad Wymaganego bitu wykonania. Najbardziej bezpośrednio odpowiednie części tej polityki to:
Aplikacje, w tym komputery stacjonarne i powłoki, nie mogą uruchamiać kodu wykonywalnego z plików, gdy oba są:
- brakuje bitu wykonywalnego
- znajduje się w katalogu domowym użytkownika lub katalogu tymczasowym.
- Pliki pobrane z przeglądarki internetowej, klienta poczty itp. Nigdy nie mogą być zapisywane jako pliki wykonywalne.
Jeśli więc użytkownik zostanie poproszony o pobranie programu z przeglądarki internetowej, zrobi to i spróbuje uruchomić plik, klikając go dwukrotnie, nie uruchomi się. Odnosi się to nawet, jeśli pobrany plik jest skryptem powłoki, a nawet plikiem .desktop. (Jeśli kiedykolwiek zastanawiałeś się, dlaczego pliki .desktop w katalogu domowym muszą być oznaczone jako pliki wykonywalne, mimo że tak naprawdę nie są programami, właśnie dlatego).
Użytkownicy mogą zmienić to zachowanie poprzez zmiany konfiguracji. Większość tego nie zrobi i chociaż ci, którzy prawdopodobnie tego nie zrobią, nie powinniście się tak naprawdę martwić. Większy problem dotyczy bardziej złożonego ataku, o którym myślę, że już się martwisz, w którym złośliwa osoba (lub bot) instruuje użytkownika, aby pobrał określony plik, oznaczył go jako wykonywalny (przez przeglądarkę plików lub za pomocą chmod
) i następnie uruchom to.
Niestety ograniczenie zdolności użytkownika do ustawienia bitu wykonania pliku lub wykonywania plików innych niż te z białej listy nie zmniejszy zauważalnie problemu. Niektóre ataki już działają, a te, których nie można w prosty sposób zmodyfikować, aby działały. Podstawową kwestią jest to, że efekt uruchomienia pliku można uzyskać, nawet jeśli plik nie ma uprawnień do wykonywania .
Najlepiej ilustruje to przykład. Załóżmy, że evil
jest to plik w bieżącym katalogu, który, gdyby otrzymał uprawnienia do wykonywania ( chmod +x evil
) i run ( ./evil
), zrobiłby coś złego. W zależności od rodzaju programu ten sam efekt można osiągnąć, wykonując jedną z następujących czynności:
Żadna z nich, nawet ostatnia, nie wymaga, aby plik miał uprawnienia do wykonywania, ani nawet aby użytkownik mógł nadać temu plikowi uprawnienia.
Ale złośliwe instrukcje nie muszą nawet być tak skomplikowane. Rozważ to niezłośliwe polecenie, które jest jednym z oficjalnie zalecanych sposobów instalacji lub aktualizacji NVM :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Powodem, dla którego nie jest złośliwy, jest to, że NVM nie jest złośliwym oprogramowaniem, ale jeśli adres URL byłby zamiast skryptu, który wywołuje zło po uruchomieniu, polecenie to pobrałoby i uruchomiło skrypt. W żadnym momencie żaden plik nie musiałby mieć uprawnień do wykonywania. Pobieranie i uruchamianie kodu zawartego w złośliwym pliku za pomocą jednego polecenia tego typu jest, jak sądzę, dość częstym działaniem, które atakujący nakłaniają użytkowników do podjęcia.
Możesz pomyśleć o ograniczeniu dostępnych tłumaczy do uruchomienia przez użytkowników. Ale tak naprawdę nie ma sposobu, aby to zrobić, który nie wpływa znacząco na zwykłe zadania, które prawdopodobnie chcesz, aby użytkownicy mogli wykonywać. Jeśli konfigurujesz bardzo ograniczone środowisko, w którym prawie wszystko, co użytkownik chciałby zrobić na komputerze, jest niedozwolone, na przykład kiosk, w którym działa tylko kilka programów, może to zapewnić pewną ochronę. Ale to nie brzmi tak, jakby to był twój przypadek użycia.
Przybliżona odpowiedź na twoje pytanie brzmi: „Nie”. Pełniejsza odpowiedź jest taka, że prawdopodobnie uda Ci się uniemożliwić użytkownikom wykonywanie jakichkolwiek plików oprócz tych, które podajesz na białej liście. Ale to w ścisłym technicznym sensie słowa „wykonaj”, które nie jest potrzebne do osiągnięcia pełnego efektu działania większości programów lub skryptów. Aby zapobiec które , można spróbować zrobić whitelist bardzo mały, więc nie są wyświetlane żadne ustne z wyjątkiem tych, które mogą być bardzo ograniczone. Ale nawet jeśli ci się to udało, użytkownicy nie mogliby wiele zrobić, a jeśli uczynisz to tak małym, że nie mogliby się zranić, prawdopodobnie nie mogliby nic zrobić. (Zobacz komentarz Thomasa Warda ).
Jeśli twoi użytkownicy mogą się zranić, mogą zostać oszukiwani, by się zranić.
Możesz być w stanie ograniczyć używanie określonych programów lub w inny sposób zachowywać się w sposób, który może być szkodliwy, a jeśli patrzysz na określone wzorce, które ransomware zwykle stosuje, możesz być w stanie zapobiec niektórym konkretnym częstym przypadkom. (Zobacz AppArmor .) To może zapewnić pewną wartość. Ale nie da ci nic bliskiego kompleksowemu rozwiązaniu, na które liczysz.
Bez względu na to, jakie środki techniczne (jeśli w ogóle zastosujesz), najlepszym rozwiązaniem jest edukacja użytkowników. Obejmuje to nakazanie im, aby nie wykonywali poleceń, których nie rozumieją, i nie używali pobranych plików w sytuacjach, w których nie byliby w stanie wyjaśnić, dlaczego jest to wystarczająco bezpieczne. Ale obejmuje to również tworzenie kopii zapasowych, więc jeśli coś pójdzie nie tak (z powodu złośliwego oprogramowania lub w inny sposób), wyrządzone szkody będą tak małe, jak to możliwe.