Kernel Security Checker: które załadowane moduły zwiększają Twoją powierzchnię ataku
Każdy załadowany moduł jądra to kawałek kodu działającego z najwyższymi uprawnieniami. Im więcej ich masz, tym większa powierzchnia ataku. Problem w tym, że typowy system ładuje moduły, których nikt świadomie nie włączał: stare protokoły sieciowe, egzotyczne systemy plików, sterowniki sprzętu, którego nawet nie masz.
Dotychczas Kernel Security Checker patrzył na konfigurację i wersję jądra. Teraz doszła trzecia perspektywa: co realnie jest załadowane w tej chwili.
Co robi zakładka Moduły
Wklejasz wynik lsmod, a narzędzie porównuje listę z bazą modułów wysokiego ryzyka i pokazuje:
- moduły będące zbędną powierzchnią ataku — stare protokoły sieciowe (
dccp,sctp,rds,tipc,appletalk), rzadkie systemy plików (cramfs,freevxfs,jffs2,udf) oraz magistrale z bezpośrednim dostępem DMA do pamięci (FireWire, Thunderbolt) i Bluetooth, - moduły powiązane ze znanymi CVE — np.
esp4/esp6irxrpcz łańcucha Dirty Frag alboalgif_aeadz CopyFail, - gotową blacklistę do wklejenia w
/etc/modprobe.d/.
Trafienia są na dwóch poziomach: czerwone (powiązane z CVE, warto zająć się od razu) i pomarańczowe (zbędna powierzchnia ataku, wyłącz jeśli nie używasz).
Jak użyć
Pobierz listę załadowanych modułów:
lsmod > modules.txt
Wklejasz zawartość albo wrzucasz plik do zakładki Moduły. Narzędzie nic nie zapisuje, dopasowanie robi w pamięci.
Na typowym desktopie zobaczysz zwykle Bluetooth, FireWire i kilka protokołów, których nigdy nie tknąłeś. Na serwerze lista bywa krótka, ale to właśnie tam najbardziej opłaca się wyciąć wszystko, co zbędne. Pospolite rzeczy (ext4, sterownik Twojej karty sieciowej, NVMe) narzędzie celowo pomija, żeby nie zasypywać Cię szumem.
Blacklista, a nie usuwanie
Wpisy wyglądają tak:
install dccp /bin/false
install firewire-core /bin/false
To skuteczniejsze niż samo blacklist. Forma install ... /bin/false blokuje również ręczne modprobe oraz ładowanie modułu przez zależności. Wrzucasz je do pliku w /etc/modprobe.d/, na przykład /etc/modprobe.d/hardening.conf, i przeładowujesz initramfs (update-initramfs -u na Debianie i Ubuntu), żeby blokada działała od wczesnego boota.
Ważne: załadowany zwykle znaczy używany
Jeśli moduł jest na liście lsmod, to coś go załadowało, często dlatego, że jest naprawdę potrzebny. Dlatego:
- zanim zablokujesz moduł sieciowy albo filesystemowy, upewnij się, że żadna usługa go nie używa,
- moduły z CVE (
esp4,rxrpc) blokuj tylko wtedy, gdy nie korzystasz z IPsec ani AFS. Jeśli korzystasz, lepszym rozwiązaniem jest aktualizacja jądra do wersji z łatką, a nie wyłączanie funkcji.
Traktuj wynik jak listę kandydatów do przeglądu, a nie polecenie do bezmyślnego wklejenia. Selekcja modułów bazuje na publicznych zaleceniach hardeningu (KSPP, CIS Benchmark) plus naszej bazie CVE.
Powiązane: Dirty Frag: łańcuch dwóch LPE przez page cache | CopyFail: 9 lat ukrytej eskalacji uprawnień
Pełna analiza konfiguracji i wersji: Kernel Security Checker