System plików (Ext4, Btrfs, ZFS): Nieznane luki i ich wpływ na integralność danych
🗃️ System plików (Ext4, Btrfs, ZFS): Nieznane luki i ich wpływ na integralność danych
🔍 Wprowadzenie
Systemy plików stanowią fundamentalną warstwę każdego systemu operacyjnego. To one zarządzają przechowywaniem, organizacją i dostępem do danych na nośnikach fizycznych. W przypadku Linuksa, powszechnie stosowane systemy plików to Ext4, Btrfs oraz ZFS.
Choć często postrzegane jako stabilne i bezpieczne, systemy plików nie są wolne od luk – zarówno logicznych, jak i implementacyjnych. Ich kompromitacja może prowadzić do utraty danych, eskalacji uprawnień, a nawet przejęcia systemu przez atakującego.
W niniejszym artykule przedstawiamy zaawansowaną analizę bezpieczeństwa systemów plików, ich architekturę, mechanizmy ochrony integralności i przypadki znanych oraz potencjalnie nieodkrytych luk bezpieczeństwa.
📁 Czym jest system plików?
System plików to sposób organizowania danych na dysku lub innym urządzeniu pamięci masowej. Pełni funkcje:
- przechowywania i odczytu danych,
- organizowania hierarchii katalogów,
- zarządzania metadanymi,
- obsługi mechanizmów kontroli dostępu i bezpieczeństwa,
- realizacji mechanizmów transakcyjnych (journaling, snapshots).

📌 Przegląd najważniejszych systemów plików w Linuksie
System plików | Typ | Zalety | Wady |
---|---|---|---|
Ext4 | dziennikujący | stabilność, wsparcie jądra | brak snapshotów, brak ochrony integralności danych |
Btrfs | copy-on-write (CoW) | snapshoty, kompresja, checksumming | złożoność, młodość implementacji |
ZFS | copy-on-write (CoW) | odporność na uszkodzenia, deduplikacja | duże wymagania RAM, licencyjna kolizja z GPL |
⚠️ Nieznane (i znane) luki w systemach plików
🔸 Ext4 – stary i (nie do końca) bezpieczny koń
Ext4 jest obecnie najpopularniejszym systemem plików w dystrybucjach Linuksa. Choć niezwykle stabilny, nie oferuje ochrony integralności danych na poziomie bloku. To oznacza, że nie ma mechanizmu, który umożliwiałby wykrycie cichego uszkodzenia (tzw. silent corruption).
📛 Przykładowe podatności:
- CVE-2021-3493 – wyścigi przy montowaniu systemów plików, pozwalające na obejście ograniczeń AppArmor,
- CVE-2022-1184 – błąd w obsłudze extentów umożliwiający przepełnienie bufora i potencjalny local privilege escalation,
- błędy w journalingu, które mogą prowadzić do utraty danych po nieprawidłowym odmontowaniu (tzw. journaling replay bugs).
🔸 Btrfs – elastyczność kosztem przewidywalności
Btrfs wprowadza zaawansowane funkcje: snapshoty, RAID, kompresję i wewnętrzne mechanizmy ochrony integralności (CRC32 na blokach danych i metadanych). Jednak to właśnie ta złożoność bywa źródłem krytycznych błędów.
📛 Przykładowe podatności i ryzyka:
- problemy z pełną implementacją RAID5/6 – istniejące od lat i nadal niestabilne,
- CVE-2018-14617 – błąd w funkcji
btrfs_get_root_ref
umożliwiający eskalację uprawnień z poziomu użytkownika, - snapshot replay races – przywracanie snapshotów może powodować niespójności i uszkodzenia systemu plików.
🔸 ZFS – forteca z własnymi słabościami
ZFS uchodzi za najbezpieczniejszy z systemów plików dzięki wbudowanemu:
- copy-on-write,
- checksumming,
- snapshotom,
- replikacji i RAID-Z.
Jednak nawet ZFS nie jest wolny od błędów:
📛 Przykłady:
- CVE-2020-7046 – wyciek pamięci w
zvol
przy przetwarzaniu poleceń ioctl, możliwy DoS i exploit w środowiskach wirtualizowanych, - ryzyko związane z błędną obsługą de-duplication i scrub – może dojść do niezamierzonego nadpisania danych.
🧪 Mechanizmy ochrony integralności – porównanie
Mechanizm | Ext4 | Btrfs | ZFS |
---|---|---|---|
Checksumming danych | ❌ | ✅ | ✅ |
Snapshots | ❌ | ✅ | ✅ |
RAID wbudowany | ❌ | ✅ | ✅ |
Journaling | ✅ | ❌ (CoW) | ❌ (CoW) |
Weryfikacja metadanych | częściowa | pełna | pełna |
Autonaprawa danych | ❌ | tylko RAID | ✅ (RAID-Z) |
🕳️ Ataki i wektory zagrożeń
Systemy plików mogą być atakowane w następujący sposób:
1. Malicious Filesystem Images
Złośliwe obrazy systemu plików przygotowane tak, by wywoływać błędy parsowania lub nadpisywać kernel-space. Przykład: specjalnie spreparowany ext4.img
.
2. Symlink Races i TOCTOU
Systemy plików nie zawsze poprawnie izolują operacje pomiędzy użytkownikami. Błędy Time Of Check to Time Of Use mogą prowadzić do eskalacji uprawnień.
3. Zainfekowane snapshoty / backdoory w metadanych
Złośliwe snapshoty Btrfs lub ZFS mogą zawierać backdoory lub sygnatury ataków, które uruchamiają się po ich odtworzeniu.
4. Wektory zdalnego ataku
Systemy plików obsługiwane z poziomu FUSE lub zdalnego mountu (NFS, SMB) mogą być punktem wejścia dla zagrożeń w internecie, jeśli nie są odpowiednio ograniczone (np. przez AppArmor/SELinux).
🛡️ Jak zabezpieczyć dane na poziomie systemu plików?
- Włącz checksumming i walidację integralności (Btrfs/ZFS)
- Unikaj mountowania obrazów z nieznanych źródeł
- Nie używaj nieprzetestowanych wersji RAID5/6 w Btrfs
- Regularnie przeprowadzaj scrub ZFS/Btrfs
- Ustaw polityki MAC (AppArmor/SELinux) dla procesów manipulujących plikami
- Skanuj systemy plików narzędziami typu
fsck
,zpool scrub
,btrfs scrub
- Monitoruj logi kernelowe (
dmesg
,journalctl
) pod kątem ostrzeżeń o błędach I/O
🔒 System plików a zagrożenia w internecie
Wbrew pozorom, system plików może być pierwszą linią obrony przed wieloma zagrożeniami w internecie, szczególnie w przypadkach:
- ransomware szyfrujących pliki (snapshoty dają możliwość szybkiego przywrócenia),
- ataków typu fileless malware (zapis danych w RAM lub
tmpfs
), - eksfiltracji danych (logowanie operacji I/O, integrity monitoring).
📘 Podsumowanie
System plików to niedoceniany, ale krytyczny element bezpieczeństwa systemu operacyjnego.
🔑 Wnioski:
- Ext4 jest solidny, ale nie zapewnia integralności.
- Btrfs i ZFS wnoszą nową jakość, ale również nowe wektory ataku.
- Należy je traktować nie tylko jako technologię przechowywania danych, ale też jako element systemu bezpieczeństwa.
📌 Współczesne ataki stają się coraz bardziej zaawansowane – a integralność danych może być ich pierwszym celem lub ofiarą.