ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Exim, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° сСрвСрС с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root

Π’ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌ сСрвСрС Exim выявлСна критичСская ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2019-10149), которая ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π° сСрвСрС с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ запроса. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ эксплуатации ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° Π² вСрсиях с 4.87 ΠΏΠΎ 4.91 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ сборкС с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ EXPERIMENTAL_EVENT.

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… услоТнСний Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ примСняСтся ACL «verify = recipient», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ для Π²Π½Π΅ΡˆΠ½ΠΈΡ… адрСсов. Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ настроСк, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€ΠΎΠ»ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ MX для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ACL «verify = recipient» ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… измСнСниях Π² local_part_suffix). Удалённая Π°Ρ‚Π°ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ смоТСт ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ соСдинСниС с сСрвСром ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 7 Π΄Π½Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, отправляя ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±Π°ΠΉΡ‚Ρƒ Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΎΠ±Ρ€Ρ‹Π²Π° ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ). ΠŸΡ€ΠΈ этом Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ эксплуатации ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π±ΠΎΠ»Π΅Π΅ простыС Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π°Ρ‚Π°ΠΊΠΈ.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ адрСса получатСля Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ deliver_message(), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ /src/deliver.c. Π§Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ адрСса Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ подстановки своих Π΄Π°Π½Π½Ρ‹Ρ… Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ execv() с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root. Для эксплуатации Π½Π΅ трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ слоТных Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ пСрСполнСниях Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ памяти, достаточно просто подстановки символов.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ для прСобразования адрСсов конструкции:

deliver_localpart = expand_string(
string_sprintf(«${local_part:%s}», new->address));
deliver_domain = expand_string(
string_sprintf(«${domain:%s}», new->address));

Ѐункция expand_string() являСтся пСрСуслоТнённым ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ΠΎΠΌ, Π² Ρ‚ΠΎΠΌ числС Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «${run{ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹}», ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΊ запуску внСшнСго ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Π°Ρ‚Π°ΠΊΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… SMTP-сСанса Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²ΠΈΠ΄Π° ‘RCPT TO «username+${run{…}}@localhost»‘, Π³Π΄Π΅ localhost ΠΎΠ΄ΠΈΠ½ ΠΈΠ· хостов ΠΈΠ· списка local_domains, Π° username имя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ локального ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Если сСрвСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² качСствС ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ рСлСя достаточно ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ‘RCPT TO «${run{…}}@relaydomain.com»‘, Π³Π΄Π΅ relaydomain.com ΠΎΠ΄ΠΈΠ½ ΠΈΠ· хостов, пСрСчислСнных Π² сСкции настроСк relay_to_domains. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² exim Π½Π΅ примСняСтся Ρ€Π΅ΠΆΠΈΠΌ сброса ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (deliver_drop_privilege = false), ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· «${run{…}}» ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° устранСна Π² Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ΅ΠΌ Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ выпускС 4.92 Π±Π΅Π· акцСнтирования внимания Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ исправлСниС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. НСт оснований ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π»ΠΎ мСсто осознанноС сокрытиС уязвимости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Exim, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° устранСна Π² Ρ…ΠΎΠ΄Π΅ исправлСния сбоя , Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… адрСсов, Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° выявлСна ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Qualys ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Exim.

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… вСрсий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² дистрибутивах, ΠΏΠΎΠΊΠ° доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π°. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ выпуски для ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ с устранСниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° 11 июня. ОбновлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Debian, Ubuntu, openSUSE. Arch Linux ΠΈ Fedora ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ 4.92, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ проявляСтся. RHEL ΠΈ CentOS ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Exim Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΈΡ… ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

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