NFsec Logo

Błędy w weryfikatorze BPF pozwalają na wykonanie dowolnego kodu w jądrze

22/12/2017 w Bezpieczeństwo Możliwość komentowania Błędy w weryfikatorze BPF pozwalają na wykonanie dowolnego kodu w jądrze została wyłączona

J

ądro Linuksa zbudowane ze wsparciem wywołania systemowego bpf(2) (CONFIG_BPF_SYSCALL) podatne jest na uzyskanie dostępu do odczytu i zapisu przestrzeni adresowej jądra. Do błędu może dojść, gdy użytkownik systemu uruchomi szkodliwy program BPF powodujący błędy obliczeń w module weryfikatora (funkcja check_alu_op) Berkeley Packet Filter. Tym samym nieuprawniony użytkownik może wykorzystać tę lukę do eskalacji swoich uprawnień w systemie. Podatne są wersje jądra od 4.9 do 4.14.8. Ograniczenie luki jest możliwe poprzez ustawienie opcji w sysctl:

echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled

lub

sysctl -w kernel.unprivileged_bpf_disabled=1
echo kernel.unprivileged_bpf_disabled=1 | \
tee /etc/sysctl.d/90-CVE-2017-16995-CVE-2017-16996.conf

Spowoduje ona zablokowanie dostępu do wywołania bpf() dla nieuprawnionych użytkowników (ponowne jej wyłączenie wymagać będzie restartu systemu).

Więcej informacji: Unprivileged bpf(), Debian, RedHat/CentOS, Ubuntu

Jak znaleźć ducha w linuksowej skorupie? – eBPF

07/09/2017 w Administracja Możliwość komentowania Jak znaleźć ducha w linuksowej skorupie? – eBPF została wyłączona

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ść… ]