hacked

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:

  1. 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.
  2. 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ą:

Moduł Hacked! - opcje konfiguracyjne

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”

Widok raportu - lista modułów

W podanym przykładzie widać, że moduł “Better exposed filters” zawiera jakieś zmiany.
Sprawdźmy je:

Widok raportu - lista plików w module

Gdy posiadamy dodatkowy moduł Diff, możemy w łatwy sposób zobaczyć dokładne zmiany w każdym pliku:

Widok raportu - lista zmian w 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

Lista modułów wraz ze statusem

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]

Lista zmian w module

Lista zmian w module

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:

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.

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