Exim'de, sunucuda root ayrıcalıklarıyla kod çalıştırılmasına izin veren kritik güvenlik açığı

Exim posta sunucusunda tanımlanmış kritik Güvenlik açığı (CVE-2019-10149), bu da özel hazırlanmış bir isteği işlerken sunucuda kök haklarıyla uzaktan kod yürütülmesine yol açabilir. Sorunun istismar edilmesi olasılığı, 4.87'den 4.91'e kadar olan sürümlerde veya EXPERIMENTAL_EVENT seçeneğiyle oluşturma sırasında belirtildi.

Varsayılan yapılandırmada, harici adresler için ek kontroller gerçekleştiren "doğrulama = alıcı" ACL uygulandığından, saldırı yerel bir kullanıcı tarafından gereksiz karmaşıklıklar olmadan gerçekleştirilebilir. Başka bir etki alanı için ikincil MX görevi görmek, "verify=recipient" ACL'yi kaldırmak veya local_part_suffix'te belirli değişiklikler yapmak gibi ayarlar değiştirildiğinde uzaktan saldırı meydana gelebilir. Saldırganın sunucuyla bağlantıyı 7 gün boyunca açık tutması durumunda (örneğin, zaman aşımını atlamak için dakikada bir bayt göndermesi) uzaktan saldırı da mümkündür. Aynı zamanda sorunun uzaktan istismarı için daha basit saldırı vektörlerinin olması da mümkündür.

Güvenlik açığı, /src/deliver.c dosyasında tanımlanan Deliver_message() işlevinde alıcının adresinin yanlış doğrulanmasından kaynaklanıyor. Saldırgan, adres formatını değiştirerek, kök haklarına sahip execv() işlevi aracılığıyla çağrılan bir komutun argümanlarına kendi verilerinin yerleştirilmesini sağlayabilir. İşlem, arabellek taşmaları veya bellek bozulması için kullanılan karmaşık tekniklerin kullanılmasını gerektirmez; basit karakter değişimi yeterlidir.

Sorun, adres dönüşümü için yapının kullanılmasıyla ilgilidir:

teslimat_localpart = extend_string(
string_sprintf("${local_part:%s}", yeni->adres));
teslimat_alanı = extend_string(
string_sprintf("${etki alanı:%s}", yeni->adres));

Expand_string() işlevi aşırı karmaşık bir birleştiricidir ve harici bir işleyicinin başlatılmasına yol açan "${run{command argümanları}" komutunu tanımayı içerir. Bu nedenle, bir SMTP oturumu içinde saldırı yapmak için, yerel bir kullanıcının yalnızca 'RCPT TO “kullanıcı adı+${run{...}}@localhost” gibi bir komut göndermesi gerekir; burada localhost, local_domains listesindeki ana bilgisayarlardan biridir, ve kullanıcı adı mevcut bir yerel kullanıcının adıdır.

Sunucu bir posta aktarımı olarak çalışıyorsa, 'RCPT TO "${run{...}}@relaydomain.com" adresine uzaktan komut göndermek yeterlidir; burada rölealanadi.com, aktarıcı_to_domains'de listelenen ana bilgisayarlardan biridir. ayarlar bölümü. Exim varsayılan olarak ayrıcalık modunu bırakmadığından (deliver_drop_privilege = false), "${run{...}}" yoluyla aktarılan komutlar root olarak yürütülecektir.

Güvenlik açığının olması dikkat çekicidir. elendi Şubat ayında yayınlanan 4.92 sürümünde, düzeltmenin güvenlik sorunlarına yol açabileceğini vurgulamadan. Sorun, Exim geliştiricileri tarafından kasıtlı olarak gizlendiğine inanmak için hiçbir neden yok; düzeltmeler Yanlış adresler iletildiğinde ortaya çıkan hata ve güvenlik açığı Qualys tarafından Exim'deki değişikliklerin denetimi sırasında tespit edildi.

Dağıtımlarda kullanılmaya devam eden önceki sürümlere yönelik bir düzeltme şu anda yalnızca şu adreste mevcuttur: yama. Sorunu düzeltmek için önceki şubelere yönelik düzeltici sürümlerin 11 Haziran'da yayınlanması planlanıyor. Paket güncellemeleri hazır Debian, Ubuntu, openSUSE. Arch Linux и Fötr şapka Sorunun görünmediği 4.92 sürümünü sağlıyorlar. RHEL ve CentOS sorunu duyarlı değilExim normal paket depolarında bulunmadığından.

Kaynak: opennet.ru

Yorum ekle