mwiacek.comColorColor | Mobile  
Dlaczego Linuks jest bezpieczniejszy... czyli o rozwiązaniu nie dla idiotów (2021)
Submitted by marcin on Sun 21-Mar-2021

polski
polski blog
dobreprogramy.pl
x86
Linux



Dawno temu

Dawno, dawno temu praktycznie każda maszyna była oddzielną wyspą, a urządzenia i nośniki charakteryzowały się dosyć mocną awaryjnością.

Standardem były rozmyślania, czy dysk od Samsunga czy IBM jest lepszy niż któraś tam Barracuda (przypomnę, że SMART został wymyślony około 1995 roku). Zwracaliśmy uwagę na obecność pól magnetycznych i problemy z dyskietkami Verbatim, wielu z nas doświadczało również tego, że porysowanych płyt CD / DVD / Blue-Ray nie można czytać w nieskończność, albo że ulegają one upływowi czasu.

To wszystko wymuszało na nas przechowywanie plików w różnych miejscach - standardem było np. używanie oddzielnych dysków w kieszeniach.

Na rynku istniało wiele rodzajów nośników

i formatów plików, które wymuszały na nas ruszenie głową i dbanie przez nas o ich migrację.

Nie mieliśmy przy tym zbyt dużo plików, systemy plików były proste i łatwe do zrozumienia i naprawienia - każdy wiedział, że "chkdsk" służy do sprawdzania, a "undelete" do odzyskiwania plików, o ile nie uległy nadpisaniu.

Była wiedza, wymienianie się doświadczeniem i wykorzystywanie sprzętu do granic możliwości.

Obecnie

Wszyscy chcą mieć wszystko podane w sposób łatwy, prosty i przyjemny.

Popatrzmy, co się stało po katastrofie w firmie OHV.

Poinformowała ona, że rozpoczęła przygotowania związane z ofertą publiczną i wejściem na giełdę. Bodajże dzień później spłonęła serwerownia w Strasburgu, która (jak dla mnie) z zewnątrz wygląda podobnie do zestawów kontenerów na budowach. Co jest ciekawe w tej historii - obok siebie znalazły się trzy bloki, a część firm hostujących swój biznes nie miało kopii zapasowych.

Jeden z przykładowych tytułów artykułów stwierdzał "Pożar w OVH to dramat tysięcy biznesów".

Moje pytania - ile z nas ma sprawdzone i potwierdzone kopie plików przechowywanych w chmurach? Czy upewniliśmy, że nasze backupy są szyfrowane i robione w oddzielnych lokalizacjach? Czy to nie jest tak, że zaczęliśmy bezgranicznie ufać temu, że pliki tam są stuprocentowo bezpieczne? (bo łatwiej jest przerzucić na kogoś odpowiedzialność niż dbać o bezpieczeństwo samemu)

Ciekawym faktem jest to, iż w wielu wypadkach dodajemy pliki, te ulegają stratnej kompresji, a my się pozbywamy oryginalnych najlepszych kopii (zastanówmy się, co by się stało, gdyby nagle YouTube zaczął wszystko zmieniać tak, że jakość zmniejszyłaby się 4x).

Kolejnym ciekawym faktem jest brak czytania przez nas regulaminów (ewentualnie czytanie ich pobieżnie i akceptowanie nawet rozmytych zapisów, które dają odpowiednim platformom właściwie każdą władzę).

Co się potem dzieje? Przykładem niech będą serwisy takie jak Pornhub (usunął 80% filmów), Facebook czy Twitter (które stosują swoje własne zasady stosownie do sytuacji politycznej).

Pójdźmy dalej - w trosce o bezpieczeństwo instalujemy często i gęsto programy antywirusowe (dając dostęp do plików często tysiącom pracowników), a chwilę potem dziwimy się, że jakiś tam Kaspersky albo inne cudo może robić właściwie co chce.

Hallo, hallo, taka jest zasada działania programów antywirusowych!

image

Miałem pisać o Linuksie i właśnie do tego dochodzę. Jeden z innych blogerów napisał w swoim tytule "Masowa dystrybucja podatności, czyli jak pada mit bezpiecznego Linuksa". Miało to oczywiście na celu wywołanie tzw. gównoburzy, chciałbym się jednak pokrótce zastanowić nad tym, dlaczego Linux jest jednak bezpieczniejszy i dlaczego ten bloger właśnie sobie zaprzeczył.

Jądro i wiele narzędzi udostępnianych jest z kodem źródłowym. Każdy, kto ma jakąkolwiek wiedzę techniczną, ma do nich dostęp i może je przeglądać, a nawet próbować modyfikować.

Z jednej strony jest to proszenie się o kłopoty, z drugiej... skoro kod jest dostępny, to nie powinno być zbyt wielkich problemów z jego migracją na nową / lepszą wersję.

A jak to wygląda u konkurencji?

Did Microsoft Just Manually Patch Their Equation Editor Executable? Why Yes, Yes They Did. (CVE-2017-11882)

W przypadku tego producenta tzw. wycieki kodu stają się podstawą do pisania, że zaraz nastąpi Armageddon. Ale zaraz zaraz... przecież do tego kodu mają dostęp pracownicy agencji rządowych, różnych firm trzecich, itp. Załóżmy roboczo, że milion ludzi ze średnim doświadczeniem może coś znaleźć i poinformować o tym lub nie, zaś w przypadku komponentów linuksowych niech kod analizuje dziesięć milionów ze średnim doświadczeniem - czyż nie jest to lepsze?

No dobrze, ale przecież kod Microsoftu jest łamany również w formie binarnej, a do tego zazwyczaj trzeba większych umiejętności.

Fakt, za to ludzie o dużych umiejętnościach pracują też nad linuksami i nie marnują czasu na jakieś zabawy z asemblerem (tzn. niektórzy też to robią, ale jakby nie jest to główny i najbardziej czasochłonny element pracy wszystkich z nich), skupiąc się na tworzeniu bardziej zaawansowanych technicznie rozwiązań (np. wiele systemów plików)

Szczerze mówiąc przy obecnym sposobie pisania aplikacji byłbym zmartwiony, gdy w Fedorze nie znajdowano usterek. Rzecz w tym, że języki programowania często nie dbają o to, żeby programista dbał o poprawność (stąd próby chociażby z Rustem), i rzecz w tym, że często zakłada się, że raz zrobione w określony sposób testowanie wszystko załatwia (tymczasem mamy tzw. "pestidice paradox").

A jak to wygląda u konkurencji?

Normalnie do łatania służy słynny drugi wtorek miesiąca. Chociaż istnieją poprawki poza harmonogramem, to przynajmniej z punktu widzenia zwykłego użytkownika te nie są tak częste. Należy pamiętać o słynnych problemach z ich instalacją (stąd są tu i tam wstrzymywane), różnych sposobach ich dystrybucji nawet do programów Microsoftu (co powiększa bałagan) i brakiem takiego samego entuzjazmu w łataniu różnych wersji. To skutkuje tym, że np. microcode do procesorów dostajemy po pół roku, jak nie później.

Czy można więc zaufać dystrybucjom linuksowym?

Odpowiedź jest banalna - jedne są lepsze niż drugie, a wszystko zależy od ludzi... ci niestety są coraz częściej niefrasobliwi i łamią podstawowe zasady bezpieczeństwa, nie instalują poprawek, itp.

Na pewno jedno jest dobre - przy darmowych dystrybucjach łatwiej jest przekonać się do migracji na nową wersję (przy konieczności zakupu tysięcy czy milionów kopii Office czy Windows może pojawić się problem z gotówką).

Ze swojej strony mogę dodać, że błąd w jądrze 5.12 RC1 związany z plikiem wymiany nie powinien mieć miejsca, zastanówmy się jednak, jak powinno wyglądać testowanie w tym wypadku - należałoby wykonać serię jakichś różnych operacji, sprawdzić integralność systemu plików i to, czy zostały zmienione odpowiednie pliki.

Czy zabrakło tutaj wyobraźni, czasu czy czegoś innego? Nie wiem, za to wiem, że w dobrze prowadzonym projekcie po wystąpieniu takiego problemu należałoby napisać odpowiednie testy.

Kwestię "bezpiecznego Linuksa" należy rozpatrywać również inaczej - skoro kodu nie da się zamknąć, to i nie można go wycofać. W przypadku Windows czy Apple jesteśmy uzależnieni od widzimisię producenta (dzisiaj potencjalnie mógłby powiedzieć "zwijam interes" i po zapłaceniu kar za zerwanie kontraktów to zrobić), w linuksowym światku każdy może przejąć pałeczkę i udostępnić to samo środowisko na innej platformie.

Pamiętajmy przy tym, że obecny kod x86 ma nad sobą niewidzialne warstwy, w których siedzi nie wiadomo co. Intel już próbował łatać problemy z procesorami w sposób "lekko" kontrowersyjny - co on robi w innych miejscach, to jedynie Alan Turing wie...

I właśnie dlatego bym podsumował to następująco:

1. dzisiejsi ludzie w sporej większości są roszczeniowi i często winni samym sobie, że "ich dane" nie są już "ich" (ale że sprzęt / soft nie działa jak powinien) - muszą wiedzieć, że wersja stabilna to wersja stabilna, beta to beta, backupy się robi i sprawdza, regulaminy się czyta, itp.

2. ilość znajdowanych luk tylko potwierdza, że platforma linuksowa rośnie w siłę, a open-source działa (oczywiście, oczywiście, powinniśmy mieć jeszcze lepsze sposoby na pisanie softu, ale... z kodem jest to łatwiejsze niż bez niego) 

3. bezpieczeństwo Linuksa polega również na tym, że daje pewność, że nagle nie obudzimy się z ręką w nocniku (tzn. w świecie, gdzie monopol na sprzęt komputerowy ma tylko jedna firma)