Zdjęcie główne Drupal security

Dlaczego Drupal jest bezpieczniejszy od innych CMSów

W Internecie można znaleźć wiele porównań popularnych systemów CMS. Gdy pojawia się w nich Drupal, w jego kontekście padają zawsze słowa: bezpieczny, otwarty, regularnie aktualizowany. Wyjaśnię dziś, skąd wzięła się ta opinia (i nie tylko dlatego, że jesteśmy agencją drupalową). Przedstawię też dowody na to, że deklarowany przez drupalową społeczność poziom bezpieczeństwa to nie tylko puste słowa.

Oto 5 powodów, które czynią Drupala bezpiecznym:

1. Otwartość kodu

Powiecie zapewne: przecież większość systemów CMS dystrybuowanych jest w modelu Open Source. Dlaczego traktować to jako zaletę Drupala? Spójrzcie jednak na ekosystemy CMSów z szerszej perspektywy. Niemal wszystkie są dostępne na otwartych licencjach, ale ich moduły, pluginy i skórki bywają rozprowadzane także w modelu czysto komercyjnym. W przypadku Wordpressa popularna jest sprzedaż dodatków, która ogranicza otwartość ich kodu. 

Społeczność Drupala wypracowała zupełnie inny, scentralizowany model. Przeważają w nim dodatki bezpłatne, dostępne bezpośrednio ze strony drupal.org, objęte dodatkowo wewnętrznym programem bezpieczeństwa. Takie podejście komplikuje nieco tworzenie modułów i skórek, ale jednocześnie utrudnia przemycanie szkodliwego kodu. Scentralizowany model ujawnia również swoje zalety w przypadku odkrycia luk bezpieczeństwa w samym Drupalu. Doskonale pokazała to niedawna aktualizacja bezpieczeństwa SA-CORE-2019-003, która objęła nie tylko core, ale także popularne moduły.

2. Security Team

O krytycznych błędach w Drupalu słyszy się bardzo często. W 2018 i 2019 roku mieliśmy do czynienia z kilkoma wysoce krytycznymi aktualizacjami, niektóre z nich nazwano nawet "Drupalgeddonem". Nie jest to jednak wynik słabej jakości kodu. To efekt tytanicznej pracy społeczności, a zwłaszcza jej części zajmującej się tematyką bezpieczeństwa.

Security Team w Drupalu składa się obecnie z ponad 30 osób z różnych firm i organizacji z całego świata. Wypracował sobie zasłużoną renomę - poprzez skuteczność i paranoiczne wręcz skupienie na kwestiach zabezpieczeń. Wspomagają go wolontariusze, także w ramach płatnych programów "bug bounty".

3. Wsparcie ze strony organizacji

Idąc za przykładem Wordpressa - bezpieczeństwo nie idzie w parze z zasięgiem. Bardzo istotny jest za to charakter, w którym używa się danego CMSa. Drupal to system wybierany chętnie przez duże korporacje i agencje rządowe (część z nich znajdziecie na tej liście https://groups.drupal.org/government-sites). Zaufały mu takie tuzy, jak Tesla, Nokia, Universytet Harvarda, miasta Londyn i Los Angeles, a nawet samo NASA. Każda z tych organizacji dba o zabezpieczenia swoich stron i przeprowadza niezliczone wewnętrzne audyty. Znalezione luki trafiają zazwyczaj do wspomnianego wcześniej Security Team.

Wsparcie dużych graczy jest bardzo ważne i potrzebne, dzięki temu projekt open-source staje się dobrem wspólnym, na którego rozwoju skorzysta każdy zainteresowany. Jako ciekawostkę podam tu, że na początku 2019 roku Komisja Europejska ogłosiła program EU FOSSA 2 (The European Commission Free and Open Source Software Audit), którego drugim największym beneficjentem jest właśnie Drupal. Osoby tropiące błędy otrzymają w ramach niego nagrodę pieniężną, której wysokość uzależniona jest od istotności zgłoszonej luki. W puli znalazło się 89 000€.

4. Composer i komponenty Symfony

Od wersji 8 Drupal jest zintegrowany z komponentami Symfony. To ogromny skok w przyszłość, w stronę standaryzacji kodu. Użycie sprawdzonych modułów takich, jak EventDispatcher, HttpFoundation/HttpKernel i Routing odciąża programistów od konieczności utrzymywania własnych rozwiązań. Jednocześnie społeczność Symfony zyskuje nowych programistów i nowych sponsorów. Dzięki temu poziom bezpieczeństwa stale rośnie, bo podstawowe biblioteki są coraz bardziej "uszczelniane".

Symfony to nie tylko zbiór bibliotek, to także Composer, doskonały manager pakietów stworzony na wzór npm. Można było używać go już z Drupalem 7, w wersji 8 stał się wręcz obowiązkowym dodatkiem, bez którego ciężko wyobrazić sobie bieżące utrzymywanie stron. Potrafi poradzić sobie ze skomplikowanymi zależnościami, ściąganiem bibliotek innych niż PHP, patchowaniem oraz uruchamianiem skryptów instalacyjnych. Dziś, gdy obsługa Composera jest już bardzo dojrzała - można śmiało powiedzieć, że stanowi krok milowy w kwestii aktualizacji kodu Drupala.

5. Mechanizmy bezpieczeństwa

Napisałem już o wielu czynnikach organizacyjnych, pieniężnych i projektowych. Nie wspomniałem jednak konkretnie, jakie mechanizmy chronią webmastera przed zaatakowaniem jego strony. Oto niektóre z nich:

  • Hasła użytkowników przechowywane są w zahashowanej formie, z użyciem soli i zwielokrotnionej kryptograficznej funkcji skrótu. Utrudnia to ataki typu Brute Force.
  • Konfigurację strony można zapisać do plików .yml i porównać z jej poprzednią wersją. Co więcej, można zapisywać ją w repozytorium kodu przy pomocy modułu Features. To doskonałe rozwiązanie, które ogranicza w dużym stopniu możliwość niezauważonej infekcji bazy danych.
  • Zaawansowane zarządzanie uprawnieniami pozwala na zdefiniowanie ról użytkowników i przypisanie im czynności, które mogą wykonywać na stronie. Twórcy Drupala położyli na tę kwestię ogromny nacisk, co dziś owocuje wysokim stopniem bezpieczeństwa.
  • System raportowania błędów rejestruje każde naruszenie bezpieczeństwa, w tym brakujące pliki .htaccess w newralgicznych katalogach.
  • System aktualizacji pozwala na ściąganie i instalowanie najnowszych wersji modułów z poziomu panelu administratora. To bardzo wygodne na współdzielonych hostingach, które nie zawsze mają możliwość użycia Composera.
  • Język Twig używany do tworzenia szablonów posiada zaawansowane mechanizmy służące do obrony przed atakami XSS i CSRF.
  • Rozbudowany cache pozwala na skuteczną obronę przed atakami DoS.
  • Istnieje możliwość pełnego zaszyfrowania bazy danych.

Warto dodać, że Drupal jest zgodny ze standardem OWASP (Open Web Application Security Project), definiującym podstawowe zasady bezpieczeństwa, które musi spełniać nowoczesny projekt webowy.

W ramach wsparcia dla Drupala utrzymujemy istniejące strony internetowe i rozbudowujemy je o nowe funkcjonalności