Po roku prac rozwojowych wydanie projektu , oferujący moduł do interpretera PHP7, zwiększający bezpieczeństwo środowiska oraz blokujący typowe błędy prowadzące do powstawania podatności w działających aplikacjach PHP. Moduł umożliwia również tworzenie konkretnych poprawek problemów bez zmiany oryginalnego kodu podatnej aplikacji, co jest wygodne w systemach masowego hostingu, gdzie trudno jest utrzymać wszystkie aplikacje użytkowników w aktualnej wersji. Koszty związane z działaniem modułu oceniane są jako minimalne. Moduł napisany jest w języku C, dodawany jako biblioteka współdzielona („extension=snuffleupagus.so” w php.ini) i jest objęty licencją LGPL 3.0.
Snuffleupagus oferuje system zasad, pozwalający na zastosowanie typowych szablonów w celu zwiększenia ochrony, jak również na tworzenie własnych zasad do kontroli danych wejściowych i parametrów funkcji. Na przykład zasada „sp.disable_function.function(„system”).param(„command”).value_r(„[$|;&`\n]”).drop();” pozwala na ograniczenie użycia znaków specjalnych w argumentach funkcji system() bez modyfikacji aplikacji. Dostarczane są wbudowane metody blokowania takich klas podatności jak problemy, z serializacją danych, wykorzystywaniem funkcji PHP mail(), wyciekami zawartości Cookie podczas ataków XSS, problemami związanymi z ładowaniem plików z wykonawczym kodem (na przykład w formacie ), niskiej jakości generowaniem liczb losowych oraz niepoprawnych konstrukcji XML.
Tryby zwiększenia bezpieczeństwa PHP oferowane w Snuffleupagus:
- Automatyczne włączanie flag „secure” i „samesite” (ochrona przed CSRF) dla Cookie, Cookie;
- Wbudowany zestaw reguł do wykrywania śladów ataków i kompromitacji aplikacji;
- Wymuszone globalne włączenie trybu „” (na przykład blokuje próby określenia ciągu podczas oczekiwania na argument wartości całkowitej) oraz ochrona przed ;
- Domyślne blokowanie (na przykład zakaz „phar://” z ich wyraźnym zezwoleniem w białej liście);
- Zakaz wykonywania plików, które są dostępne do zapisu;
- Czarne i białe listy dla eval;
- Obowiązkowe włączenie weryfikacji certyfikatów TLS podczas używania
curl; - Dodanie HMAC do seryjnych obiektów w celu zapewnienia, że podczas deserializacji uzyskuje się dane zapisane przez oryginalną aplikację;
- Tryb logowania zapytań;
- Blokowanie ładowania zewnętrznych plików w libxml według linków w dokumentach XML;
- Możliwość podłączenia zewnętrznych procesorów (upload_validation) do weryfikacji i skanowania przesyłanych plików;
Wśród w nowym wydaniu: Ulepszono wsparcie dla PHP 7.4 oraz zaimplementowano kompatybilność z rozwijającą się wersją PHP 8. Dodano możliwość logowania zdarzeń przez syslog (do włączenia zaproponowano dyrektywę sp.log_media, która może przyjmować wartości php lub syslog). Zaktualizowano domyślny zestaw zasad, dodając nowe zasady dla niedawno odkrytych podatności i technik ataków na aplikacje webowe. Ulepszono wsparcie dla macOS oraz rozszerzono zastosowanie platformy ciągłej integracji opartej na GitLab.
Źródło: opennet.ru
