ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Snuffleupagus Ρ€Π°Π·Π²ΠΈΠ²Π° PHP ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° уязвимости

Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Snuffleupagus Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΌΠΎΠ΄ΡƒΠ» Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° 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;
  • Π’Π³Ρ€Π°Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° слСди ΠΎΡ‚ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ Π°Ρ‚Π°ΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° прилоТСния;
  • ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° "strictΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ·, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΡ‡Π°ΠΊΠ²Π° цяло число ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚) ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с Ρ‚ΠΈΠΏΠΎΠ²Π΅;
  • Π‘Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π±Ρ€Π°Π½Π° Β«phar://Β») с явното ΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² бял списък;
  • Π—Π°Π±Ρ€Π°Π½Π° Π·Π° изпълнСниС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° запис;
  • Π§Π΅Ρ€Π½ΠΈ ΠΈ Π±Π΅Π»ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ Π·Π° eval;
  • Π—Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° сСртификати TLS ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π°
    curl;
  • ДобавянС Π½Π° HMAC към сСриализирани ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π·Π° Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΏΡ€ΠΈ дСсСриализацията сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ, Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
  • Π Π΅ΠΆΠΈΠΌ Π½Π° запис Π½Π° заявкитС;
  • Π‘Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° външни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² libxml Ρ‡Ρ€Π΅Π· Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ Π² XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ;
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° външни ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡ΠΈ (upload_validation) Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ сканиранС Π½Π° ΠΊΠ°Ρ‡Π²Π°Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅;

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ създадСн ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π² инфраструктурата Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ фрСнски хостинг ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ. ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ просто ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с Snuffleupagus Π±ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ опасни уязвимости, ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ Ρ‚Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Π² Drupal, WordPress ΠΈ phpBB. УязвимоститС Π² Magento ΠΈ Horde Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΈ с Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ°
Β«sp.readonly_exec.enable()Β».

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster