Wydanie Snuffleupagus 0.5.1, modułu blokującego podatności w aplikacjach PHP
Po roku rozwoju opublikowany wydanie projektu Wąchaki 0.5.1, który udostępnia moduł dla interpretera PHP7 poprawiający bezpieczeństwo środowiska i blokujący typowe błędy prowadzące do podatności w uruchamianiu aplikacji PHP. Moduł umożliwia także tworzenie wirtualne poprawki w celu wyeliminowania określonych problemów bez zmiany kodu źródłowego podatnej aplikacji, co jest wygodne w użyciu w systemach masowego hostingu, gdzie nie jest możliwe zapewnienie aktualności wszystkich aplikacji użytkownika. Koszty ogólne modułu szacuje się na minimalne. Moduł napisany jest w C, jest podłączony w formie współdzielonej biblioteki („extension=snuffleupagus.so” w php.ini) i dystrybuowane przez na licencji LGPL 3.0.
Snuffleupagus udostępnia system reguł, który umożliwia korzystanie ze standardowych szablonów w celu poprawy bezpieczeństwa lub tworzenie własnych reguł w celu kontrolowania danych wejściowych i parametrów funkcji. Na przykład reguła „sp.disable_function.function(„system”).param(„polecenie”).value_r(„[$|;&`\\n]”).drop();” pozwala ograniczyć użycie znaków specjalnych w argumentach funkcji system() bez zmiany aplikacji. Dostępne są wbudowane metody blokowania klas luk w zabezpieczeniach, takich jak problemy, związane z z serializacją danych, niebezpieczny użycie funkcji PHP mail(), wyciek zawartości Cookie podczas ataków XSS, problemy związane z ładowaniem plików z kodem wykonywalnym (np. w formacie fara), słaba jakość generowania liczb losowych i podstawienie nieprawidłowe konstrukcje XML.
Tryby poprawy bezpieczeństwa PHP dostarczane przez Snuffleupagus:
Automatycznie włączaj flagi „bezpieczne” i „samesite” (ochrona CSRF) dla plików cookie, szyfrowanie Ciastko;
Wbudowany zestaw reguł identyfikujących ślady ataków i kompromisów aplikacji;
Wymuszona globalna aktywacja „rygorystyczny" (na przykład blokuje próbę podania ciągu znaków, gdy jako argument oczekuje się wartości całkowitej) i zabezpieczenie przed manipulacja typem;
Domyślne blokowanie opakowania protokołów (na przykład banowanie „phar://”) z ich wyraźnym umieszczeniem na białej liście;
Zakaz wykonywania plików zapisywalnych;
Czarno-białe listy eval;
Wymagane, aby włączyć sprawdzanie certyfikatu TLS podczas korzystania
kędzior;
Dodanie HMAC do serializowanych obiektów, aby mieć pewność, że deserializacja pobierze dane przechowywane przez oryginalną aplikację;
Żądanie trybu logowania;
Blokowanie ładowania plików zewnętrznych w libxml poprzez linki w dokumentach XML;
Możliwość podłączenia zewnętrznych procedur obsługi (upload_validation) w celu sprawdzenia i skanowania przesłanych plików;
Wśród zmiany w nowej wersji: Poprawione wsparcie dla PHP 7.4 i zaimplementowana kompatybilność z aktualnie opracowywaną gałęzią PHP 8. Dodano możliwość rejestrowania zdarzeń poprzez syslog (zaproponowano dołączenie dyrektywy sp.log_media, która może przyjmować wartości php lub syslog). Domyślny zestaw reguł został zaktualizowany w celu uwzględnienia nowych reguł dotyczących niedawno zidentyfikowanych luk w zabezpieczeniach i technik ataków na aplikacje internetowe. Ulepszona obsługa systemu macOS i rozszerzone wykorzystanie platformy ciągłej integracji opartej o GitLab.