Праект Snuffleupagus развівае PHP-модуль для блакавання ўразлівасцяў
У рамках праекта Табакеркаразвіваецца модуль для падлучэння да інтэрпрэтатара PHP7, прызначаны для падвышэння бяспекі асяроддзя і блакаванні тыпавых памылак, якія прыводзяць да з'яўлення ўразлівасцяў у выкананых PHP-прыкладаннях. Модуль таксама дазваляе ствараць віртуальныя патчы для ўхілення пэўных праблем без змены зыходных тэкстаў уразлівага прыкладання, што зручна для ўжывання ў сістэмах масавага хостынгу, на якіх немагчыма дамагчыся падтрыманні ўсіх карыстацкіх прыкладанняў у актуальным выглядзе. Модуль напісаны на мове Сі, падключаецца ў форме бібліятэкі, якая падзяляецца (“extension=snuffleupagus.so” у php.ini) і распаўсюджваецца пад ліцэнзіяй LGPL 3.0.
Snuffleupagus дае сістэму правіл, якая дазваляе выкарыстоўваць як тыпавыя шаблоны для павышэння абароны, так і ствараць уласныя правілы для кантролю ўваходных дадзеных і параметраў функцый. Напрыклад, правіла "sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]").drop();» дазваляе не змяняючы прыкладанні абмежаваць выкарыстанне спецзнакаў у аргументах функцыі system(). Аналагічна можна ствараць віртуальныя патчы для блакавання вядомых уразлівасцяў.
Мяркуючы па праведзеным распрацоўшчыкамі тэстах Snuffleupagus амаль не зніжае прадукцыйнасць. Для забеспячэння ўласнай бяспекі (магчымыя ўразлівасці ў праслойцы для абароны могуць служыць дадатковым вектарам для нападаў) у праекце прымяняецца дасканалае тэсціраванне кожнага коміта ў розных дыстрыбутывах, выкарыстоўваюцца сістэмы статычнага аналізу, код афармляецца і дакументуецца для спрашчэння правядзення аўдыту.
Даюцца ўбудаваныя метады для блакавання такіх класаў уразлівасцяў, як праблемы, звязаныя з серыялізацыяй дадзеных, небяспечным выкарыстаннем PHP-функцыі mail(), уцечкай змесціва Cookie пры правядзенні XSS нападаў, праблемамі з-за загрузкі файлаў з выкананым кодам (напрыклад, у фармаце phar), няякаснай генерацыяй выпадковых лікаў і падстаноўкай некарэктных канструкцый XML.
З рэжымаў для падвышэння абароны PHP падтрымліваюцца:
Аўтаматычнае ўключэнне сцягоў "secure" і "samesite" (абарона ад CSRF) для Cookie, шыфраванне Cookie;
Убудаваны набор правіл для выяўлення слядоў здзяйснення нападаў і кампраметацыі прыкладанняў;
Прымусовае глабальнае ўключэнне рэжымустрогі» (напрыклад, блакуе спробу ўказання радка пры чаканні ў якасці аргументу цэлалікавага значэння) і абарона ад маніпуляцый з тыпамі;
Блакаванне па змаўчанні абгортак для пратаколаў (напрыклад, забарона "phar://") з іх відавочным дазволам па белым спісе;
Забарона на выкананне файлаў, якія даступныя на запіс;
Чорныя і белыя спісы для eval;
Уключэнне абавязкова праверкі сертыфікатаў TLS пры выкарыстанні
curl;
Даданне HMAC да серыялізаваных аб'ектаў для гарантавання, што пры дэсерыялізацыі атрыманы дадзеныя, захаваныя зыходным дадаткам;
Рэжым часопісавання запытаў;
Блакаванне загрузкі вонкавых файлаў у libxml па спасылках у XML-дакументах;
Магчымасць падлучэння вонкавых апрацоўшчыкаў (upload_validation) для праверкі і сканавання загружаных файлаў;
Праект створаны і выкарыстоўваецца для абароны карыстальнікаў у інфраструктуры аднаго з буйных французскіх аператараў хостынгу. адзначаецца, Што проста падключэнне Snuffleupagus дазволіла б абараніцца ад многіх небяспечных уразлівасцяў, выяўленых у гэтым годзе ў Drupal, WordPress і phpBB. Уразлівасці ў Magento і Horde маглі б быць блакіраваны уключэннем рэжыму
"sp.readonly_exec.enable()".