Po roce vývoje vydání projektu , který poskytuje modul pro PHP7 interpreter za účelem zvýšení bezpečnosti prostředí a blokování běžných chyb, které vedou k vznikům zranitelností ve spouštěných PHP aplikacích. Modul také umožňuje vytvářet pro odstranění konkrétních problémů bez úpravy zdrojového kódu zranitelné aplikace, což je praktické pro použití v hromadném hostingu, kde není možné zajistit aktualizaci všech uživatelských aplikací. Náklady na provoz modulu jsou hodnoceny jako minimální. Modul je napsán v jazyce C, připojuje se jako sdílená knihovna („extension=snuffleupagus.so“ v php.ini) a pod licencí LGPL 3.0.
Snuffleupagus poskytuje systém pravidel, který umožňuje používat jak předdefinované šablony pro zvýšení ochrany, tak vytvářet vlastní pravidla pro kontrolu vstupních dat a parametrů funkcí. Například pravidlo „sp.disable_function.function(„system“).param(„command“).value_r(„[$|;&`\\n]“).drop();“ umožňuje omezit používání speciálních znaků v argumentech funkce system() bez úpravy aplikací. Jsou poskytovány zabudované metody pro blokování takových typů zranitelností, jako jsou problémy, se serializací dat, používáním PHP funkce mail(), únikem obsahu Cookie při provádění XSS útoků, problémy způsobené nahráváním souborů s vykonatelným kódem (např. ve formátu ), nekvalitní generací náhodných čísel a neplatných konstrukcí XML.
Režimy zvýšení ochrany PHP poskytované ve Snuffleupagus:
- Automatické povolení flagů „secure“ a „samesite“ (ochrana proti CSRF) pro Cookie, Cookie;
- Zabudovaný soubor pravidel pro odhalování stop po útocích a kompromitaci aplikací;
- Povinné globální povolení režimu „“ (např. blokuje pokusy o zadání řetězce, když očekává celé číslo jako argument) a ochrana proti ;
- Blokování ve výchozím nastavení např. zákaz „phar://“ s jejich explicitním povolením na whitelistu;
- Zákaz provádění souborů, které jsou zapisovatelné;
- Černé a bílé seznamy pro eval;
- Povinné kontrolování certifikátů TLS při používání
curl; - Přidání HMAC k serializovaným objektům zajišťuje, že po deserializaci jsou získaná data zachována původní aplikací;
- Režim záznamu požadavků;
- Blokování načítání externích souborů v libxml prostřednictvím odkazů v XML dokumentech;
- Možnost připojení externích zpracovatelů (upload_validation) pro kontrolu a skenování nahrávaných souborů;
Mezi V novém vydání: Vylepšená podpora PHP 7.4 a zajištěna kompatibilita s vývojovou větví PHP 8. Přidána možnost záznamu událostí prostřednictvím syslog (pro aktivaci je navržena direktiva sp.log_media, která může přijmout hodnoty php nebo syslog). Aktualizován výchozí soubor pravidel, do kterého byla přidána nová pravidla pro nedávno zjištěné zranitelnosti a techniky útoků na webové aplikace. Vylepšená podpora macOS a rozšířeno použití platformy pro kontinuální integraci založené na GitLab.
Zdroj: opennet.ru
