Qmail poçt serverində uzaqdan istifadə edilə bilən boşluq

Qualys-dən təhlükəsizlik tədqiqatçıları göstərdi imkan istismar qmail poçt serverində zəifliklər, məşhurdur 2005-ci ildə (CVE-2005-1513), lakin yamaqsız qaldı, çünki qmail müəllifi defolt konfiqurasiyada sistemlərə hücum etmək üçün istifadə edilə bilən işləyən istismarın yaradılmasının qeyri-real olduğunu iddia edirdi. Qualys bu fərziyyəni təkzib edən və xüsusi hazırlanmış mesaj göndərməklə serverdə uzaqdan kod icrasına başlamağa imkan verən istismar hazırlaya bildi.

Problem stralloc_readyplus() funksiyasında çox böyük mesajın işlənməsi zamanı baş verə biləcək tam ədədlərin daşması ilə əlaqədardır. Əməliyyat üçün 64 GB-dan çox virtual yaddaşa malik 4 bitlik sistem tələb olunur. Boşluq ilkin olaraq 2005-ci ildə təhlil edildikdə Daniel J. Bernstein müdafiə etdi ki, kodda ayrılmış massivin ölçüsünün həmişə 32 bit dəyər daxilində olması ilə bağlı fərziyyə heç kimin hər bir prosesə gigabayt yaddaş təqdim etməməsinə əsaslanır. Son 15 il ərzində serverlərdəki 64-bit sistemlər 32-bit sistemləri əvəz etdi və təchiz edilmiş yaddaşın miqdarı və şəbəkə ötürmə qabiliyyəti kəskin şəkildə artdı.

Qmail paketinin baxıcıları Bernşteynin qeydini nəzərə aldılar və qmail-smtpd prosesini başlatarkən mövcud yaddaşı məhdudlaşdırdılar (məsələn, Debian 10-da limit 7MB-a təyin edilib). Lakin Qualys-dən olan mühəndislər bunun kifayət olmadığını və qmail-smtpd ilə yanaşı, bütün sınaqdan keçirilmiş paketlərdə məhdudiyyətsiz qalan qmail-local prosesinə uzaqdan hücumun həyata keçirilə biləcəyini müəyyən etdilər. Sübut olaraq, defolt konfiqurasiyada qmail ilə Debian paketinə hücum etmək üçün uyğun olan istismar prototipi hazırlanmışdır.
Hücum zamanı uzaqdan kodun icrasını təşkil etmək üçün server 4GB boş disk sahəsi və 8GB RAM tələb edir.
İstismar, “/home” kataloqunda öz alt kataloqu olmayan kök və sistem istifadəçiləri istisna olmaqla, sistemdəki istənilən istifadəçinin hüquqları ilə istənilən qabıq əmrlərini icra etməyə imkan verir (qmail-local prosesi hüquqlarla işə salınır). çatdırılma həyata keçirilən yerli istifadəçinin).

Hücum həyata keçirilir
təxminən 4GB və 576MB ölçülü bir neçə başlıq sətirləri daxil olmaqla çox böyük poçt mesajı göndərməklə. Belə bir sətri qmail-local-da emal etmək, yerli istifadəçiyə mesaj çatdırmağa cəhd edərkən tam ədəd daşması ilə nəticələnir. Tam ədəd daşması daha sonra məlumatların surətini çıxararkən bufer daşmasına və yaddaş səhifələrinin libc kodu ilə üzərinə yazılması ehtimalına səbəb olur. Göndərilən məlumatların düzülüşü ilə manipulyasiya etməklə, həmçinin “open()” funksiyasının ünvanını “sistem()” funksiyasının ünvanı ilə əvəz etməklə yenidən yazmaq mümkündür.

Sonra, qmail-local-da qmesearch()-a zəng etmək prosesində open() funksiyası vasitəsilə “.qmail-uzatma” faylı açılır ki, bu da funksiyanın faktiki icrasına gətirib çıxarır.
sistemi(".qmail-uzantısı"). Lakin faylın “uzatma” hissəsi alıcının ünvanına əsasən yaradıldığından (məsələn, “localuser-extension@localdomain”), təcavüzkarlar “localuser-;command” istifadəçisini göstərərək əmrin işə salınmasını təşkil edə bilərlər. ;@localdomain” mesajının alıcısı kimi.

Kod təhlili zamanı Debian paketinin bir hissəsi olan əlavə qmail-verify patchində də iki boşluq müəyyən edilib. İlk zəiflik (CVE-2020-3811) e-poçt ünvanının yoxlanışından yan keçməyə imkan verir və ikinci (CVE-2020-3812) yerli məlumatların sızmasına səbəb olur. Xüsusilə, birinci boşluq əmr göndərmək üçün istismarda istifadə olunan ünvanın düzgünlüyünün yoxlanılmasından yan keçməyə imkan verir (domensiz ünvanlar üçün yoxlama işləmir, məsələn, “localuser-;command;”). İkinci boşluqdan yerli işləyiciyə birbaşa zəng vasitəsilə sistemdə faylların və qovluqların, o cümlədən yalnız root üçün əlçatan olanlar (qmail-verify root hüquqları ilə işləyir) mövcudluğunu yoxlamaq üçün istifadə edilə bilər.

Problemi həll etmək üçün Bernstein qmail proseslərini mövcud yaddaşda ümumi limitlə (“softlimit -m12345678”) işlətməyi tövsiyə etdi, bu halda problem bloklanır. Alternativ qorunma üsulu kimi “nəzarət/databytes” faylı vasitəsilə işlənmiş mesajın maksimum ölçüsünün məhdudlaşdırılması da qeyd olunur (defolt olaraq o, standart parametrlərlə yaradılmır qmail həssas olaraq qalır). Əlavə olaraq, limit yalnız qmail-smtpd tərəfindən nəzərə alındığından, "nəzarət/databytes" sistem istifadəçilərinin yerli hücumlarından qorunmur.

Problem paketə təsir edir netqmail, Debian depolarına daxil edilmişdir. Bu paket üçün 2005-ci ildən köhnə boşluqları (alloc() funksiya koduna sabit yaddaş məhdudiyyətləri əlavə etməklə) və qmail-verify-də yeni problemləri aradan qaldıran yamaqlar dəsti hazırlanmışdır. Ayrı-ayrılıqda hazırlanmışdır qmail-verify yamasının yenilənmiş versiyası. Tərtibatçılar filiallar notqmail köhnə problemlərin qarşısını almaq üçün öz yamaqlarını hazırladılar, həmçinin koddakı bütün mümkün tam ədəd daşqınlarını aradan qaldırmaq üçün işə başladılar.

Mənbə: opennet.ru

Добавить комментарий