Qmail posta sunucusunda uzaktan yararlanılabilen güvenlik açığı

Qualys'ten güvenlik araştırmacıları gösteri fırsat Çalışma qmail posta sunucusundaki güvenlik açıkları, bilinen 2005'te (CVE-2005-1513) ancak yama yapılmadan kaldı çünkü qmail'in yazarı, varsayılan yapılandırmadaki sistemlere saldırmak için kullanılabilecek çalışan bir istismar oluşturmanın gerçekçi olmadığını savundu. Qualys, bu varsayımı çürüten ve özel olarak tasarlanmış bir mesaj göndererek sunucuda uzaktan kod yürütülmesine izin veren bir istismar hazırlamayı başardı.

Sorun, stralloc_readyplus() işlevindeki çok büyük bir ileti işlenirken ortaya çıkabilen bir tamsayı taşmasından kaynaklanmaktadır. İşlem, 64 GB'tan fazla sanal belleğe sahip 4 bitlik bir sistem gerektiriyordu. Güvenlik açığı ilk olarak 2005 yılında analiz edildiğinde Daniel J. Bernstein, koddaki tahsis edilen dizinin boyutunun her zaman 32 bitlik değer dahilinde olduğu varsayımının, hiç kimsenin her işleme gigabaytlarca bellek sağlamadığı gerçeğine dayandığını savundu. Son 15 yılda, sunuculardaki 64 bit sistemler 32 bit sistemlerin yerini aldı ve sağlanan bellek miktarı ve ağ bant genişliği önemli ölçüde arttı.

qmail paketi bakımcıları, Bernstein'ın notunu dikkate aldı ve qmail-smtpd işlemini başlatırken kullanılabilir belleği sınırladı (örneğin, Debian 10'da sınır 7MB olarak ayarlanmıştır). Ancak Qualys mühendisleri bunun yeterli olmadığını ve test edilen tüm paketlerde kısıtlamasız kalan qmail-smtpd'ye ek olarak qmail-local sürecine de uzaktan saldırı gerçekleştirilebileceğini buldu. Kanıt olarak, Debian paketine varsayılan konfigürasyonda qmail ile saldırmaya uygun bir istismar prototipi hazırlandı.
Bir saldırı sırasında uzaktan kod yürütülmesini organize etmek için sunucunun 4 GB boş disk alanına ve 8 GB RAM'e ihtiyacı vardır.
Bu istismar, “/home” dizininde kendi alt dizini olmayan kök ve sistem kullanıcıları hariç, sistemdeki herhangi bir kullanıcının haklarıyla herhangi bir kabuk komutunu çalıştırmanıza olanak tanır (qmail-local işlemi, haklarla başlatılır). Teslimatın gerçekleştirildiği yerel kullanıcıya ait).

Saldırı gerçekleştirilir
Birkaç başlık satırı içeren, yaklaşık 4 GB ve 576 MB boyutunda çok büyük bir posta mesajı göndererek. Böyle bir dizenin qmail-local'de işlenmesi, yerel kullanıcıya bir mesaj teslim edilmeye çalışıldığında tamsayı taşmasına neden olur. Tamsayı taşması, veri kopyalanırken arabellek taşmasına ve libc koduyla bellek sayfalarının üzerine yazılma olasılığına yol açar. İletilen verilerin düzenini değiştirerek, "open()" işlevinin adresini yeniden yazmak ve onu "system()" işlevinin adresiyle değiştirmek de mümkündür.

Daha sonra, qmail-local'da qmesearch() öğesinin çağrılması sürecinde, open() işlevi aracılığıyla “.qmail-extension” dosyası açılır ve bu, işlevin fiilen yürütülmesine yol açar.
system(".qmail-uzantısı"). Ancak dosyanın "uzantı" kısmı alıcının adresine göre oluşturulduğu için (örneğin, "yerelkullanıcı-uzantısı@yereletki alanı"), saldırganlar "localuser-;command" kullanıcısını belirterek gönderilecek komutun çalıştırılmasını ayarlayabilir. Mesajın alıcısı olarak ;@localdomain”.

Kod analizi sırasında Debian paketinin bir parçası olan ek qmail-verify yamasında da iki güvenlik açığı tespit edildi. İlk güvenlik açığı (CVE-2020-3811) e-posta adresi doğrulamasını atlamanıza olanak tanır ve ikincisi (CVE-2020-3812) yerel bilgilerin sızmasına yol açar. Özellikle, ilk güvenlik açığı, bir komut göndermek için istismarda kullanılan adresin doğruluğunun doğrulanmasını atlamanıza olanak tanır (doğrulama, "localuser-;command;" gibi etki alanı olmayan adresler için çalışmaz). İkinci güvenlik açığı, yerel işleyiciye doğrudan çağrı yoluyla, yalnızca root tarafından erişilebilenler (qmail-verify, root haklarıyla çalışır) da dahil olmak üzere sistemdeki dosya ve dizinlerin varlığını kontrol etmek için kullanılabilir.

Soruna geçici bir çözüm bulmak için Bernstein, qmail işlemlerinin toplam kullanılabilir bellek sınırıyla ("softlimit -m12345678") çalıştırılmasını önerdi; bu durumda sorun engellenir. Alternatif bir koruma yöntemi olarak, işlenen mesajın maksimum boyutunun “kontrol/databytes” dosyası aracılığıyla sınırlandırılmasından da bahsediliyor (varsayılan olarak varsayılan ayarlarla oluşturulmaz, qmail savunmasız kalır). Ayrıca "kontrol/databaytlar", sınır yalnızca qmail-smtpd'de dikkate alındığından, sistem kullanıcılarının yerel saldırılarına karşı koruma sağlamaz.

Sorun paketi etkiliyor netqmail, Debian depolarına dahil edilmiştir. Bu paket için hem 2005'teki eski güvenlik açıklarını (alloc() işlev koduna sabit bellek sınırları ekleyerek) hem de qmail-verify'daki yeni sorunları ortadan kaldıran bir dizi yama hazırlandı. Ayrı ayrı hazırlanmış qmail doğrulama yamasının güncellenmiş sürümü. Geliştiriciler şubeler notqmail eski sorunları engellemek için kendi yamalarını hazırladı ve aynı zamanda koddaki olası tüm tamsayı taşmalarını ortadan kaldırmak için çalışmaya başladı.

Kaynak: opennet.ru

Yorum ekle