NFsec Logo

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

23/07/2017 (4 tygodnie temu) 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 (5 tygodni temu) 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

Linux 4.7 otrzymał nową funkcję zabezpieczeń przeniesionych z Chrome OS

30/07/2016 w Administracja, Bezpieczeństwo Brak komentarzy.

N

ajnowsza wersja Linuksa otrzymała nową funkcję bezpieczeństwa o nazwie „LoadPin”, która została przeniesiona z systemu Chrome OS i umożliwia wprowadzenie ograniczeń odnośnie nośników i lokalizacji, z których mogą być ładowane moduły i firmware jądra. Innymi słowy LoadPin jest nowym mini Modułem Bezpieczeństwa Linuksa (ang. Linux Security ModuleLSM, który przechwytuje skonsolidowany zaczep LSM wywołania kernel_file_read, aby nasz system ładował wszystkie dodatki (moduły, firmware, obrazy kexec, polityki bezpieczeństwa) pochodzące z jednego zaufanego systemu plików. Poprzez zaufany system plików rozumie się tutaj taki, który jest umieszczony na urządzeniu tylko tylko-do-odczytu (np. CDROM lub dm-verity [wbudowany w Androidowe jądro od czasów wersji 4.4]). Niweluje to konieczność podpisywania każdego ładowanego pliku z osobna, ponieważ pierwszy plik ładowany przez interfejs odczytu plików jądra jest „przypinany” do systemu plików użytego do załadowania, a wszystkie pliki pochodzące z poza niego są odrzucane. Włączeniem lub wyłączeniem funkcji możemy sterować poprzez opcję SECURITY_LOADPIN_ENABLED w jądrze lub parametrem loadpin.enabled=1/0 przy starcie systemu.

Więcej informacji: The LoadPin security module

Keysniffer (keylogger) jako moduł do jądra Linuksa

22/05/2016 w Bezpieczeństwo Brak komentarzy.

A

run Prakash Jana napisał moduł do jądra Linuksa, który przechwytuje naciśnięcia klawiszy na klawiaturze. Współpracuje z klawiaturami o układzie US (i zgodnych z nimi komputerami przenośnymi). Przyciśnięte klawisze są zapisywane w przestrzeni systemu plików pomagającym w debugowaniu innych systemów plików – debugfs tak długo dopóki moduł pozostaje załadowany w systemie.
[ czytaj całość… ]

Żegnaj OverlayFS

26/02/2016 w Bezpieczeństwo Brak komentarzy.

N

a razie czas pożegnać się z systemem plików overlayfs dostępnym w jądrze Linux od wersji 3.18. Ostatnio ponownie pojawiły się kolejne błędy bezpieczeństwa w tym module. Jest to ostatnio jeden z najczęstszych składników wchodzących w skład możliwości eksploatacji bezpieczeństwa jądra. Skoro w systemie Ubuntu jest tylko modułem do załadowania, a na systemie nie uruchamiane są żadne kontenery – można go prosto wyłączyć tworząc plik /etc/modprobe.d/blacklist-ofs.conf:

# Overlayfs security issues
blacklist overlayfs
install overlayfs /bin/false

Ewidetnie widać, że projekt jest na razie zbyt młody pod względem kodu, aby mógł zostać z powodzeniem stosowany w systemach produkcyjnych.

Strona 1 z 3123