Projektis PHP7 tõlkijaga ühendamiseks mõeldud moodul, mille eesmärk on suurendada keskkonna turvalisust ja blokeerida tüüpilisi vigu, mis võivad viia haavatavuste ilmnemiseni PHP rakendustes. Moodul võimaldab ka luua virtuaalseid patše konkreetsete probleemide lahendamiseks ilma haavatava rakenduse lähtekoodi muutmata, mis on mugav massilise majutuse süsteemide jaoks, kus ei ole võimalik hoida kõiki kasutajarakendusi ajakohasena. Moodul on kirjutatud C keeles ja see ühendatakse jagatud teegi vormis ("extension=snuffleupagus.so" php.ini-s) ning on litsentsi LGPL 3.0.
Snuffleupagus pakub reeglite süsteemi, mis võimaldab kasutada nii tüüpilisi malli tõhususe tõstmiseks kui ka luua oma reegleid sisendi ja funktsioonide parameetrite kontrollimiseks. Näiteks reegel "sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]" ).drop();" võimaldab muutmata rakendusi piirata erimärkide kasutamist funktsiooni system() argumentides. Ühiseid reegleid saab luua samuti loomiseks tuntud haavatavuste blokeerimiseks.
Arendajate testide põhjal ei vähenda Snuffleupagus peaaegu üldse jõudlust. Omakaitseks (võimalikud haavatavused kaitsekihi sees võivad olla lisarünnakute vektoriks) rakendab projekt igas commit’is põhjalikku testimist erinevates distribuutides, kasutatakse staatilise analüüsi süsteeme ning kood on vormindatud ja dokumenteeritud, et lihtsustada auditite tegemist.
Pakutakse sisseehitatud meetodeid selliste haavatavuste klasside blokeerimiseks nagu probleemid andmete serialiseerimisega, PHP funktsiooni mail() kasutamine, Cookie sisu lekkimine XSS rünnakute käigus, failide üleslaadimisega seotud probleemid, kus sisu on täidetud käivitatava koodiga (näiteks formaadis ), kehv juhuslike numbrite genereerimine ja valede XML konstruktsioonidega.
PHP turvataseme tõstmiseks toetatakse järgmisi režiime:
- Küpsiste "secure" ja "samesite" (CSRF rünnakute kaitseks) seadistamine automaatselt, Sisseehitatud reeglite komplekt rünnakute ja rakenduste kompromiteerimise jälgede tuvastamiseks;
- Sundige globaalset "
- režiimi sisselülitamist.» (näiteks blokeerib katsetuse teatada stringi, kui oodatakse täisarvulist argumenti) ja kaitse ;
- Vaikimisi blokeerimine (näiteks keeld «phar:///») nende väljendatud lubamise valge nimekirja kaudu;
- Keelatud on käivitada faile, mis on kirjutamiseks saadaval;
- Mustad ja valged nimekirjad eval jaoks;
- TLS sertifikaatide kontrollimise kohustuslik lubamine, kui kasutatakse
curl; - HMAC lisamine serialiseeritud objektidele, et tagada, et deserialiseerimisel saadakse andmed, mis on salvestatud algses rakenduses;
- Päringute logimise režiim;
- Väliste failide laadimise blokeerimine libxml parameetrite kaudu XML-dokumentides;
- Võimalus ühendada väliseid töötlejaid (upload_validation) üles laaditud failide kontrollimiseks ja skannimiseks;
Projekt on loodud ja seda kasutatakse kasutajate kaitsmiseks ühe suure Prantsuse hostimisoperaatori infrastruktuuris. , mis näitab, et Snuffleupaguse lihtsalt käitamine suudaks kaitsta paljude ohtlike haavatavuste eest, mis on sel aastal tuvastatud Drupalis, WordPressis ja phpBB-s. Haavatavusi Magento ja Horde saaks blokeerida, kui aktiveerida režiim
«sp.readonly_exec.enable()».
Allikas: opennet.ru
