Udostępniono badaczy Cisco Talos Kilka dni temu luka w jądrze Linuksa, którą można wykorzystać do kradzieży danych a także służyć jako środek do eskalacji przywilejów i narażania systemu.
Słaby punkt opisana jako „luka umożliwiająca ujawnienie informacji co mogłoby pozwolić napastnikowi zobaczyć pamięć stosu jądra. '
CVE-2020-28588 to luka w zabezpieczeniach wykryto w urządzeniach ARM funkcjonalność proc / pid / syscall 32-bitowe z systemem operacyjnym. Według Cisco Talos, problem został po raz pierwszy odkryty na urządzeniu z usługą Azure Sphere.
W funkcjach / proc / pid / syscall systemu Linux Kernel 5.1 Stable i 5.4.66 istnieje luka umożliwiająca ujawnienie informacji. Mówiąc dokładniej, ten problem został wprowadzony w wersji 5.1-rc4 (zatwierdzenie 631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0) i nadal występuje w wersji 5.10-rc4, więc prawdopodobnie dotyczy wszystkich wersji pośrednich. Osoba atakująca może odczytać / proc / pid / syscall, aby aktywować tę lukę, powodując utratę zawartości pamięci przez jądro.
Proc to specjalny pseudosystem plików w systemach operacyjnych typu Unix, które służy do dynamicznego dostępu do danych procesowych znaleziony w jądrze. Przedstawia informacje o procesach i inne informacje systemowe w hierarchicznej strukturze przypominającej plik.
Na przykład zawiera podkatalogi / proc / [pid], z których każdy zawiera pliki i podkatalogi ujawniające informacje o określonych procesach, które można odczytać przy użyciu odpowiedniego identyfikatora procesu. W przypadku pliku „syscall” jest to prawidłowy plik systemu operacyjnego Linux, który zawiera dzienniki wywołań systemowych używanych przez jądro.
Dla firmy lHakerzy mogą wykorzystać tę lukę i uzyskać dostęp do systemu operacyjnego i pliku wywołania systemowego poprzez system używany do interakcji między strukturami danych jądra, Proc. Wpis syscall procfs może zostać wykorzystany, jeśli hakerzy wydadzą polecenia generujące 24 bajty niezainicjowanej pamięci sterty, co prowadzi do ominięcia randomizacji układu przestrzeni adresowej jądra (KASLR).
Patrząc na tę konkretną funkcję, wszystko wygląda dobrze, ale warto zauważyć, że plik
args
przekazany parametr pochodzi zproc_pid_syscall
funkcja i jako taka jest właściwie typu__u64 args
. W systemie ARM definicja funkcji konwertuje rozmiar plikuarg
tablica w czterobajtowych elementach z ośmiu bajtów (odunsigned long
w ARM to 4 bajty), co skutkuje tym wmemcpy
jest kopiowany do 20 bajtów (plus 4 dlaargs[0]
).Podobnie dla i386, gdzie
unsigned long
to tylko 4 bajtyargs
zapisywane są pierwsze 24 bajty argumentu, pozostawiając pozostałe 24 bajty nienaruszone.W obu przypadkach, jeśli spojrzymy wstecz na
proc_pid_syscall
funkcjonować.Podczas gdy w 32-bitowych ARM i i386 kopiujemy tylko 24 bajty do
args
array, ciąg formatu kończy się odczytaniem 48 bajtów plikuargs
matrix, ponieważ%llx
Ciąg formatujący ma osiem bajtów w systemach 32-bitowych i 64-bitowych. Tak więc 24 bajty niezainicjowanej pamięci sterty kończą się otrzymaniem danych wyjściowych, co może prowadzić do obejścia KASLR.
Naukowcy to twierdzą ten atak jest „niemożliwy do wykrycia zdalnie w sieci” ponieważ odczytuje prawidłowy plik z systemu operacyjnego Linux. „Jeśli zostanie prawidłowo użyty, haker może wykorzystać ten wyciek informacji, aby skutecznie wykorzystać inne niezałatane luki w systemie Linux” - mówi Cisco.
W związku z tym Google niedawno powiedział:
„Luki w zabezpieczeniach pamięci często zagrażają bezpieczeństwu urządzeń, zwłaszcza aplikacji i systemów operacyjnych. Na przykład w mobilnym systemie operacyjnym Android obsługiwanym również przez jądro Linux, Google twierdzi, że odkrył, że ponad połowa luk w zabezpieczeniach rozwiązanych w 2019 r. Była wynikiem błędów bezpieczeństwa pamięci.
Nie mniej ważny Zaleca się aktualizację wersji 5.10-rc4, 5.4.66, 5.9.8 jądra Linuksa, ponieważ Ta luka została przetestowana i potwierdzona, że może wykorzystywać następujące wersje jądra systemu Linux.
W końcu jeśli chcesz dowiedzieć się więcej na ten temat O poście możesz sprawdzić szczegóły w następujący link.