Czy wszystkie zagrożenia bezpieczeństwa są wywoływane przez błędy oprogramowania?

13

Większość zagrożeń bezpieczeństwa, o których słyszałem, powstały z powodu błędu w oprogramowaniu (np. Wszystkie dane wejściowe nie są poprawnie sprawdzane pod względem czystości, przepełnienia stosu itp.). Więc jeśli wykluczymy wszelkie hakowanie społecznościowe, czy wszystkie zagrożenia bezpieczeństwa wynikają z błędów? Innymi słowy, gdyby nie było żadnych błędów, czy nie byłoby żadnych zagrożeń bezpieczeństwa (ponownie, z wyłączeniem błędów ludzi, takich jak ujawnianie haseł itp.)? Czy systemy mogą być wykorzystywane w sposób nie powodowany przez błędy?

gablin
źródło
4
Czy nazywasz możliwość, że mógł odgadnąć słabe hasło to błąd oprogramowania? Jeśli to cokolwiek, jest to problem projektowy, ale prawdopodobnie jest on jeszcze bardziej fundamentalny.
Joachim Sauer,
4
Czy zdefiniowałbyś zły projekt jako błąd?
StuperUser,
1
Aby wesprzeć @StuperUser, w linku „ security.stackexchange.com/questions/25585/... ” w skrypcie Dave'a nie ma błędu. Ale to głupi projekt.
Manoj R
1
Jeśli wykluczymy wszystkie przyczyny problemów związanych z bezpieczeństwem, z wyjątkiem błędów, to tak.
andho

Odpowiedzi:

25

Błąd jest definiowany jako oprogramowanie, które nie działa zgodnie ze specyfikacjami. Teraz, jeśli specyfikacje są wadliwe, nie jest to błąd oprogramowania. Jeśli głupi klient żąda, aby wszystkie hasła były trzycyfrowymi kodami bez okresu karencji między błędnymi wpisami, nie należy winić oprogramowania.

Wiele systemów ma „tryb serwisowy”, który może zastąpić zabezpieczenia i chociaż dostęp do niego powinien być bezpieczny, kody często przeciekają do publicznej wiadomości.

Postępy w matematyce zagrażają starym metodom kryptografii. Coś, co było realnym zabezpieczeniem 30 lat temu, staje się obecnie słabe.

Istnieją różne metody kradzieży danych, które są często pomijane. Klawiatura bezprzewodowa ma zasięg około 2 m ze względu na małe anteny, a wysłany kod jest niezaszyfrowany. Odczytywanie go z drugiej strony ulicy za pomocą dobrej anteny jest dobrze znaną metodą.

Czasami kompromisy w zakresie bezpieczeństwa są dokonywane z pełną świadomością konsekwencji - systemy kryptograficzne wymagają zasilania i czasu procesora. Wbudowane aplikacje monitorujące często wysyłają swoje dane w sposób wyraźnie czytelny dla społeczeństwa, ponieważ po pierwsze wartość narażenia na szwank danych jest znikoma, a następnie dodatkowe koszty wdrożenia zabezpieczeń nie są konieczne.

Całe bezpieczeństwo opiera się na zaufaniu. Wyznaczony administrator nie potrzebuje inżynierii społecznej, aby zbuntować się i odczytać pocztę.

I w końcu, czy można rozważyć zastosowanie kija baseballowego do kolana jako techniki społecznej?

SF.
źródło
2
„jeśli specyfikacje są wadliwe, to nie jest błąd” hm to sformułowanie brzmi ślisko. Zamiast tego powiedziałbym „jest to błąd w specyfikacji” . Kiedy byłem testerem, z powodzeniem przesłałem i zweryfikowałem poprawki kilkudziesięciu takich błędów. A jako programista miałem okazję naprawić niektóre z takich „błędów specyfikacji” zgłoszonych przez testerów w stosunku do dokumentów API, do których przydzielenia mi było utrzymywać ...
gnat
8
@gnat - „błąd w specyfikacji” nie jest jednak błędem programowym , lecz błędem projektowym . Chyba że można oczywiście zaprojektować jako część oprogramowania. Wszystko zależy od tego, gdzie narysujesz linię.
ChrisF
1
@ChrisF: Dzięki za słowa, które chciałem powiedzieć, ale nie wiedziałem, jak to zrobić. Edytowana odpowiedź w celu wyjaśnienia.
SF.
Nie zawsze jest jasne, że określona funkcja zapisana w specyfikacji jest błędem.
Doc Brown
1
@DocBrown: Tak - czasami wymagana jest redukcja bezpieczeństwa jako kompromis koszt-wydajność ...
SF.
12

Mogą wystąpić sytuacje, w których błędy sprzętowe również powodują problemy z bezpieczeństwem. Wystarczy rozważyć wadliwy układ RAM, który spontanicznie odwraca bit „isAdmin”.

Lub rozważ hipotetyczny błąd sprzętowy, w którym ochrona pamięci nie działa zgodnie z oczekiwaniami, a jeden proces może nadpisać pamięć innego procesu bez wywoływania przerwania.

Dla przyjemności z czytania: Bezpieczeństwo komputera zagrożone awarią sprzętu

użytkownik 281377
źródło
Jakie są szanse na przerzucenie chipa RAM dokładnie do isAdmin?
m3th0dman
1
Oczywiście bardzo małe, ale jeśli tak się stanie, jest to wątek bezpieczeństwa nie spowodowany błędem oprogramowania.
user281377,
Szansa, że ​​system komputerowy uszkodzi bity uprawnień do plików losowych, jest całkowicie możliwa. Plik, który można globalnie zapisywać, a główny katalog SUID można w prosty sposób edytować w celu podniesienia uprawnień użytkownika.
SF.
@ user281377 Zdajesz sobie sprawę, że prawdopodobieństwo wybrania tylko bitu isAdmin ze wszystkich bitów wynosi 1/34359738368 dla maszyny z 4 GB pamięci RAM; ignoruje to prawdopodobieństwo niewłaściwego przerzucenia układu.
m3th0dman,
@ m3th0dman Prawdopodobnie mnie źle zrozumiałeś. Nie twierdzę, że jest to poważny problem, na którym wszyscy muszą się przejmować. To bardziej teoretyczny dowód, że problem sprzętowy może stworzyć wątek bezpieczeństwa. To powiedziawszy, można sobie wyobrazić, że atakujący, który odkryje wadliwe bity na serwerze, może znaleźć sposoby na uzupełnienie swoich danych wejściowych, dopóki nie zostanie wprowadzone coś krytycznego w tych lokalizacjach pamięci.
user281377,
6

Wiele zagrożeń bezpieczeństwa wynika z funkcji oprogramowania, a nie z błędów. Okazało się, że wiele bardzo przydatnych funkcji oprogramowania ma dobro lub zło, zależnie od intencji użytkownika.

ddyer
źródło
Skrót jednego człowieka jest wykorzystywaniem drugiego człowieka przez tylne drzwi.
Daniel Hollinrake,
5

Rozważ rozproszony atak typu „odmowa usługi” (DDOS). Może to stanowić zagrożenie bezpieczeństwa, ale nie jest to spowodowane błędem oprogramowania, ale atakującym przekraczającym granice tego, do czego system został zaprojektowany. I każdy system ma limit.

Odpowiedź na twoje pytanie brzmi: nie, nie wszystkie zagrożenia bezpieczeństwa są wywoływane przez błędy oprogramowania.

Pieter B.
źródło
Czy to ryzyko dla bezpieczeństwa ? Można z pewnością przełamać swoją stronę, ale może złamać zabezpieczenia swojej stronie?
Carson63000,
1
To zależy od tego, jak szeroka lub wąska jest twoja definicja zagrożenia bezpieczeństwa.
Pieter B
4

Inżynieria społeczna.

Witam, jestem XX z działu IT. Twój komputer rozprzestrzenia obecnie wirusy na inne komputery biurowe. Potrzebuję twojej nazwy użytkownika i hasła, aby móc je usunąć.

Gdy haker ma nazwę użytkownika / hasło, może bezpiecznie zainstalować trojany itp.

Inżynieria społeczna może być stosowana na kilka sposobów, a jednym z nich jest obchodzenie bezpieczeństwa.

jgauffin
źródło
4
Prawdopodobnym powodem, dla którego nie jest to bardziej doceniane, jest to, że pytający wyraźnie wykluczył „hackowanie społecznościowe”.
Joachim Sauer,
@JoachimSauer Dobra uwaga. Nie widziałem tego.
jgauffin,
3

Co powiesz na coś takiego jak Firesheep , dodatek do przeglądarki Firefox, który kradnie pliki cookie przesyłane we wspólnej sieci bezprzewodowej?

Można argumentować, że podatność na takie ataki jest błędem, ale można również argumentować przeciwko niemu. Witryna niewiele może zrobić, aby uniknąć naruszenia bezpieczeństwa użytkowników, poza uruchomieniem całej komunikacji przez HTTPS - czy możesz powiedzieć, że akceptowanie komunikacji HTTP w Twojej witrynie jest błędem?

Carson63000
źródło
1
Decyzję o przeniesieniu ważnej, prywatnej informacji na niezaszyfrowane medium sklasyfikowałem jako błąd projektowy. Jeśli to należy uznać za „błąd oprogramowania”, to moim zdaniem osobna dyskusja.
Joachim Sauer,
@JachachimSauer, co jeśli Twoja witryna odmówi przesłania jakichkolwiek informacji przez HTTP, a MITM mapuje HTTP na HTTPS? Chociaż przeglądarki obsługują protokół HTTP, a routery zezwalają na jego przekazywanie, istnieje luka w podsłuchiwaniu, której można uniknąć tylko przez klientów szczególnie wrażliwych na bezpieczeństwo. Tak naprawdę pytanie brzmi: czy przeglądarka internetowa obsługuje błąd HTTP?
Peter Taylor
@PeterTaylor: w przypadku tego problemu istnieje HTTP Strict Transport Security , który zasadniczo zapewnia, że ​​przeglądarka wie, że Twoja witryna powinna być odwiedzana tylko za pośrednictwem bezpiecznego połączenia. Ponadto: pytający wyraźnie wykluczył „hackowanie społecznościowe” i w zależności od użytkownika, aby zignorować niezabezpieczoną linię, można uznać za zawarte w tym aspekcie.
Joachim Sauer,
@ JoachimSauer Co zrobić, jeśli po prostu proxy całego ruchu do strony ścisłego transportu, ale zezwalam na połączenia HTTP z powrotem do klientów?
Joshua Drake
@JachachSSauer: Rzeczywiście, zgadzam się z tobą. Przyczyną tej podatności są nierozsądne decyzje projektowe. Nie ma nic niepoprawnie zaimplementowanego w kodzie, co nazywam „błędem”.
Carson63000,
1

Tak, o ile błąd w oprogramowaniu bezpieczeństwa jest-bez względu na najbliższy przyczynowo-awaria przez oprogramowanie do spełnienia jego wymagań.

Zgadzam się, że to tylko tautologia, ale to miara tego.


źródło
Czasami bezpieczeństwo po prostu nie jest (zdefiniowanym) wymogiem. A jeśli zostanie dodany do listy wymagań po naruszeniu bezpieczeństwa, nie nazwałbym tego „błędem”.
Joachim Sauer,
To, że wymaganie nie zostało wywołane na początku projektu, @JoachimSauer, nie oznacza, że ​​nie było wymagane. Przemysł oprogramowania poświęcił temu faktowi więcej niż moje życie.