Jak zrobić audyt bezpieczeństwa Drupala? Przegląd modułów i bibliotek
Audyt bezpieczeństwa to proces prowadzący do zidentyfikowania zagrożeń bezpieczeństwa, które mogą prowadzić do nieautoryzowanego dostępu do treści, wycieków danych, obejścia zabezpieczeń oraz innych niebezpieczeństw. W pierwszej części z serii dotyczącej przeprowadzenia audytu bezpieczeństwa skupimy się na przeglądzie wersji modułów Drupala, których używamy w Droptica do tego celu oraz bibliotek PHP i JavaScript.
Audyt bezpieczeństwa Drupala
W Droptica dokładamy wszelkich starań, aby rozwiązania, które dostarczamy, były tak bezpieczne jak to możliwe. Korzystamy z narzędzi dostarczonych przez community Drupala, takich jak moduł Security Review, żeby zoptymalizować proces wykrywania najpopularniejszych błędów bezpieczeństwa. Używamy również modułu Security Kit, aby projekt, nad którym pracujemy, był bardziej odporny na ataki. Z funkcjonalnością tych modułów można zapoznać się w podlinkowanych postach, a informacja o ich działaniu przyda się w kolejnych częściach, w których będziemy opowiadać o przeglądzie konfiguracji Drupala oraz o analizie kodu.
Sprawdzenie wersji zainstalowanych modułów Drupala
Aktualizacja modułów oraz bibliotek to najprostsza czynność, prowadząca do poprawy bezpieczeństwa naszej aplikacji, którą możemy wykonać. Drupal udostępnia widok listujący wszystkie moduły, który dodatkowo wskazuje, czy dany moduł jest aktualny, a jeśli nie jest, to czy aktualizacja zawiera poprawki bezpieczeństwa.
Aby sprawdzić, czy moduły są aktualne, należy przejść pod adres /admin/modules/update
Na powyższym zrzucie ekranu widzimy, że niektóre z modułów wymagają aktualizacji. W takich przypadkach oczywiście zawsze rekomendujemy, aby zaktualizować wszystkie możliwe moduły. Jeśli któryś z modułów zawiera poprawkę bezpieczeństwa, aktualizacja jest wymagana, aby zapewnić wysoki poziom bezpieczeństwa aplikacji.
W Drupalu informacja o tym, czy dany moduł posiada lukę bezpieczeństwa, zostaje udostępniona publicznie w momencie, w którym autor modułu wypuszcza jego załataną wersję. Autorzy modułów zwykle starają się ukryć, który kod został zmieniony, aby załatać lukę bezpieczeństwa, lecz zawsze oznacza to, że atakujący potrzebuje po prostu więcej czasu, by znaleźć sposób na wywołanie błędu i jego wykorzystanie. Czas jest ważny, dlatego aktualizacje bezpieczeństwa należy śledzić na bieżąco, nie tylko podczas audytu bezpieczeństwa. Jak zaznaczyliśmy wcześniej, jest to jedna z najprostszych czynności, jakie możemy wykonać by zapewnić wyższy poziom bezpieczeństwa naszej aplikacji.
Przegląd patchy
W trakcie aktualizacji modułów Drupala należy przyjrzeć się również, czy do danego modułu został zaaplikowany patch. Jeśli tak, postępujemy następująco:
- Sprawdzamy, czy patch został stworzony przez community i czy dotyczy konkretnego issue na drupal.org. Jeśli tak, szukamy issue, z którego pochodzi patch. Istnieje możliwość, że patch został zaaplikowany do jednej z nowszych wersji modułu. W takim przypadku rekomendujemy aktualizację modułu oraz usunięcie patcha z informacją, że kod poprawiający dany błąd lub dodający daną funkcjonalność został zaaplikowany do oficjalnej, nowszej wersji modułu. Jeśli patch nie został jeszcze zaaplikowany do nowszej wersji modułu, nadal rekomendujemy aktualizację oraz przetestowanie, czy w najnowszej jego wersji dany patch spełnia swój cel.
- Jeśli patch nie został stworzony przez community Drupala, a jest wynikiem pracy nad projektem, nadal rekomendujemy aktualizację modułu. W tym przypadku jednak zapewnienie poprawnego działania patcha leży po stronie osób odpowiedzialnych za customowy kod projektu. Po aktualizacji należy sprawdzić, czy patch działa zgodnie z założeniem. Jeśli nie, rekomendujemy wprowadzenie odpowiednich poprawek do patcha, które zapewnią jego poprawne działanie na najnowszej wersji modułu.
Przegląd bibliotek PHP
Kolejnym krokiem będzie przegląd wykorzystywanych bibliotek PHP. Do wylistowania możemy użyć komendy composer show lub pakietu local-php-security-checker. Rekomendujemy to drugie rozwiązanie, ponieważ znacznie przyspiesza proces.
Wynik komendy composer show.
Jeśli zdecydujesz się na instalację pakietu local-php-security-checker, postępuj zgodnie z wytycznymi z pliku README.md.
Wynik skanu za pomocą local-php-security-checker.
Istnieje również mało znany moduł Drupala Composer Security Checker, który wykorzystuje pakiet security-checker. Aktualnie moduł ten nie spełnia swojego zadania a sam pakiet security-checker nie jest aktywnie rozwijany (od stycznia 2021), z tego względu skupimy się na samym pakiecie local-php-security-checker. W sytuacji znalezienia zagrożenia bezpieczeństwa, naszą rekomendacją będzie oczywiście, jak w każdym przypadku, aktualizacja biblioteki. Audyt bibliotek PHP powinien być przeprowadzany na bieżąco, tak samo jak w przypadku modułów Drupala.
Przegląd bibliotek JavaScript
Następnym krokiem będzie sprawdzenie, czy wykorzystywane biblioteki JavaScript są aktualne i czy zawierają poprawki bezpieczeństwa. W tym celu należy przejrzeć katalog library oraz używane pliki package.json.
W przypadku katalogu library wersję należy sprawdzić manualnie. W przypadku package.json używamy komendy npm-audit.
Wynik komendy npm-audit
Komenda npm-audit wylistuje wszystkie znane podatności, określi poziom zagrożenia, pakiet, zależności, ścieżkę do pakietu oraz pokaże link z informacjami o podatności.
W przypadku znalezienia podatności klasycznie rekomendujemy aktualizację. Skany bibliotek JS powinny być wykonywane rutynowo, częściej niż kompleksowy audyt bezpieczeństwa.
Poprawa bezpieczeństwa Drupala - dalsze kroki
W tej części cyklu dotyczącego przeprowadzenia audytu bezpieczeństwa Drupala zapoznaliśmy się ze sposobami na sprawdzenie, czy używane wersje modułów oraz bibliotek są aktualne i nie zawierają znanych błędów bezpieczeństwa. Rozumiemy również, jak postępować w przypadku, w którym jeden z modułów posiada patche, zarówno gdy patch pochodzi od community Drupala jak i w przypadku, kiedy patch został przygotowany przez programistę pracującego nad aplikacją.
Przyswojenie wiedzy dostarczonej w tym poście jest najprostszą drogą do poprawy bezpieczeństwa aplikacji. Sprawdzenie wersji wykorzystywanych rozwiązań jest pierwszą z czynności, które wykonujemy podczas audytu bezpieczeństwa - nasz zespół wsparcia Drupala rekomenduje cykliczne sprawdzanie aktualizacji. W przypadku wypuszczenia aktualizacji zawierającej poprawki bezpieczeństwa, rekomendujemy jak najszybszą aktualizację.
W kolejnej części tej serii artykułów zapoznamy się z konfiguracją Drupala nastawioną na zwiększenie bezpieczeństwa naszej aplikacji. Poznamy również sposoby na ograniczenie liczby wektorów ataku oraz zaznajomimy się z modułami, które nam w tym pomogą.