Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Czy dystrybucje GNU/Linux i systemy z rodziny BSD można określić, jako bezpieczne?

Dość znaczna część użytkowników systemów GNU/Linux, BSD, nie zdaje sobie sprawy
z tego, że ich graficzny interfejs użytkownika nie posiada separacji…

Mój Linux, to moja twierdza?

Załóżmy drogi czytelniku, że posiadasz najnowszą Fedorę, system jest w pełni zaktualizowany,
a dodatkowo zbudowałeś sobie również zaporę korzystając z iptables.
Masz włączony SELinux, ponieważ nie posłuchałeś „dobrych rad”, z licznych tutoriali, które na starcie zachęcają do jego wyłączenia. Zakładam też, że pewnie szyfrujesz swoje dane korzystając z truecrypta. Co więcej na Twoim szyfrowany kontenerze truecrypta, znajduje się szyfrowany plik keepass, którego z kolei używasz do przechowywania haseł. Przeczytałeś również, że implementacja SELinux do Red Hat Ent. Linux była efektem współpracy NASA i Red Hata, czy możesz się czuć bezpieczniej? : )

Brak separacji GUI

Cały problem polega jednak na tym, że jeśli uruchomisz keepass w celu zapisania swojego tajnego bezpiecznego hasła i masz np. odpalonego gimpa, to pomiędzy tymi dwoma aplikacjami nie ma żadnej izolacji na poziomie GUI.

Czyli jedna aplikacja może przechwycić od drugiej naciskane klawisze klawiatury lub nawet je wstrzyknąć!

Architektura serwera X, została zaprojektowana w latach 80, co usprawiedliwia ówczesne idealistyczne podejście twórców, zakładali Oni, bowiem, że każda aplikacja jest „dobra” a świat jest pięknym miejscem, w którym każdy dzieli się ze sobą wiedzą i zna hasło Richarda Stallmana. : )

Gdy hasła po raz pierwszy pojawiły się w AI Lab, nie zmieniłem zdania i nadal nie widziałem potrzeby ich stosowania - twierdził Stallman. - Ponieważ nie wierzę w konieczność chronienia zasobów komputera, nie mogłem wspierać wprowadzenia reżimu bezpieczeństwa

Czasy jednak się zmieniły, Internet również…

8 listopada 2006 Microsoft wydał system Windows Vista w którym wprowadził izolację na poziomie GUI, obecnie mamy kwiecień 2013r Linux / BSD - ciągle wykorzystuje X11, a założenia projektowe z lat 80, dotyczące „dobrych” aplikacji jest ciągle aktualne…

Dowód?

Otwórz okno terminala i jako zwykły użytkownik, bez praw administratora wpisz polecenie:

xinput –list

Polecenie to wyświetla wszystkie urządzenia wejścia, każde urządzenie ma przypisane id, odnajdź id swojej klawiatury, u mnie jest to „AT Translated Set 2 keybord id=7” kolejno wykonaj następujące polecenie w terminalu:

xinput test TwojeID

Teraz otwórz następne okno terminala i wpisz np. swoje hasło na roota, otwórz przeglądarkę i zaloguj się do swojego konta pocztowego, czy też banku, to samo możesz zrobić z truecryptem i keepasem lub obejrzyj zrzuty ekranu, które przygotowałem.

Kody klawiszy możecie znaleźć na wiki.archlinux.org

Podsumowanie

Przecierasz oczy ze zdziwienia? : )
Błąd w architekturze X11 powoduje, że np. Twoje Sudoku może mieć dostęp do Twojego hasła:
a) na roota,
b) do truecrypta / keepassa
c) czy też do poczty / konta bankowego : )

Co więcej, aby tego dokonać nie potrzebujesz uprawnień roota. : )

Natomiast napisanie własnego keyloggera na Linuxa / BSD jest zadaniem naprawdę prostym.

Bibliografia:

[1] Joanna Rutkowska, The Linux Security Circus: On GUI isolation[2] https://wiki.archlinux.org/index.php/Xmodmap[3] http://stallman.helion.pl/ch07.html[4] http://pl.wikipedia.org/wiki/Windows_Vista[5] http://www.redhat.com/about/news/archive/2012/5/red-Hats-decade-of-col... 

linux bezpieczeństwo

Komentarze

0 nowych
  #1 29.04.2013 13:41

Zły Windows, oj, zły - ale nie ma to jak Linux, który daje poczucie bezpieczeństwa... Jak widać, czasami tylko i wyłącznie poczucie ;-) Choć jak ze wszystkim - trzeba znać możliwości i ograniczenia, i co najważniejsze - korzystać z głową.

GregKoval   8 #2 29.04.2013 13:45

>>"Natomiast napisanie własnego keyloggera na Linuxa / BSD jest zadaniem naprawdę prostym."

Czy autor mógłby nas zaszczycić taką apką? Oczywiście działającą.

Autor zapomniał jednak wspomnieć o AppArmor, które jest obecnie modułem jądra i nie pozwala aplikacji na wykonanie kodu, do którego nie została uprawnień. Pominę tu także kilkanaście innych zabezpieczeń, wliczając choćby te stosowane w repozytoriach, gdzie trudno o podróbkę pliku ze szkodliwym kodem.

  #3 29.04.2013 15:22

Odgrzewany kotlet, który pojawił się wielokrotnie

Problem jest inny - skąd zdobyć własnego keyloggera, w zasadzie 99% aplikacji mamy z repozytorium, gdzie takowych nie powinno być.

To coś w stylu - skąd brać wirusy na Linuksa?

Chillout   7 #4 29.04.2013 15:42

Niektórzy chyba nie śpią po nocach z takich powodów.
To tylko komputer...

Airborn   8 #5 29.04.2013 16:24

Pod Fedorą mogę odczytać sobie te dane nawet prosto z /dev/input/eventX, ale możliwe, że coś w udevie pozmieniałem, bo pod Ubuntu nie da rady.

  #6 29.04.2013 16:40

No i zamiana X'ów na Waylanda sprawi, że nie dość, że Linux będzie jeszcze szybszy (niedługo z drewna zrobię se komputer, a będzie szybszy od i7 pod Windowsem), a dodatkowo ten bug nie będzie występował

  #7 29.04.2013 20:26

Windows 8 chyba naprawdę kiepsko się sprzedaje. :(

Shaki81 MODERATOR BLOGA  38 #8 29.04.2013 21:33

Co prawda tekst ma kilka uchybień ( o których napisano powyżej), ale fakt jet faktem. Linux jest bezpieczniejszy od Windowsa.
Z drugiej jednak strony - nie taki Linux bezpieczny jak go malują...

sylwek3100   3 #9 30.04.2013 00:23

Pewien błąd. Xinput nie działa na wszystkich oknach i we wszystkich inputach np na operze na XFCE nie działa.

_qaz7   6 #10 30.04.2013 21:45

@fervi.doctor
"No i zamiana X'ów na Waylanda sprawi, że nie dość, że Linux będzie jeszcze szybszy(...)"

A jakieś dobre sterowniki dla GPU dla Waylanda weźmiesz skąd ? nVidia i ATI nie bardzo się kwapią.

GregKoval   8 #11 01.05.2013 00:37

@_qaz7

W czasach gdy to oprogramowanie na GPL pozwala Nvidii na stworzenie wsparcia Optimusa for Linux, nie martwiłbym się tak o sterowniki.

xia   4 #12 01.05.2013 10:24

@GregKoval
"W czasach gdy to oprogramowanie na GPL pozwala Nvidii na stworzenie wsparcia Optimusa for Linux, nie martwiłbym się tak o sterowniki."

Typowe myślenie życzeniowe, cechujące pewna grupę ludzi.

  #13 01.05.2013 14:46

Problem jest także gdzie indziej, system Linux używany jest póki co przeważnie przez świadomych i zaawansowanych użytkowników, gdyby jednak nagle mocno powiększył grono użytkowników o wielu "amatorów" zostaliby narażeni na większą ilość ataków. Kiedy gry na Linuksie staną się tak popularne to, jak myślicie nie będą na nie powstawały cracki ? (siedlisko trojanów)

To miło, że w świadomości ludzi zakorzeniło się przeświadczenie, że Linux jest tak bezpieczny, ale nie popadajmy w nadmierny zachwyt, stopień bezpieczeństwa jest zależny od popularności. Większa liczba użytkowników to większa pokusa dla złodziei a większa liczba programów (programistów) to większe prawdopodobieństwo błędów w programach. Błagam, nie mówcie tylko, że wszystkie aplikacje pisane pod Linuksa są pozbawione bugów pozwalających zdolnemu programiście na kompromitację zabezpieczeń. Na pewno istnieje wiele mechanizmów obrony, ale zwykłego śmiertelnika irytowały proste powiadomienia UAC, które bądź co bądź jednak były jedną z barier dla wirusów, więc co będzie w przypadku zaawansowanych zabezpieczeń.

Jest jeszcze jedna rzecz, przez tyle lat Linuks nie uświadczył dobrze konfigurowalnego graficzno firewall-a, czy antykeyloggera. Jest masa użytecznych narzędzi do blokowania portów, wyszukiwania rootkitów, audytu, monitorowania i szyfrowania, jednak większość w trybie tekstowym z "problematyczną" instalacją. Co by nie mówić o Windowsie to jednak stworzył przez te lata jakiś zunifikowany styl aplikacji a tutaj w opozycji mamy mnóstwo pakietów instalacyjnych, środowisk graficznych, rozwiązań, co zbyt przyjemne nie jest - przynajmniej dla początkującego.

pskosinski   4 #14 02.05.2013 21:18

Po pierwsze, to nie jest błąd w architekturze tylko celowe działanie.
Po drugie, z Twojego wpisu ktoś może wyciągnąć mylny wniosek, że stworzenie keyloggera w Windowsie od Visty w górę nie jest możliwe. Otóż jest to możliwe i jest to równie proste jak w przypadku Xorga.

Możesz napisać coś więcej o separacji GUI w Windowsie Vista, bo w podanym przez Ciebie linku do Wikipedii nie ma o tym ani słowa? :)


Przecierasz oczy ze zdziwienia?
Celowe działanie w Windowsach począwszy od 95 a skończywszy 8 powoduje, że np. Twoje Sudoku może mieć dostęp do Twojego hasła:
a) administratora,
b) do truecrypta / keepassa
c) czy też do poczty / konta bankowego

Co więcej, aby tego dokonać nie potrzebujesz uprawnień administratora. :)


Nie można wszystkiego dobrze odseparować pod względem bezpieczeństwa by nie stracić na wydajności. Jednak jak pokazuje Qubes OS w Linuksie jest to możliwe, przy znacznie większym zużyciu zasobów. Nie wiem czy jest to możliwe w Windowsie, jak dotąd nikt nie przedstawił niczego jak Qubes OS dla Windowsa.

Autor edytował komentarz.
d.b   3 #15 04.05.2013 16:24

@GregKoval
„Autor zapomniał jednak wspomnieć o AppArmor, które jest obecnie modułem jądra i nie pozwala aplikacji na wykonanie kodu, do którego nie została uprawnień.”

AppArmor jest implementowany w Ubuntu od wersji 7.10, jego działanie podobne jest do SELinux.
Domyślnie po instalacji Ubuntu np. Firefox nie znajduje się w trybie „enforce mode” w AppArmor.
Po dodaniu profilu Firefox dla AppArmor w trybie „enforce mode” możemy przekonać się, że nasz problem z brakiem izolacji na poziomie GUI pozostaje aktualny. Innymi słowy ani AppArmor ani SELinux nam tutaj w najmniejszym stopniu nie pomoże. Aby wykorzystać błąd w architekturze Xów, nie potrzebujemy żadnych „specjalnych uprawnień” – pisałem o tym w poście. Jeśli nie wierzysz mi, to możesz sprawdzić to sam lub spojrzeć na link, który zamieściłem we wpisie, dodałem do niego zrzut ekranu z AppArmor.

@fervi.doctor
"Odgrzewany kotlet, który pojawił się wielokrotnie "

Mógłbyś podać linki do wielu wpisów na ten temat w języku polskim, które pojawiały się tak notorycznie? :-)

„niedługo z drewna zrobię se komputer, a będzie szybszy od i7 pod Windowsem”

Chętnie obejrzę wyniki Twoich benchmarków, bo jak na razie, jeśli chodzi np. o grafikę Intela,
to na takim samym sprzęcie Ubuntu 13.04 pozostaje w tyle za Windows 8: :-)
http://www.phoronix.com/scan.php?page=article&item=intel_ultrabook_winlin7&a...

@sylwek3100:
„Pewien błąd. Xinput nie działa na wszystkich oknach i we wszystkich inputach np na operze na XFCE nie działa.”

Działa wszędzie tam gdzie masz X11. Niestety Xfce ani Opera tu nie pomoże. :-)
Podaj konkretnie błąd, który otrzymałeś, strzelam, że nie masz xinput. W Twoim Xubuntu
jest to paczka "x11-apps" lub podałeś złe id.

@pskosinski
"Po pierwsze, to nie jest błąd w architekturze tylko celowe działanie. "

To jest naprawdę duży błąd w architekturze, który wynika z czasów, w których projektowano X11.
Kto celowo nie chciałby zapewnić separacji? :-) Obecnie zdecydowanie większym błędem jest to,
że w dzisiejszych czasach Linux / BSD implementuje X11 w takiej formie...

"jak dotąd nikt nie przedstawił niczego jak Qubes OS dla Windowsa."

Joanna Rutkowska, jest w trakcie tworzenia "Qubes HAL: Hypervisor Abstraction Layer"
http://theinvisiblethings.blogspot.com/2013/03/introducing-qubes-odyssey-framewo...
Dzięki czemu Qubes będzie mógł działać w oparciu o Hyper-V, VirtualBoxa czy też VMWare Workstation. W odniesieniu do ostatnich dwóch Qubes stanie się "aplikacją", która będzie instalowana na istniejących systemach operacyjnych w tym także na Windows. :-)

  #16 07.05.2013 18:23

1.czy autor może mi powiedzieć czy jestem bezpieczny na freebsd?
nie używam iksów, pracuję na terminalach tekstowych, pracuję na zwykłym koncie
gui to koszmar współczesności
2.podobna sytuacja może wystąpić na windowsie - co to jest schowek systemowy?

d.b   3 #17 09.05.2013 08:42

@unix64
„czy jestem bezpieczny na freebsd?”

Błąd w architekturze, który opisałem w poście dotyczy sytuacji, w której masz X11, a na postawione przez Ciebie pytanie, nie da się jednoznacznie odpowiedzieć. :-)

Wiele zależy od tego, do czego używasz tego serwera, jakie są tam odpalone usługi, jakie aplikacje hostujesz, do jakich zewnętrznych skryptów się odwołujesz, czy dobrze znasz FreeBSD, czy potrafisz odpowiednio swoim serwerem zarządzać… itd. itd. itd.

  #18 11.05.2013 13:23

Ale stworzenie keyloggera w windows to też dziecinna igraszka
w windowsowym API jest tgz. hook,
każdy program może sobie zgłosić zapotrzebowanie do rejestracji hooka poprzez wywołanie funkcji np.
SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, (HINSTANCE)HInstance, 0);

następnie każde naciśnięcie klawiasza(podtrzymanie i zwolnienie osobno), klik myszki, odpalenie okna(to inny hook), zmiana zawartości katalogu(kolejny hook czy może raczej change notification), uruchomienie funkcji CreateFile, ReadFile(hook z którego korzysta każdy antywirus czy sandbox) etc. to wszystko najpierw przechwyca program z hookiem bo system wywołuje funkcje LowLevelKeyboardProck(int,int) kolejno programów z zarejestrowanymi hookami dopiero póxniej przekazuje wywołania w kolejece message do okien, program decyduje czy przechwyca klawisze czy przekazuje dalej do kolejnej aplikacji.(można wyłożyć system windows w momencie, zawiesić zablokować)

Można dowolnie podstawić uchwyty do plików, okien, klawiszy można zrobić wszystko dlatego napisanie wirusa na windowsa to dziecinna igraszka(napisalem keylogera 12 lat temu bo można)
Udaje svchost.exe i rejestruje niepostrzeżenie do plików w system32\CatRoot, każdy antyvir przy aktywnej heurystyce wykrywa mi go jako wirusa mimo, że on tylko korzysta ze zwyczajnego api win32 i nigdzie nie byl rozpowszechniany(nie mieli opcji przeskanować kodu)

Czepianie sie linuxa owszem ma to sens, mogli by wymyśleć inaczej, ale niewiele odbiega od innych systemów ponieważ hooki mają pewien plus - umożliwiają przechwytywanie globalnych zdarzeń globalnych skrótow klawiaturowych co trudno zrealizować gdyby przypisać te skróty jedynie do konkretnych okienek w kolejce message(czy jakkolwiek jest to zrealizowane - dbus?)

Najwyraźniej wpadłeś na to jak napisać keylogerra w linuchu..dziecinna igraszka, mnie przeraża linuch i jego trylion sposobów na to samo - poprostu się gubie bo jak widać jest równie niebezpieczny co prosty dla programisty jak konstrukcja cepa kernel windowsa