Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° PHP ΠΎΠ±ΡΠ²ΠΈΡ Π°, ΡΠ΅ Π΄Π½Π΅Ρ Π² 17:00 (MSK) ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (8.5.12, 8.4.27, 8.3.36 ΠΈ 8.2.35), Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ Π΄Π²Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΠ° Π²ΡΠΈΡΠΊΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ Π½Π° ΡΡΡΠ²ΡΡΠΈ Ρ PHP Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π±ΡΠ΄Π°Ρ ΠΏΡΡΠ½Π°ΡΠΈ. ΠΡΠΈΡΠΈΠ°Π»Π½ΠΎ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΊΡΠΈΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈΡΠ΅, Π½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π°, ΡΡΠ°Π²Π° Π΄ΡΠΌΠ° Π·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ CVE-2026-109618 ΠΈ CVE-2026-109619, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π±ΡΡΡΠ²ΡΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ PHP ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π°Ρ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ PHP 5.4.
Π ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π²Π΅ΡΠ΅ ΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠΈ (1, 2) Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. Π Π±Π΅Π»Π΅ΠΆΠΊΠΈΡΠ΅ ΠΊΡΠΌ Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠ° ΡΠ΅ ΡΠ²ΡΡΠ΄ΠΈ, ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π΅ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° Π½Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ° Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΡΡΠ²ΡΡ (session.upload_progress). ΠΠ°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ°ΠΉΡΠ° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°, Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Π½Π΅ Π² PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ βmultipart/form-dataβ. ΠΠ° ΡΡΠΏΠ΅ΡΠ½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄ΡΠ΅Π΄Π±Π°ΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΊΠΎΡΡΠΎ Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π·Π° Π²ΡΡΠΊΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ (ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΡΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π½Π΅ Π² Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅ΡΡΠ²Π°Π½ΠΈΡΡΠ°, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ).
ΠΠ°ΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π΅Π½ ΠΌΠ°ΡΡΡΡΡ Π·Π° Π·Π°ΡΠΈΡΠ° ΡΠ΅ ΡΡΠ΅ΡΠ°Ρ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ Π² php.ini ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ βsession.upload_progress.enabled = offβ (ΠΈΠ»ΠΈ βphp_admin_flag[session.upload_progress.enabled] = offβ Π² PHP-FPM), Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π» Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° PHP, Π° ΡΡΡΠΎ ΠΈ Π°Π²ΡΠΎΡΡΡ Π½Π° ΠΏΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠ° ΡΠ²ΡΡΠ΄ΡΡ, ΡΠ΅ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π²Π΅ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π Π±Π΅Π»Π΅ΠΆΠΊΠΈΡΠ΅ ΠΊΡΠΌ Π²ΡΠΎΡΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠ° ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°, ΡΠ΅ ΠΎΡΠ²Π΅Π½ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² php.ini, Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° Π±Π΅Π· ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΏΡΠ»Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Ρ ΡΠΈΠΏ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ βmultipart/form-dataβ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠ΅Π· ΡΠ΅Π± ΡΠΎΡΠΌΡΠ»ΡΡΠΈ.
Π Apache httpd Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° multipart Π·Π°ΡΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π² mod_rewrite:
RewriteCond %{HTTP:Content-Type} multipart [NC]
RewriteRule ^ β [F,L]
ΠΠ° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π² nginx:
if ($http_content_type ~* βmultipartβ) {
return 403;
}
ΠΠ° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π² Caddy:
@multipart header_regexp Content-Type (?i)multipart
respond @multipart 403
ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅: ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΡΠ° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠΈ Π²Π΅ΡΡΠΈΠΈ PHP 8.5.12, 8.4.27, 8.3.36 ΠΈ 8.2.35, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΠΏΠΎΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΠ½Π°Π»ΠΈΠ· Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π·Π°ΡΠΈΡΠ° ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½Π° Π½ΠΎΠ²ΠΈΠ½Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
