Errata OpenBSD 7.9 zamykają błędy jądra, które Calif połączył w lokalny exploit roota
Firma Calif, zajmująca się bezpieczeństwem, twierdzi, że luka w pamięci współdzielonej, sięgająca około 37 lat wstecz do oryginalnego kodu BSD, stanowiła połowę lokalnego łańcucha prowadzącego do roota. Według Calif OpenBSD wydał poprawki jako errata 018 i 026.

Najważniejsze informacje
- 1Calif opublikował badania dotyczące lokalnego exploita roota dla OpenBSD, który łączy dwa błędy jądra; poprawki znajdują się w erratach OpenBSD 7.9.
- 2Według Calif jedna z luk dotyczy 16-bitowego licznika ze znakiem dla przyłączeń pamięci współdzielonej, sięgającego około 37 lat wstecz, do oryginalnych źródeł BSD.
- 3Errata 018 dla OpenBSD z datą 14 września 2026 jest oznaczona jako poprawka niezawodności dotycząca przepełnienia liczby całkowitej w shmat.
- 4Errata 026 z datą 30 września 2026 jest oznaczona jako poprawka bezpieczeństwa dla błędu zliczania referencji w jądrze, który mógł powodować use-after-free.
- 5Exploit wymaga dostępu lokalnego; Calif zaproponował też szersze wzmocnienie jądra, m.in. bezpieczne odłączanie elementów list, randomizację alokatorów i zabezpieczenia oparte na kompilatorze.
Cały tekst
Firma Calif, zajmująca się bezpieczeństwem, opublikowała badania opisujące, jak uzyskała uprawnienia roota w OpenBSD, łącząc dwie luki w jądrze, które projekt od tego czasu załatał. W opracowaniu autorstwa Andrew Griffiths z 16 października firma podała, że jeden z błędów sięga mniej więcej 37 lat wstecz, do oryginalnych źródeł BSD. Calif poinformował, że zgłosił podatności projektowi OpenBSD wcześniej w tym roku, często wraz z proponowanymi poprawkami.
Według Calif starsza luka dotyczy licznika śledzącego przyłączenia pamięci współdzielonej, zdefiniowanego jako 16-bitowa wartość ze znakiem, która może ulec przepełnieniu. Firma podała, że to przepełnienie mogło poprzez wyścig (race condition) doprowadzić do use-after-free, a w połączeniu z osobnym zapisem poza granicami (out-of-bounds write) w jądrze pozwalało lokalnemu użytkownikowi eskalować uprawnienia do roota. Calif podał, że atak działał przy włączonym mechanizmie ponownego linkowania jądra KARL w OpenBSD oraz zabezpieczeniach procesora SMAP i SMEP i nie wymagał błędu ujawniającego informacje. Opracowanie zawiera również odnośniki do kodu i proof of concept.
Calif podał, że problemy usunięto w erratach 018 i 026 systemu OpenBSD. Na stronie errat OpenBSD 7.9 pozycja 018 nosi datę 14 września 2026 i figuruje jako poprawka niezawodności, która zapobiega przepełnieniu liczby całkowitej w shmat. Errata 026 z datą 30 września 2026 figuruje jako poprawka bezpieczeństwa dla błędu zliczania referencji, który mógł prowadzić do stanu use-after-free w jądrze. Obie pozycje dotyczą wszystkich architektur. Calif wskazuje obie errata jako poprawki problemów w swoim łańcuchu, więc jedna z dwóch poprawek ma etykietę niezawodności, a nie bezpieczeństwa.
Strona errat informuje, że poprawki są dystrybuowane jako podpisane pliki unified diff, a narzędzie syspatch może instalować aktualizacje binarne na platformach amd64, i386 i arm64. Poprawki dla wspieranych wydań trafiają również do gałęzi -stable, którą projekt utrzymuje przez rok od wydania. Calif opisuje exploit jako lokalną eskalację uprawnień, co oznacza, że atakujący musiałby najpierw uzyskać dostęp do systemu.
Poza erratami Calif przedstawił kilka pomysłów na wzmocnienie zabezpieczeń, które mają utrudnić podobne ścieżki ataku. Obejmują one kontrole integralności przed usunięciem elementów z list dwukierunkowych, które – jak zauważyła firma – FreeBSD i NetBSD już stosują, a także większą randomizację pamięci jądra, ponieważ według Calif alokatory jądra OpenBSD pozostają deterministyczne, mimo że KARL randomizuje układ pliku binarnego jądra. Firma wskazała też na funkcje kompilatora, takie jak array bounds sanitizer oraz nadchodzące Alloc Tokens. Calif podał, że zaproponował ten sanitizer projektowi FreeBSD i prywatnie zgłosił tam 21 problemów, które by on wykrył, argumentując, że łagodzenie całych klas błędów staje się tym ważniejsze, im bardziej AI pomaga w wykrywaniu podatności.
Dlaczego to ważne
Administratorzy, którzy instalują wyłącznie errata oznaczone jako poprawki bezpieczeństwa, mogli pominąć 018, którą OpenBSD wymienia jako poprawkę niezawodności, choć Calif wskazuje ją jako jedną z dwóch poprawek błędów w swoim łańcuchu exploita roota. Ponieważ kod exploita jest publicznie przywoływany, warto upewnić się, że zainstalowano zarówno 018, jak i 026, zwłaszcza w systemach, na których niezaufani użytkownicy mogą logować się lokalnie.
Oś czasu
· Opublikowano
Tematy#OpenBSD#jądro#eskalacja uprawnień#zarządzanie poprawkami#Calif
Źródła
Ten tekst opiera się na poniższych źródłach. Przeczytaj je, aby poznać pełny kontekst.



