V rámci projektu modul pro připojení k PHP7 interpreteru, určený k posílení bezpečnosti prostředí a blokování typických chyb, které vedou k vzniku zranitelností v provozovaných PHP aplikacích. Modul také umožňuje vytvářet virtuální záplaty pro odstranění konkrétních problémů bez změny zdrojových textů zranitelné aplikace, což je výhodné pro použití v systémech hromadného hostingu, kde není možné udržovat všechny uživatelské aplikace aktuá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 využívat jak typové š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žití speciálních znaků v argumentech funkce system() bez změny aplikace. Podobně lze vytvářet pro blokování známých zranitelností.
Podle testů provedených vývojáři Snuffleupagus prakticky neomezuje výkon. Pro zajištění vlastní bezpečnosti (možné zranitelnosti v ochraně mohou představovat dodatečný vektor pro útoky) se v projektu používá důkladné testování každého commitu v různých distribucích, využívají se systémy statické analýzy, kód je upraven a dokumentován pro usnadnění provádění auditu.
Jsou poskytovány vestavěné metody pro blokování takových tříd 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.
Z režimů pro zvýšení ochrany PHP jsou podporovány:
- 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ů;
Projekt byl vytvořen a používán k ochraně uživatelů v infrastruktuře jednoho z velkých francouzských hostingových operátorů. , že jednoduché připojení Snuffleupagus by umožnilo chránit se před mnoha nebezpečnými zranitelnostmi, které byly odhaleny v tomto roce v Drupal, WordPress a phpBB. Zranitelnosti v Magento a Horde by mohly být blokovány aktivací režimu
„sp.readonly_exec.enable()“.
Zdroj: opennet.ru
