U okviru projekta modul za povezivanje s PHP7 interpreterom, namijenjen povećanju sigurnosti okruženja i blokiranju uobičajenih pogrešaka koje dovode do ranjivosti u izvršavanim PHP aplikacijama. Modul također omogućuje kreiranje virtualnih zakrpa za rješavanje specifičnih problema bez izmjene izvornih kodova ranjive aplikacije, što je praktično za korištenje u sustavima masovnog hostinga, gdje nije moguće održavati sve korisničke aplikacije ažurnima. Modul je napisan na jeziku C, povezuje se u obliku zajedničke biblioteke („extension=snuffleupagus.so“ u php.ini) i pod licencom LGPL 3.0.
Snuffleupagus pruža sustav pravila koji omogućuje korištenje i uobičajenih šablona za povećanje zaštite, kao i kreiranje vlastitih pravila za kontrolu ulaznih podataka i parametara funkcija. Na primjer, pravilo „sp.disable_function.function(„system“).param(„command“).value_r(„[$|;&`\\n]“).drop();“ omogućuje, bez izmjene aplikacija, ograničavanje korištenja specijalnih simbola u argumentima funkcije system(). Na sličan način mogu se kreirati za blokiranje poznatih ranjivosti.
Prema testovima koje su proveli developeri, Snuffleupagus gotovo ne smanjuje performanse. Za osiguranje vlastite sigurnosti (moguće ranjivosti u sloju zaštite mogu biti dodatni vektor za napade) u projektu se primjenjuje temeljito testiranje svake promjene u različitim distribucijama, koriste se sustavi statičke analize, a kod se oblikuje i dokumentira radi lakšeg provođenja revizije.
Pružaju se ugrađene metode za blokiranje takvih klasa ranjivosti, kao što su problemi, za serijalizaciju podataka, korištenjem PHP funkcije mail(), curenja sadržaja kolačića tokom XSS napada, problemima zbog učitavanja datoteka s izvršnim kodom (na primjer, u formatu ), lošom generacijom nasumičnih brojeva i neispravnih XML konstrukcija.
Među režimima za povećanje zaštite PHP podržani su:
- Automatsko uključivanje zastavica "secure" i "samesite" (zaštita od CSRF) za kolačiće, kolačića;
- Ugrađeni set pravila za otkrivanje tragova napada i kompromitacije aplikacija;
- Obavezno globalno uključivanje režima "" (na primjer, blokira pokušaje navođenja stringa kada se očekuje cijeli broj kao argument) i zaštita od ;
- Zadano blokiranje (na primjer, zabrana "phar://") uz njihovo eksplicitno odobravanje putem bijelog popisa;
- Zabrana izvršavanja datoteka koje su dostupne za upis;
- Crni i bijeli popisi za eval;
- Obavezno uključivanje provjere TLS certifikata tokom korištenja
curl; - Dodavanje HMAC-a serijaliziranim objektima kako bi se osiguralo da su podaci koji se dobiju deserializacijom oni koje je izvorna aplikacija sačuvala;
- Režim zapisivanja zahtjeva;
- Blokiranje učitavanja vanjskih datoteka u libxml putem linkova u XML dokumentima;
- Mogućnost povezivanja vanjskih rukovalaca (upload_validation) za provjeru i skeniranje učitanih datoteka;
Projekt je stvoren i koristi se za zaštitu korisnika u infrastrukturi jednog od velikih francuskih pružatelja hostinga. , što bi jednostavno povezivanje Snuffleupagusa omogućilo zaštitu od mnogih opasnih ranjivosti otkrivenih ove godine u Drupalu, WordPressu i phpBB-u. Ranjivosti u Magentu i Horde mogle bi biti blokirane aktiviranjem režima
„sp.readonly_exec.enable()“.
Izvor: opennet.ru
