Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ PharStreamWrapper, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Drupal, Joomla ΠΈ Typo3

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ PharStreamWrapper, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ провСдСния Π°Ρ‚Π°ΠΊ Ρ‡Π΅Ρ€Π΅Π· подстановку Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «Phar», выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2019-11831), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ дСсСриализации ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· подстановку символов «..» Π² ΠΏΡƒΡ‚ΠΈ. НапримСр, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°Ρ‚Π°ΠΊΠΈ URL Π²ΠΈΠ΄Π° «phar:///path/bad.phar/../good.phar» ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ имя «/path/good.phar», хотя ΠΏΡ€ΠΈ дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ использован Ρ„Π°ΠΉΠ» «/path/bad.phar».

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° создатСлями CMS TYPO3, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Drupal ΠΈ Joomla, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ уязвимости. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² выпусках PharStreamWrapper 2.1.1 ΠΈ 3.1.1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Drupal устранил ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² обновлСниях 7.67, 8.6.16 ΠΈ 8.7.1. Π’ Joomla ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся начиная с вСрсии 3.9.3 ΠΈ устранСна Π² выпускС 3.9.6. Для устранСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² TYPO3 трСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PharStreamWapper.

Π‘ практичСской стороны ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² PharStreamWapper позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Drupal Core, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ полномочия администратора Ρ‚Π΅ΠΌ оформлСния (‘Administer theme’), Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ врСдоносный phar-Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² Π½Ρ‘ΠΌ PHP-ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ Π²ΠΈΠ΄ΠΎΠΌ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΎΠ³ΠΎ phar-Π°Ρ€Ρ…ΠΈΠ²Π°. Напомним, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ «Phar deserialization» Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‰ΠΈ PHP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ file_exists(), эта функция автоматичСски выполняСт Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Phar (PHP Archive) ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ с «phar://». ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° phar-Ρ„Π°ΠΉΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΠΎΠ΄ Π²ΠΈΠ΄ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ функция file_exists() опрСдСляСт MIME-Ρ‚ΠΈΠΏ ΠΏΠΎ содСрТимому, Π° Π½Π΅ ΠΏΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ