Security Review - przegląd modułu Drupala
Podczas pracy nad projektem istnieje wiele sposobów na podniesienie bezpieczeństwa strony. Jednym z nich jest wykorzystanie zautomatyzowanych testów bezpieczeństwa, które wspomagają programistów w wyeliminowaniu jak największej liczby błędów bezpieczeństwa.
W Droptica nasz zespół programistów Drupala skupia się na dostarczeniu najbezpieczniejszych rozwiązań. Pomaga nam w tym sam drupalowy CMS, który jest bezpieczniejszy niż inne systemy CMS. Dzięki ogromnej społeczności skupionej wokół projektów open source, do którego Drupal należy, klienci otrzymują rozwiązania z jednej strony efektywne, z drugiej mają pewność co do bezpieczeństwa. W tym miejscu warto nadmienić o specjalnym zespole dedykowanym właśnie temu zagadnieniu, którym jest Drupal Security Team.
Chciałbym w tym tekście przybliżyć Ci działanie jednego z narzędzi pozwalających podnieść bezpieczeństwo Twojej strony internetowej - modułu Security Review.
Daty
Moduł został wydany 4 listopada 2009 natomiast ostatnia aktualizacja miała miejsce 4 października 2019 roku. Moduł posiada wersję na Drupala 7 oraz 8.
Popularność modułu
Według drupal.org modułu używa 30000 stron z czego 28000 to Drupal 7 a 2000 to Drupal 8.
Autorzy modułu
Autorem modułu jest użytkownik greggles. Moduł jest wspierany i rozwijany przez organizacje Acquia, CARD.com oraz Google Summer of Code. Najwięcej commitów dostarczyli użytkownicy coltrane (111), banviktor (58) oraz greggles (8).
Do czego służy moduł
Moduł przeprowadza automatyczny audyt strony wyszczególniając wiele wektorów ataku, które mogą prowadzić do błędów bezpieczeństwa. Oto lista niektórych z nich.
Uprawnienia do plików
Zapisywanie plików w głównym katalogu serwera jest niebezpieczne i może prowadzić do błędu typu remote code execution. Atakujący może użyć tej podatności do przejęcia kontroli nad stroną. Więcej informacji na temat poprawnej konfiguracji uprawnień można znaleźć pod tym linkiem.
Lista tagów akceptowanych przez formaty tekstu dostępne w CMS
Niektóre tagi HTML są określane jako niebezpieczne. Oznacza to, że mogą pozwolić atakującemu na przejęcie kontroli nad stroną. Drupal posiada mechanizm filtrowania HTML, który usuwa szkodliwe tagi - ten test sprawdza, czy filtrowanie jest skonfigurowane poprawnie.
Raportowanie błędów
Drupal może ujawniać informacje o błędach osobom nieuprawnionym. Atakujący może wykorzystać te informacje do doprecyzowania ataku lub znalezienia kolejnych wektorów.
Niebezpieczne rozszerzenia plików
Niektóre rozszerzenia są określane jako niebezpieczne. Oznacza to, że mogą powodować błędy bezpieczeństwa takie jak remote code execution. Atakujący może dzięki temu przejąć kontrolę nad stroną, a Security Review sprawdza, czy Drupal pozwala na przesyłanie plików o niebezpiecznych rozszerzeniach.
Błędy bazy danych
Wiele błędów bazy danych wywoływanych z jednego adresu IP to przesłanka do tego, że ktoś próbuje dokonać ataku typu SQL injection. Moduł informuje, czy wiele błędów bazy danych zostało wywołanych z tego samego adresu IP.
Brute force panelu logowania
Wiele nieudanych prób logowania to przesłanka, że ktoś stara się dostać na konto innego użytkownika. Jesteśmy o tym informowani.
Trusted hosts (HTTP host header attack)
Poprawna konfiguracja Trusted Host chroni przed atakiem typu HTTP host header, dogłębny opis ustawień jest dostępny pod tym linkiem.
Views access
Security Review rekomenduje, aby dostęp do widoków Drupala posiadał przynajmniej minimalną kontrolę dostępu ‘access content’. Ten test sprawdza, czy widoki posiadają przynajmniej minimalny poziom kontroli dostępu.
Security Review nie wprowadza żadnych poprawek bezpieczeństwa, a jedynie sugeruje, w których miejscach mogą istnieć wektory ataku. Są to sugerowane zmiany, które wymagają analizy przez specjalistę.
Unboxing
Moduł instalujemy standardowo, lecz sugerujemy wykorzystanie Composera:
composer require drupal/security_review
Ustawienia
Przechodząc pod adres:
/admin/config/security-review
możemy skonfigurować moduł wybierając role, które nie są zaufane. Security Review sprawdza na tej podstawie, czy użytkownicy z niezaufanymi rolami posiadają uprawnienia do funkcjonalności, które mogą powodować błędy bezpieczeństwa. Możemy również wybrać, które elementy z listy do sprawdzenia chcemy pominąć oraz wybrać metodę sprawdzania trusted hosts.
Konfiguracja ról
Moduł dostarcza dwa rodzaje uprawnień: ‘access security review list’, ‘run security checks’. W pierwszej kolejności należy skonfigurować zaufane role, które będą mogły odczytywać raporty oraz uruchamiać skan. W tym celu należy przejść pod adres:
/admin/people/permissions
i skonfigurować uprawnienia dla wybranych ról.
Użycie modułu
Moduł został już skonfigurowany. Aby uruchomić audyt, wystarczy przejść pod adres:
/admin/reports/security-review
i kliknąć “Run checklist”, a następnie Security Review przeprowadzi audyt. Można również użyć komendy drusha:
drush secrev
Każdy test posiada podsumowanie, które możemy zobaczyć klikając na “details”.
Przykład dla błędu “Errors are written to the screen”:
Przechodząc do ustawień logowania błędów widzimy, że Drupal przedstawia wszystkie informacje, łącznie z backtrace:
W przypadku wersji produkcyjnej strony należy ustawić tę opcję na “none”, aby zminimalizować ryzyko ujawnienia informacji, które mogą pomóc atakującemu w przejęciu strony.
Podobne informacje są przedstawione dla każdego z błędów bezpieczeństwa wykrytych podczas audytu. Wszystkie punkty należy przejrzeć manualnie i wprowadzić odpowiednie zmiany, jeśli są one wymagane.
Alternatywne moduły
Moduł Paranoia identyfikuje wszystkie miejsca, w których użytkownik może mieć możliwość wywołania niestandardowego kodu PHP i stara się je blokować. Redukuje to możliwość wystąpienia błędu remote code execution. Dodatkowo, moduł zabezpiecza główne konto admina (konto z id 1) uniemożliwiając jego edycję oraz blokuje możliwość odinstalowania samego siebie w standardowy sposób (aby odinstalować moduł paranoia, należy manualnie edytować bazę danych). Wszystkie funkcjonalności dostarczane przez moduł paranoia mają na celu zwiększenie bezpieczeństwa strony.
Podsumowanie
Moduł Security Review to niezwykle ważne i przydatne narzędzie. Dzięki zebranym przez moduł informacjom, zyskujesz bezcenną wiedzą dotyczącą tego, co należy zrobić, by poprawić bezpieczeństwo swojej strony. Po przeanalizowaniu wyników możesz wyeliminować niektóre z wektorów ataku. Nasz zespół rekomenduje użycie tego modułu podczas tworzenia strony.