Hacked! - przegląd modułu Drupala
Podczas audytu strony internetowej istnieje możliwość wykrycia, czy wprowadzono zmiany w rdzeniu Drupala, modułach oraz skórkach contrib. W jaki sposób to zrobić? Najbardziej efektywne jest wykorzystanie możliwości modułu Hacked!
Daty
Moduł został wydany 8 października 2009 zaś ostatnia modyfikacja miała miejsce 13 lutego 2020. Hacked! posiada wersję zarówno na Drupala 7 jak i 8.
Popularność modułu
Drupal.org raportuje, że modułu używa około 16000 stron z czego 15100 to strony na Drupal 7, a 900 to Drupal 8.
W przypadku modułu Hacked! to natomiast mało wiarygodna informacja, gdyż jest to moduł który powinien być wykorzystywany jedynie w środowiskach developerskich przez krótki czas i po wykonaniu prac powinien być odinstalowany. Można więc raczej powiedzieć, że 16000 stron ma niepoprawnie zainstalowany moduł.
Twórcy modułu
Moduł na Drupala 7 jest utrzymywany przez użytkownika ivnish. Na Drupal 8 aktualnie nikt go nie utrzymuje.
Do czego służy moduł?
Moduł Hacked! jest nieodzownym narzędziem w pracy każdej profesjonalnej agencji drupalowej. W Droptica każdą nową stronę internetową przyjmowaną do supportu Drupala skanuje się modułem Hacked! w poszukiwaniu zmian w modułach.
Sprawdzamy, by znaleźć ewentualne ręczne modyfikacje do modułów i rdzenia Drupala. Celów znalezienia takich zmian jest kilka:
- W miarę możliwości rdzeń Drupala i moduły contrib nie powinny być zmieniane. Drupal jest bardzo elastycznym systemem i w większości przypadków można osiągnąć oczekiwane rezultaty działając zgodnie ze sztuką. Jeśli znajdziemy zmiany wprowadzane przez poprzednie zespoły w kodzie, staramy się je przenieść do naszych modułów i wprowadzić zgodnie ze standardami Drupala.
- Jeśli zmian nie da się wyprowadzić do własnego kodu, przenosimy je do śledzonych patchy, aby móc automatycznie je śledzić i nakładać przy każdej aktualizacji modułu.
Wykonujemy powyższe czynności, aby móc łatwo i szybko aktualizować moduły do najnowszych wersji bez ryzyka, że usuniemy lub zepsujemy jakąś funkcjonalność, którą ktoś zaszył ukrytą w contribowym module. W tym miejscu zachęcam do zapoznania się z artykułem: Dlaczego Drupal jest bezpieczniejszy niż inne systemy CMS.
Bez modułu Hacked! nie mamy łatwego wglądu w zmiany w danym module contrib, a w przypadku aktualizacji wyśledzenie modyfikacji bez użycia tego modułu będzie czasochłonne.
Unboxing
Aby zainstalować moduł Hacked!, przejdź do strony projektu na drupal.org lub użyj Composera (o którym niedawno pisaliśmy):
composer require drupal/hacked
Po instalacji możemy skonfigurować moduł przechodząc pod adres:
/admin/reports/hacked/settings
Moduł posiada jedną opcję konfiguracyjną:
Ignore line endings / include line endings: W zależności od systemu operacyjnego, na którym moduł został zmodyfikowany, zakończenia linii są określane w różny sposób.
Ustawienie tej opcji na “Ignore line endings” zapewni, że wszystkie różnice w kodowaniu zakończenia linii zostaną pominięte.
Innymi słowy: jeśli developer otworzy plik na Windowsie i zapisze, a w tych ustawieniach będzie wybrane “Include line endings”, to przy sprawdzaniu plików zostaną wylistowane różnice w zakończeniach linii.
Generowanie raportu zmian
Po instalacji modułu należy przejść pod adres:
/admin/reports/hacked/check
lub użyć komendy drush:
drush hacked-list-projects
alias:
drush hlp
Proces generowania raportu zajmuje do kilku minut w zależności od liczby plików do sprawdzenia.
Przegląd zmian
Moduł Hacked! udostępnia stronę z raportem. Możemy ją znaleźć pod ścieżką:
/admin/reports/hacked
lub przechodząc na zakładkę “raporty” w menu admina, a następnie pod link “hacked”
W podanym przykładzie widać, że moduł “Better exposed filters” zawiera jakieś zmiany.
Sprawdźmy je:
Gdy posiadamy dodatkowy moduł Diff, możemy w łatwy sposób zobaczyć dokładne zmiany w każdym pliku:
Zmiany można również zaobserwować używając komend drusha.
W celu wylistowania modułów zawierających zmiany, należy użyć komendy:
drush hlp
Aby wylistować nazwy plików zawierających zmiany, należy wpisać:
drush hacked-details [machine name modułu]
lub użyć aliasu:
drush hd [machine name modułu]
W celu wyszczególnienia modyfikacji w poszczególnych plikach w danym module, użyjemy komendy:
drush hacked-diff [machine name modułu]
która zwróci zmiany między plikami w taki sam sposób, jak robi to komenda git diff
Zmiany w przykładowym pliku:
Alternatywne moduły
Istnieje kilka modułów sprawdzających integralność plików, między innymi: MD5 Check, File Integrity Check, lecz nie są one szerzej wykorzystywane.
MD5 Check generuje sumę kontrolną plików i na tej podstawie informuje administratora o zmianach. File Integrity Check tworzy natomiast “fingerprint” całej strony i informuje administratora, jeśli pojawią się na niej modyfikacje.
Moduły rozszerzające
Rekomendujemy zainstalowanie modułu Diff, który pozwala na czytelne śledzenie zmian między aktualną wersją pliku, a tą pobraną przez moduł Hacked!
Podsumowanie
Moduł Hacked! rozwiązuje problem wyszukiwania modyfikacji w plikach rdzenia Drupala i modułów contrib. Dostarcza funkcjonalności, która w połączeniu z modułem Diff, pozwala w przejrzysty sposób zobaczyć różnice między plikami oryginalnymi a zmodyfikowanymi.