ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост Π² 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 ΠΏΡ€Π°Π²Π°. Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π΅ изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° слоТни Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°; просто замСстванС Π½Π° Π·Π½Π°Ρ†ΠΈ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° конструкцията Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° адрСси:

достави_локалначаст = Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ_Π½ΠΈΠ·(
string_sprintf("${local_part:%s}", Π½ΠΎΠ²->адрСс));
достави_Π΄ΠΎΠΌΠ΅ΠΉΠ½ = Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ_Π½ΠΈΠ·(
string_sprintf("${domain:%s}", Π½ΠΎΠ²->адрСс));

Ѐункцията expand_string() Π΅ ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½ΠΎ слоТСн ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‰ инструмСнт, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€ž${run{command arguments}β€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ стартиранС Π½Π° външСн ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π·Π° Π΄Π° Π°Ρ‚Π°ΠΊΡƒΠ²Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° SMTP сСсия, локалният ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» трябва само Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ°Ρ‚ΠΎ β€žRCPT TO β€žusername+${run{...}}@localhostβ€β€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ localhost Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ хостовСтС ΠΎΡ‚ списъка с local_domains, ΠΈ потрСбитСлско ΠΈΠΌΠ΅ Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».

Ако ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π»Π΅ Π·Π° ΠΏΠΎΡ‰Π°, Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ дистанционно Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€ž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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€