NFsec Logo

Wyłączenie szybkiego przeładowywania systemu z kexec

18/10/2017 (4 dni temu) w Bezpieczeństwo Brak komentarzy.

K

exec to wywołanie systemowe, które umożliwia załadowanie i uruchomienie innego jądra z aktualnie uruchomionego systemu. Jest to bardzo przydatna funkcjonalność dla deweloperów jądra Linuksa lub innych osób, którym zależy na czasie. Bardzo szybki restart odbywa się bez czekania na cały proces ładowania systemu BIOS lub UEFI. Nowe jądro ładowane jest bezpośrednio do pamięci i z niej uruchamiane. Zapobiega to długim czasom oczekiwania związanym z pełnym uruchomieniem komputera i może pomagać w niektórych przypadkach spełnić wymagania wysokiej dostępności minimalizując przestoje systemów (należy jednak pamiętać, że kexec w zależności od konfiguracji sprzętowych może działać niepoprawnie z powodu urządzeń, które nie zostały w pełni zainicjowane podczas korzystania z tej metody).
[ czytaj całość… ]

2-letnia luka powraca do jądra Linuksa

08/10/2017 (2 tygodnie temu) w Bezpieczeństwo Brak komentarzy.

Błąd w jądrze Linuksa, który został odkryty dwa lata temu, ale nie był uważany za zagrożenie dla bezpieczeństwa w tym czasie, został właśnie uznany za lukę umożliwiającą eskalację uprawnień na poziomie lokalnym. Błąd ten został zidentyfikowany jako CVE-2017-1000253 i pierwotnie został odkryty przez badacza pracującego dla Google Michaela Davidsona w kwietniu 2015 roku. Z powodu zignorowania powagi tego błędu – poprawka dla niego nie została przekazana do długoterminowo wspieranej wersji jądra 3.10.77 (warto wspomnieć, że wersje LTS właśnie przeszły z cyklu 2 letniego, na 6 letni).
[ czytaj całość… ]

Jak znaleźć ducha w linuksowej skorupie? – eBPF

07/09/2017 w Administracja Brak komentarzy.

A

naliza wydajności często jest ograniczona przez brak widoczności różnych zjawisk zachodzących w systemie. Obserwacja tych zjawisk pozwala inżynierom systemów łatwo identyfikować elementy, które zawierają ograniczenia i mogą być szybsze. „Najnowszym” narzędziem do obserwacji systemu operacyjnego Linux jest BPF (ang. Berkeley Packet Filter). Został on opracowany w 1992 roku, aby zapewnić sposób filtrowania pakietów sieciowych oraz uniknięcia ich bezużytecznego kopiowania z przestrzeni jądra do użytkownika. Początkowo składał się z prostego kodu bajtowego, który był wstrzykiwany z przestrzeni użytkownika do jądra. Tam był sprawdzany przez weryfikator – w celu uniknięcia krachu jądra lub problemów z bezpieczeństwem – i dołączany do gniazda, a następnie uruchamiany na każdym odebranym pakiecie.
[ czytaj całość… ]

TCP BBR – nowy algorytm kontroli przeciążenia od Google

23/07/2017 w Administracja Brak komentarzy.

B

ottleneck Bandwidth and RTT, czyli BBR jest nowym algorytmem kontroli przeciążenia TCP od firmy Google. Został on przetestowany w jego centrach danych, jak i frontowych serwerach takich stron jak: Google.com oraz YouTube.com. Dąży on do optymalizacji zarówno przepustowości, jak i opóźnienia – RTT. Jak wspomina samo Google po wprowadzeniu tego mechanizmu do swojej usługi publicznej chmury obliczeniowej, uzyskał średnio od 4%14% większą przepustowość sieciową. Pierwsze publiczne wydanie BBR nastąpiło we wrześniu 2016 roku. Do jego użycia wymagane jest posiadanie jądra w wersji 4.9 lub wyższej, w przeciwnym wypadku wymagane jest nałożenie łatki i rekompilacja jądra.
[ czytaj całość… ]

Kernel Address Space Layout Randomization

18/07/2017 w Bezpieczeństwo Brak komentarzy.

J

ak zostało to wspomniane we wcześniejszym wpisie – w wersji Linuksa v3.14 został wprowadzony mechanizm Kernel Address Space Layout Randomization. Wiele dystrybucji od jakiegoś czasu i tak zdecydowało o włączeniu KASLR dlatego od wersji v4.12 jądra Ingo Molnar podjął decyzję o jego aktywacji w standardowej konfiguracji. Oznacza to, że kod jądra będzie losowo umieszczany w pamięci RAM przy każdym starcie systemu:

# 1'wsze uruchomienie
root@darkstar:~# cat /proc/kallsyms | grep ' commit_creds\| prepare_kernel'
ffffffff8109eb60 T commit_creds
ffffffff8109ee40 T prepare_kernel_cred
# 2'gie uruchomienie
root@darkstar:~# cat /proc/kallsyms | grep ' commit_creds\| prepare_kernel'
ffffffffaa0a3bd0 T commit_creds
ffffffffaa0a3fc0 T prepare_kernel_cred

Na temat efektywności tego rozwiązania wypowiedział się Brad Spengler z PaX Team. Warto również zapoznać się z prezentacją Black Hat – „Breaking Kernel Address Space Layout Randomization (KASLR) With Intel TSX”. Dlatego rozwiązanie to należy traktować jako jedną z wielu warstw do ochrony systemu.

Więcej informacji: Kernel address space layout randomization

Stack Clash – kurs kolizyjny pamięci w systemach *nix

20/06/2017 w Bezpieczeństwo 1 komentarz.

Czym jest Stack Clash? Jest to eksploatacja błędu w zarządzaniu pamięci oparta na dość starej (12 letniej) technice. Dotyka ona kilku systemów operacyjnych: Linuksa, OpenBSD, NetBSD, FreeBSD oraz Solarisa dla architektury i386 oraz amd64. Technika ta może zostać wykorzystana przez atakujących do naruszenia bezpieczeństwa pamięci oraz wykonania dowolnego kodu. Polega ona na pewnej zależności: każdy program uruchomiony na komputerze używa specjalnego obszaru pamięci zwanego stosem (ang. stack). Obszar tej pamięci jest szczególny, ponieważ rośnie automatycznie wraz z zapotrzebowaniem na niego przez program. Jeśli jednak przyrost jest zbyt duży i zbliży się do innego obszaru pamięci (na przykład sterty – ang. heap) może dojść do sytuacji, w której program może pomylić stos z innym obszarem pamięci. Daje to możliwość wykorzystania owego zamieszania do nadpisania stosu przez inny obszary pamięci lub odwrotnie.
[ czytaj całość… ]

Linux – lokalna eskalacja uprawnień w n_hdlc

12/03/2017 w Bezpieczeństwo Brak komentarzy.

W

parę tygodni po ukazaniu się błędu w protokole DCCP – Andrey Konovalov ponownie odkrywa możliwość eskalacji uprawnień i lokalne uzyskanie praw administratora w sterowniku drivers/tty/n_hdlc.c. Sterownik zapewniający wsparcie dla HDLC występuje jako moduł jądra w wielu dystrybucjach, które mają w konfiguracji ustawioną opcję CONFIG_N_HDLC=m. Standardowo błąd jest obecny w systemie Linux od 2009 roku i również został znaleziony przy pomocy syzkallera. Łatanie systemu jest szybkie i proste, jak w przypadku podatności DCCP – poniżej dla rodziny RedHat:

echo "install n_hdlc /bin/true" >> /etc/modprobe.d/disable-n_hdlc.conf

Więcej informacji: Linux kernel: CVE-2017-2636: local privilege escalation flaw in n_hdlc

DCCP – lokalna eskalacja uprawnień w jądrze Linuksa

25/02/2017 w Bezpieczeństwo Brak komentarzy.

N

owa podatność została odnaleziona przez badacza bezpieczeństwa. Andrey Konovalov odkrył za pomocą (do tego stworzonego) fuzzera spod stajni Google błąd w protokole DCCP – The Datagram Congestion Control Protocol. Luka ta podobnie, jak DirtyCow istnieje w jądrze już ponad 11 lat i dotyka wszystkie kluczowe dystrybucje systemu Linux: Debian, Ubuntu, OpenSUSE oraz RedHat. Luka typu use-after-free została rozpoznana w implementacji zwalniania przez DCCP zasobów SKB (buffor gniazda) dla pakietu typu DCCP_PKT_REQUEST kiedy opcja IPV6_RECVPKTINFO jest ustawiona na gnieździe. Lokalny użytkownik jest w stanie wykorzystać ten błąd do modyfikacji pamięci jądra i w ten sposób podniesienia swoich uprawnień w systemie. Warto wspomnieć, że dwa miesiące temu została ujawniona podobna luka w pakiecie AF. Osoby, które nie chcą aktualizować swoich systemów do nowszych wersji np. z powodu obawy o stabilność – powinny zadbać o odpowiednie wpisy blokujące ładowanie wspomnianego modułu.

Więcej informacji: Security expert discovered a new 11-year old privilege escalation vulnerability, tracked as CVE-2017-6074, in the Linux kernel

Ubuntu 14.04, 16.04 LTS i błąd out of memory (oom) killer

29/01/2017 w Administracja, Debug Brak komentarzy.

Jeśli podczas łatania np. DirtyCow na naszym serwerze wyposażonym w Ubuntu Trusty lub Xenial zainstalowane zostało jądro w wersji 4.4.0-59-generic i nagle wcześniej działające bez problemu aplikacje oraz daemony zaczęły zaliczać błędy typu: out of memory (brak pamięci) jest wielce prawdopodobne, że jest to spowodowane błędem, który wkradł się podczas rozwoju wersji. Tymczasowym rozwiązaniem do czasu aż zostanie wydany kolejny patchset naprawiający to zachowanie jest cofnięcie się do wersji: 4.4.0-57.

Więcej informacji: mm, oom: prevent premature OOM killer invocation for high order request

Dirty COW – lokalne podniesienie uprawnień poprzez lukę w jądrze

21/10/2016 w Bezpieczeństwo Brak komentarzy.

9

letni błąd w jądrze systemu Linux pozwala na lokalne podniesienie uprawień poprzez sytuację wyścigu w sposobie, w jaki podsystem pamięci obsługuje kopiowanie przy zapisie (Copy On Write – COW). Nieuprzywilejowany użytkownik może wykorzystać tę lukę, aby zdobyć dostęp do zapisu zmapowanej pamięci będącej normalnie tylko do odczytu i tym samym podnieść swoje uprawnienia. Skutkuje to możliwością obejścia standardowego mechanizmu uprawnień oraz modyfikacją wrażliwych plików binarnych systemu. Błąd istnieje od 2007 roku, czyli mniej więcej od wersji 2.6.22 i został naprawiony 18.10.2016. Luka nadal mogła zostać w ukryciu, gdyby nie Phil Oester, który przeanalizował włamanie na jeden ze swoich serwerów (przechwytywał cały, przychodzący ruch do swoich webserwerów – jak twierdzi zawsze to pomaga w informatyce śledczej) i odtworzył binarny plik eksploita użytego przez włamywacza. Przeanalizował jego działanie i przekazał oficjalnym opiekunom jądra Linuksa. PoCe znajdują się tutaj.

Więcej informacji: Dirty COW (CVE-2016-5195) is a privilege escalation vulnerability in the Linux Kernel

Strona 1 z 3123