security review

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.

Moduł Security Review - ustawienia

 

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.

Moduł Security Review - uprawnienia

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

Moduł Security Review - wynik audytu

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”:

Moduł Security Review - wynik audytu - szczegóły

Przechodząc do ustawień logowania błędów widzimy, że Drupal przedstawia wszystkie informacje, łącznie z backtrace:

Moduł Security Review - opcje logowania błędów drupala

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.

Najlepsze praktyki