Разкрития относно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост Π² Exim

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‰ Ρ€Π΅Π»ΠΈΠ· Exim 4.92.2 с отстраняванС Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°Ρ‚Π° уязвимости (CVE-2019-15846), която Π² конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ изпълнСниС Π½Π° ΠΊΠΎΠ΄ ΠΎΡ‚ Ρ…Π°ΠΊΠ΅Ρ€Π° с ΠΏΡ€Π°Π²Π° root. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС проявява само ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° TLS ΠΈ сС Сксплоатира Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° спСциално ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ клиСнтски сСртификат ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² SNI. Уязвимостта ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° Π΅ ΠΎΡ‚ компанията Qualys.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° спСциални символи Π² Π½ΠΈΠ· (string_interpret_escape() ΠΎΡ‚ string.c) ΠΈ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ β€˜\’ Π² края Π½Π° Π½ΠΈΠ·Π° сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° ΠΏΡ€Π΅Π΄ΠΈ нулСвия символ (β€˜\0’) ΠΈ Π³ΠΎ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°. ΠŸΡ€ΠΈ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ послСдоватСлността β€˜\’ ΠΈ слСдващия Π½ΡƒΠ»Π΅Π² ΠΊΠΎΠ΄ Π½Π° края Π½Π° Π½ΠΈΠ·Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ символ ΠΈ указатСлят сС измСства Π½Π° Π΄Π°Π½Π½ΠΈ извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π½ΠΈΠ·Π°, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π³ΠΎΠ²ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅.

ΠšΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈΠΊΠ° string_interpret_escape(), задСля Π±ΡƒΡ„Π΅Ρ€ Π·Π° стока, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄Π΅ΠΉΠΊΠΈ сС ΠΎΡ‚ дСйствитСлния Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈ поставСният ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» сС ΠΎΠΊΠ°Π·Π²Π° Π² Π·ΠΎΠ½Π° извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входния Π½ΠΈΠ· възниква ситуация Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π·ΠΎΠ½Π° извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° задСлСния Π±ΡƒΡ„Π΅Ρ€, Π° ΠΎΠΏΠΈΡ‚ΡŠΡ‚ Π·Π° запис Π½Π° разСкрания Π½ΠΈΠ· ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ запис извън Π±ΡƒΡ„Π΅Ρ€Π°.

Π’ конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ уязвимостта ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Сксплоатирана Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° спСциално ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² SNI ΠΏΡ€ΠΈ установяванС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с ΡΡŠΡ€Π²ΡŠΡ€Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Сксплоатиран Ρ‡Ρ€Π΅Π· модификация Π½Π° стойноститС peerdn Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, настроСни Π·Π° удостовСряванС ΠΏΠΎ клиСнтски сСртификат, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° сСртификати. Атаката Ρ‡Ρ€Π΅Π· SNI ΠΈ peerdn Π΅ възмоТна ΠΎΡ‚ вСрсия Exim 4.80, Π² която функцията string_unprinting() Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° Ρ€Π°Π·Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ peerdn ΠΈ SNI.

Π—Π° Π°Ρ‚Π°ΠΊΠ° Ρ‡Ρ€Π΅Π· SNI Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Сксплоита, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ i386 ΠΈ amd64 Π² Linux систСми с Glibc. Π’ Сксплоита сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π²ΡŠΡ€Ρ…Ρƒ област ΠΎΡ‚ ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ прСзаписванС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π² която сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Π·Π° Π»ΠΎΠ³. Π˜ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° сС замСня с Β«/..../..../..../..../..../..../..../..../etc/passwdΒ». ОсвСн Ρ‚ΠΎΠ²Π° сС прСзаписва ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° с адрСса Π½Π° податСля, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ сС записва Π² Π»ΠΎΠ³Π°, позволявайки добавянС Π½Π° Π½ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π² систСмата.

Издания Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с отстранСни уязвимости са ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ ΠΎΡ‚ разпространитСлитС Debian, Ubuntu, Fedora, SUSE/openSUSE ΠΈ FreeBSD. RHEL ΠΈ CentOS ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ са засСгнати, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Exim Π½Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² тСхния основСн Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (Π² EPEL актуализация Π²Π΅Ρ‡Π΅ са създадСни, Π½ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π² публичния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π² ΠΊΠΎΠ΄Π° Π½Π° Exim сС отстранява с Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΏΠ°Ρ‚Ρ‡, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° обратния Π½Π°ΠΊΠ»ΠΎΠ½, Π°ΠΊΠΎ Π΅ Π² края Π½Π° Ρ€Π΅Π΄Π°.

ΠšΠ°Ρ‚ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π΅Π½ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° уязвимостта, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° TLS ΠΈΠ»ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π²
сСкцията ACL Β«acl_smtp_mailΒ»:

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

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

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