Изследователите за сигурност на Qualys са показали възможността за експлоатация уязвимост в пощенския сървър на qmail, известен от 2005 г. (CVE-2005-1513), но не коригиран, тъй като qmail твърди, че е нереалистично да се създаде работещ експлойт които могат да се използват за атака на системи в конфигурацията по подразбиране.
Но изглежда, че разработчиците на qmail те сгрешиха, тъй като Qualys успя да подготви експлоит което опровергава това предположение и позволява отдалечено изпълнение на код на сървъра чрез изпращане на специално създадено съобщение.
Проблемът е причинен от преливане във функцията stralloc_readyplus (), което може да възникне при обработка на много голямо съобщение. За операцията е необходима 64-битова система с капацитет на виртуална памет над 4 GB.
В първоначалния анализ на уязвимостта през 2005 г. Даниел Бърнстейн твърди, че предположението в кода, че размерът на разпределения масив винаги отговаря на 32-битова стойност, се основава на факта, че никой не предоставя гигабайта памет за всеки процес.
През последните 15 години 64-битовите системи на сървърите замениха 32-битовите системи, количеството предоставена памет и мрежовата честотна лента се увеличиха драстично.
Пакетите, придружаващи qmail, взеха предвид коментара на Bernstein и при стартиране на процеса на qmail-smtpd те ограничиха наличната памет (Например на Debian 10 ограничението беше зададено на 7MB).
Но Инженерите на Qualys откриха, че това не е достатъчно и в допълнение към qmail-smtpd, може да се извърши отдалечена атака върху процеса qmail-local, който остана неограничен за всички тествани пакети.
Като доказателство беше подготвен експлойт прототип, което е подходящо за атака на доставения от Debian пакет с qmail в конфигурацията по подразбиране. За да организирате дистанционно изпълнение на код по време на атака, сървърът изисква 4 GB свободно дисково пространство и 8 GB RAM.
Експлойтът позволява да се изпълни всяка команда черупка с правата на всеки потребител в системата, с изключение на root и системни потребители, които нямат собствен поддиректория в директорията "/ home"
Атаката се извършва чрез изпращане на много голямо имейл съобщение, което включва множество редове в заглавката, приблизително 4GB и 576MB по размер.
При обработка на споменатия ред в qmail-local Целочислено препълване възниква, когато се опитвате да доставите съобщение на локален потребител. Тогава цяло препълване води до препълване на буфер при копиране на данни и възможност за презаписване на страници в паметта с libc код.
Също така, в процеса на извикване на qmesearch () в qmail-local, файлът ".qmail-extension" се отваря чрез функцията open (), което води до реалното стартиране на системата (". Qmail-extension"). Но тъй като част от файла "разширение" се формира въз основа на адреса на получателя (например "localuser-extension @ localdomain"), нападателите могат да организират началото на командата, като посочат потребителя "localuser-;" команда; @localdomain »като получател на съобщението.
Анализът на кода също разкри две уязвимости в допълнителната корекция проверка на qmail, който е част от пакета на Debian.
- Първата уязвимост (CVE-2020-3811) позволява да се заобиколи проверката на имейл адресите, а втората (CVE-2020-3812) води до локално изтичане на информация.
- Втората уязвимост може да се използва за проверка на наличието на файлове и директории в системата, включително тези, достъпни само за root (qmail-verify стартира с root права) чрез директно извикване към локалния драйвер.
За този пакет е подготвен набор от кръпки, елиминиращи стари уязвимости от 2005 г. чрез добавяне на твърди ограничения на паметта към функционалния код alloc () и нови проблеми в qmail.
Освен това, отделно беше подготвена актуализирана версия на корекцията на qmail. Разработчиците на версията notqmail подготвиха своите кръпки, за да блокират стари проблеми, а също така започнаха да работят за премахване на всички възможни целочислени препълвания в кода.
Fuente: https://www.openwall.com/