Ранливост што може да се искористи од далечина во серверот за пошта qmail

Безбедносни истражувачи од Qualys покажа можност експлоатација пропусти во серверот за пошта qmail, познати уште во 2005 година (CVE-2005-1513), но остана незакрпен бидејќи авторот на qmail тврдеше дека е нереално да се создаде работен експлоат што може да се користи за напад на системи во стандардната конфигурација. Qualys беше во можност да подготви експлоат што ја побива оваа претпоставка и овозможува да се иницира далечинско извршување на кодот на серверот со испраќање специјално дизајнирана порака.

Проблемот е предизвикан од прелевање на цел број во функцијата stralloc_readyplus(), што може да се појави при обработка на многу голема порака. Операцијата бараше 64-битен систем со повеќе од 4 GB виртуелна меморија. Кога ранливоста првично беше анализирана во 2005 година, Даниел Џ. Бернштајн тврдеше дека претпоставката во кодот дека големината на доделената низа е секогаш во рамките на 32-битна вредност се заснова на фактот дека никој не обезбедува гигабајти меморија за секој процес. Во текот на изминатите 15 години, 64-битните системи на серверите ги заменија 32-битните системи, а количината на испорачаната меморија и мрежниот опсег драстично се зголемија.

Одржувачите на пакетот qmail ја зедоа предвид белешката на Бернштајн и ја ограничија достапната меморија при започнување на процесот qmail-smtpd (на пример, во Debian 10 границата е поставена на 7MB). Но, инженерите од Qualys открија дека тоа не е доволно и, покрај qmail-smtpd, може да се изврши далечински напад врз qmail-локалниот процес, кој остана неограничен во сите тестирани пакети. Како доказ, беше подготвен прототип за експлоатација кој беше погоден за напад на пакетот Debian со qmail во стандардната конфигурација.
За да организира далечинско извршување на код за време на напад, на серверот му требаат 4 GB слободен простор на дискот и 8 GB RAM.
Експлоатот ви овозможува да извршите какви било команди на школка со правата на кој било корисник во системот, освен за root и системски корисници кои немаат сопствен поддиректориум во директориумот „/home“ (процесот qmail-local се стартува со правата на локалниот корисник до кој се врши испорака).

Нападот е извршен
преку испраќање многу голема пошта порака, вклучувајќи неколку линии за заглавие, со големина од приближно 4GB и 576MB. Обработката на таква низа во qmail-local резултира со прелевање на цел број при обид да се достави порака до локалниот корисник. Прелевање на цел број потоа доведува до прелевање на баферот при копирање податоци и можност за препишување мемориски страници со libc код. Со манипулирање со распоредот на пренесените податоци, исто така е можно да се препише адресата на функцијата „open()“, заменувајќи ја со адресата на функцијата „system()“.

Следно, во процесот на повикување qmesearch() во qmail-local, датотеката „.qmail-extension“ се отвора преку функцијата open(), што доведува до вистинско извршување на функцијата
system(".qmail-екстензија"). Но, бидејќи делот „продолжување“ од датотеката се генерира врз основа на адресата на примачот (на пример, „localuser-extension@localdomain“), напаѓачите можат да организираат да се испрати командата да се изврши со наведување на корисникот „localuser-;command“ ;@localdomain“ како примач на пораката.

За време на анализата на кодот, исто така беа идентификувани две пропусти во дополнителната закрпа за qmail-verify, која е дел од пакетот за Debian. Првата ранливост (CVE-2020-3811) ви овозможува да ја заобиколите верификацијата на адресата на е-пошта, а втората (CVE-2020-3812) доведува до протекување на локални информации. Особено, првата ранливост ви овозможува да ја заобиколите проверката на точноста на адресата што се користи во експлоатот за испраќање команда (верификацијата не работи за адреси без домен, како што е „локален корисник-;команда;“). Втората ранливост може да се користи за да се провери присуството на датотеки и директориуми на системот, вклучувајќи ги и оние достапни само за root (qmail-verify работи со root права), преку директен повик до локалниот управувач.

За да се реши проблемот, Бернштајн препорача да се извршуваат процесите на qmail со вкупно ограничување на достапната меморија („softlimit -m12345678“), во кој случај проблемот е блокиран. Како алтернативен метод за заштита, се споменува и ограничувањето на максималната големина на обработената порака преку датотеката „control/databytes“ (по дифолт не е креирана со стандардните поставки qmail останува ранлива). Дополнително, „контрола/бајти на податоци“ не заштитува од локални напади од корисници на системот, бидејќи ограничувањето се зема предвид само од qmail-smtpd.

Проблемот влијае на пакетот netqmail, вклучени во складиштата на Debian. За овој пакет е подготвен сет на закрпи, елиминирајќи ги и старите пропусти од 2005 година (со додавање ограничувања на хард меморија на функцискиот код alloc()) и новите проблеми во qmail-verify. Одделно подготвени ажурирана верзија на закрпата за проверка на qmail. Програмери гранки notqmail подготвија свои закрпи за блокирање на старите проблеми, а исто така почнаа да работат на елиминирање на сите можни прелевања на цели броеви во кодот.

Извор: opennet.ru

Додадете коментар