🧨 Bootloader GRUB: Ukryte zagrożenia podczas startu systemu
🔐 Jak atakujący mogą przejąć kontrolę przed załadowaniem kernela
📘 Wstęp: Bootloader jako zapomniane ogniwo bezpieczeństwa
Większość administratorów i specjalistów ds. bezpieczeństwa koncentruje się na ochronie systemu operacyjnego po jego uruchomieniu – twarde reguły firewalla, SELinux, AppArmor, aktualizacje pakietów. Tymczasem atakujący coraz częściej szukają słabych punktów „niżej” – jeszcze zanim system się w pełni załaduje. Jednym z takich punktów jest GRUB – domyślny bootloader w wielu dystrybucjach Linuksa.
Czy GRUB może być wektorem ataku? Odpowiedź brzmi: tak, i to w sposób wyjątkowo niebezpieczny. Bootloader działa z najwyższymi możliwymi uprawnieniami, zanim kernel przejmie kontrolę. Dlatego warto przyjrzeć się jego budowie, potencjalnym lukom i sposobom zabezpieczenia.
⚙️ Czym jest GRUB i jaka jest jego rola?
GRUB (GRand Unified Bootloader) to wieloetapowy bootloader pozwalający na:
- wybór systemu operacyjnego podczas startu,
- przekazywanie parametrów do jądra Linuksa,
- uruchamianie systemów w trybie rescue/recovery,
- ładowanie initramfs i kernela.
🔍 Etapy działania GRUB-a:
- Stage 1 – zlokalizowany w MBR lub GPT headerze (512 B).
- Stage 1.5 – kod pośredni ładowany z pierwszych sektorów dysku.
- Stage 2 – pełna funkcjonalność GRUB, odczyt plików z
/boot/grub/
.
🕵️♂️ Jakie zagrożenia niesie GRUB?
🧨 1. Modyfikacja konfiguracji GRUB (grub.cfg
)
Bez odpowiedniego zabezpieczenia, atakujący z fizycznym dostępem może:
- dodać nowe wpisy bootujące np. z initramfs zawierającym backdoora,
- przekazać parametry jądra typu
init=/bin/bash
– uzyskując root access, - usunąć mechanizmy ochrony (np.
selinux=0
,apparmor=0
,single
).
🔒 Ochrona:
Zawsze używaj hasła GRUB – w wersji zaszyfrowanej SHA-512.
Dodaj je do pliku /etc/grub.d/40_custom
:
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.xxxxx
👣 2. Podmiana GRUB-a – atak fizyczny (tzw. Evil Maid Attack)
Atakujący z dostępem do urządzenia może:
- zainstalować zmodyfikowaną wersję GRUB,
- załadować zmodyfikowany kernel lub initrd,
- przechwytywać hasła lub inicjalizować keyloggery.
🧬 Ewolucja:
W 2020 roku odkryto krytyczną lukę Boothole (CVE-2020-10713) – umożliwiającą podmianę GRUB nawet w systemach z Secure Boot!

⚙️ 3. Brak kontroli nad Secure Boot
Secure Boot to mechanizm UEFI weryfikujący podpisy binarek uruchamianych podczas bootowania. Bez niego:
- każda binarka może zostać załadowana,
- GRUB może ładować dowolne niepodpisane jądro,
- możliwe są ataki „bootkit” i modyfikacja initrd.
🛡️ Zalecenie:
W środowiskach produkcyjnych zawsze aktywny Secure Boot, własne podpisy lub korzystanie z podpisanych komponentów (np. Shim).
🎯 4. Brak ochrony przed opcją „e” w menu GRUB
Domyślnie, GRUB pozwala użytkownikowi edytować wpisy bootujące (klawisz e
). Bez hasła:
- można wprowadzić zmienne jądra,
- np.
init=/bin/sh
+rw
i zyskać dostęp do systemu bez logowania.
🔐 Rozwiązanie:
Zablokuj edycję GRUB poprzez wpis w grub.cfg
:
set timeout=5
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512...
menuentry "Ubuntu" {
...
set root='hd0,msdos1'
linux /vmlinuz root=/dev/sda1 ro quiet splash
initrd /initrd.img
# brak editable entry
}
🧬 Zagrożenia łańcucha startowego (boot chain)
Po GRUB-ie uruchamiane są:
- jądro Linuksa (
vmlinuz
), - ramdysk initrd,
init
jako pierwszy proces użytkownika.
Każdy z tych elementów może być zaatakowany, jeśli bootloader nie kontroluje ich integralności.
📌 Przykład:
GRUB może uruchomić zainfekowane initrd
, który działa w kontekście root i może instalować np. ukryte rootkity lub przekierowania systemowe.
🌐 GRUB i zagrożenia w internecie
Choć GRUB działa przed uruchomieniem sieci, atak na bootloader może przygotować system do dalszych infekcji po jego starcie. Przykłady:
- Instalacja rootkita – działającego po załadowaniu systemu.
- Ukrycie komunikacji C&C – poprzez modyfikację routingu w initrd.
- Wyłączenie mechanizmów SELinux/AppArmor – z poziomu jądra.
- Zdalne przejęcie systemu przez backdoory – przygotowane w init.
🛡️ Dlatego ataki na GRUB to nie tylko fizyczne manipulacje – to brama do zdalnych zagrożeń w internecie.
🧰 Rekomendacje dla administratorów
🔐 1. Hasło do GRUB – zawsze obowiązkowe
Zabezpiecz grub.cfg
i zablokuj edycję wpisów bootujących.
🧾 2. Szyfrowanie dysku (LUKS)
Atakujący nie uruchomi zmodyfikowanego initrd, jeśli cały /boot
i /
są zaszyfrowane.
🔒 3. Włącz Secure Boot
Ogranicza możliwość uruchomienia niepodpisanych komponentów.
🔍 4. Monitoruj zmiany w /boot
Użyj narzędzi jak AIDE, OSSEC, Wazuh do wykrywania nieautoryzowanych zmian.
🧑💼 5. Ogranicz fizyczny dostęp
Serwery produkcyjne powinny być chronione fizycznie – w szafach rackowych z kontrolą dostępu.
🧾 Podsumowanie
GRUB to newralgiczny punkt każdego systemu linuksowego. Jako bootloader, działa z maksymalnymi uprawnieniami i jeśli zostanie przejęty, żadne inne zabezpieczenia nie będą skuteczne.
🚨 Kluczowe fakty:
- GRUB może być zmodyfikowany przez atakującego w celu przejęcia kontroli.
- Luki takie jak Boothole pokazały, że nawet podpisane komponenty są podatne.
- Tylko połączenie haseł GRUB, Secure Boot, szyfrowania dysku i monitoringu zapewnia realną ochronę.
🔗 Pamiętaj też, że bezpieczny boot to dopiero początek obrony przed zagrożeniami w internecie – prawdziwe niebezpieczeństwa czyhają po załadowaniu systemu.