Backportowanie poprawek bezpieczenstwa w EuroLinux 8

Backportowanie poprawek bezpieczeństwa w Enterprise Linux

Backporting to czynność polegająca na pobraniu poprawki błędu z najnowszej wersji pakietu oprogramowania upstream i zastosowaniu tej poprawki w starszej wersji tego samego oprogramowania. Stanowi część etapu konserwacji w procesie tworzenia aplikacji, a czasami służy dodawaniu nowych funkcji do starszych wersji oprogramowania.

Backporting to czynność polegająca na pobraniu poprawki błędu z najnowszej wersji pakietu oprogramowania upstream i zastosowaniu tej poprawki w starszej wersji tego samego oprogramowania. Stanowi część etapu konserwacji w procesie tworzenia aplikacji, a czasami służy dodawaniu nowych funkcji do starszych wersji oprogramowania.

Backportowanie jest powszechne wśród dostawców takich jak Red Hat® i jest niezbędne do zapewnienia automatycznych aktualizacji systemu. W EuroLinux 8 istnieje możliwość skorzystania z backportowanych łatek dostarczonych przez dostawcę jego kodu źródłowego, czyli właśnie poprzez firmę Red Hat®.

Proces backportingu można podzielić na następujące kroki:

  • zidentyfikowanie problemu w starszej wersji oprogramowania, który należy naprawić za pomocą backportu
  • ustalenie, która modyfikacja kodu rozwiązała ten problem
  • dostosowanie tej modyfikacji do starej wersji kodu (właściwy backporting)
  • testowanie, czy wersja backportowana zachowuje poprzednią funkcjonalność, a także czy poprawnie implementuje nową funkcjonalność (jeden lub kilka poziomów kontroli jakości)
  • połączenie wielu takich modyfikacji w zestaw poprawek.

Dlaczego poprawki bezpieczeństwa są przenoszone wstecz?

Poniżej praktyczny przykład z historii, który dobrze obrazuje i wyjaśnia tę kwestię:

Firma Red Hat® udostępniała wersję 5.3 PHP w systemie Red Hat® Enterprise Linux 6. Wersja PHP 5.3 osiągnęła koniec życia 14 sierpnia 2014 r., co oznacza, że dla tej wersji nie były dostarczane żadne dodatkowe poprawki ani ulepszenia przez upstream. Jednak 14 października 2014 r. we wszystkich wersjach PHP odkryto błąd przepełnienia bufora CVE-2014-3670, oznaczony jako Important (skalę ocen errat opisaliśmy w tym artykule), który może pozwolić zdalnemu napastnikowi na uszkodzenie aplikacji PHP lub wykonanie dowolnego kodu z uprawnieniami użytkownika uruchamiającego tę aplikację PHP.

Ponieważ wersja 5.3 PHP została wycofana z użycia, poprawka do tego błędu nie została dostarczona w wydaniu PHP 5.3. Jedynym sposobem na zminimalizowanie tego problemu była aktualizacja do wersji PHP 5.4, która zawierała poprawkę dla CVE-2014-3670. Jednak klienci firmy Red Hat® używający PHP 5.3 mogli nie być w stanie migrować do PHP 5.4, ze względu na możliwe problemy z kompatybilnością wsteczną między wersjami 5.3 i 5.4. Proces migracji wymagałby ręcznej pracy administratorów systemu lub programistów. Z tego powodu firma Red Hat® backportowała poprawkę dla tego błędu do pakietów PHP 5.3 dostarczanych z Red Hat® Enterprise Linux 6, aby klienci mogli nadal używać PHP 5.3 i jednocześnie złagodzić skutki CVE-2014-3670.

Wersjonowanie pakietów RPM

Pakiet RPM dystrybuowany z systemami Red Hat® lub EuroLinux posiada pewną spójną konwencję nazewnictwa. Jako przykład możemy podać pakiet Tar. Aby uzyskać te informacje, wystarczy uruchomić polecenie: rpm -q tar.

Backportowanie poprawek bezpieczenstwa w EuroLinux 8

Nazwa: Nazwa oprogramowania – w tym przypadku jest to program tar.

Wersja: Wersja projektu Open Source użytego do stworzenia tego pakietu – w tym przykładzie pakiet jest oparty na wersji 1.30 z projektu GNU Tar.

Dodatkowa wersja: Ta część informacji o wersji pakietu jest specyficzna dla dystrybucji Red Hat® i/lub EuroLinux. Zazwyczaj RPM udostępnia to pole, aby pakujący oprogramowanie mógł zachować własne dane dotyczące wersji. Różni opiekunowie pakietu lub zespoły mogą je nieco inaczej formatować. Zwykle pole to wskazuje też wersję systemu EuroLinux, dla której pakiet został stworzony. Poleceniem rpm -q --changelog można wyświetlić szczegółowe informacje o nowych funkcjonalnościach, zastosowanych poprawkach lub backportach dodanych do konkretnej wersji dodatkowej.

Architektura: Typ procesora, dla którego skompilowano binaria zawarte w tym pakiecie. W tym polu widoczne są inne architektury procesora, jeżeli binaria pakietu zostały skompilowane dla innego procesora (np. aarch64) lub noarch, co wskazuje, że pakiet jest neutralny pod względem architektury.

Niejasności związane z wersjonowaniem

Backporting ma wiele zalet, ale może powodować zamieszanie, jeżeli nie jest dobrze rozumiany. Klienci powinni być świadomi, że sam numer wersji pakietu nie powie im, czy są podatni na ataki, czy nie. Przykładowo: artykuły prasowe mogą zawierać wiadomości podobne do „uaktualnij Apache httpd do wersji 2.4.48, aby naprawić błąd”, które biorą pod uwagę tylko numer wersji upstream. Zatem nawet po zainstalowaniu zaktualizowanych pakietów od dostawcy, klienci nie będą posiadali najnowszej wersji upstream. Zamiast tego będą posiadali starszą wersję, ale już z właściwymi poprawkami, które zostały zaaplikowane w starszym wersjonowaniu.

Ponadto niektóre narzędzia do skanowania i audytu bezpieczeństwa podejmują decyzje dotyczące luk w zabezpieczeniach wyłącznie na podstawie numeru wersji komponentów, które odnajdują w systemie. Powoduje to fałszywe wyniki pozytywne, ponieważ narzędzia te nie biorą pod uwagę poprawek bezpieczeństwa pakietów, które zostały wycofane z upstream.

Dostawcy pakietów starają się wyjaśniać w biuletynach bezpieczeństwa, w jaki sposób naprawiono dany błąd, czy to poprzez przejście na nową wersję, czy też poprzez backport poprawek do istniejącej wersji. Od stycznia 2000 roku do wszystkich komunikatów dołączane są nazwy CVE, dzięki czemu klienci mogą łatwo porównać luki i dowiedzieć się, jak i kiedy je naprawiono, niezależnie od numerów wersji.

Dostarczane są również definicje OVAL, czyli wersje biuletynów do odczytu maszynowego. Mogą być one używane przez narzędzia innych firm do określania statusu luk, nawet jeżeli poprawki zostały umieszczone we wcześniejszych wersjach oprogramowania. W ten sposób udaje się eliminować pewne zamieszanie związane z backportingiem i ułatwić klientom „pozostawanie na bieżąco” z najnowszymi poprawkami bezpieczeństwa.

Nie tylko bezpieczeństwo

W przypadku większości produktów Red Hat® domyślną praktyką jest backport poprawek bezpieczeństwa, ale zdarza się, że po dokładnym przetestowaniu i analizie udostępniane są dodatkowe aktualizacje wersji niektórych pakietów. Są to wersje, które nie wchodzą w interakcje z innymi pakietami lub te, które są często używane przez użytkowników końcowych, takie jak przeglądarki internetowe lub komunikatory.

Wsparcie firmy Red Hat® obejmuje również backportowanie modułów jądra z nowszych jąder Linux. Oznacza to, że nowszy sprzęt jest obsługiwany przez systemy Red Hat® i EuroLinux nawet przy użyciu starszych wersji jądra. Wszystkie te rozwiązania sprawiają, że systemy Linux klasy Enterprise są stabilne, bezpieczne i w sposób ciągły nowoczesne. I właśnie dlatego są tak chętnie wybierane przez klientów korporacyjnych.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.