Уязвимости в OpenSMTPD, които позволяват отдалечен и локален достъп до root

Компания Qualys разкри друга отдалечена критична уязвимост (CVE-2020-8794) в пощенския сървър OpenSMTPD, разработен от проекта OpenBSD. Като идентифицирания в края на януари уязвимост, нов проблем прави възможно дистанционното изпълнение на произволни команди на обвивката на сървър с права на root потребител. Уязвимост елиминиран в бр OpenSMTPD 6.6.4p1.

Проблемът е причинен от грешка в кода, който доставя поща до отдалечения пощенски сървър (не в кода, който обработва входящите връзки). Атаката е възможна както от страна на клиента, така и от страна на сървъра. От страна на клиента атаката е възможна в конфигурацията по подразбиране на OpenSMTPD, в която OpenSMTPD приема заявки само във вътрешния мрежов интерфейс (localhost) и изпраща имейл съобщения до външни сървъри. За да се използва уязвимостта, достатъчно е по време на доставката на писмо OpenSMTPD да установи сесия с пощенски сървър, контролиран от нападателя, или нападателят да може да се вклини във връзката на клиента (MITM или пренасочване по време на атаки чрез DNS или BGP ).

За атака от страна на сървъра, OpenSMTPD трябва да бъде конфигуриран да получава външни мрежови заявки от други пощенски сървъри или да обслужва услуги на трети страни, които ви позволяват да изпратите заявка до произволен имейл (например формуляри за потвърждение на адрес на уебсайтове). Например, атакуващ може да се свърже със сървъра OpenSMTPD и да изпрати неправилно писмо (до несъществуващ потребител), което ще доведе до отговор, изпращащ писмо с код за грешка (отскачане) до сървъра на атакуващия. Нападателят може да използва уязвимостта, когато OpenSMTPD се свърже, за да достави известие до сървъра на нападателя. Командите на обвивката, инжектирани по време на атаката, се поставят във файл, който се изпълнява с root права, когато OpenSMTPD се рестартира, така че атакуващият трябва да изчака OpenSMTPD да се рестартира или да инициира срив на OpenSMTPD, за да завърши атаката.

Проблемът присъства във функцията mta_io() в кода за анализиране на многоредовия отговор, върнат от отдалечения сървър след установяване на връзка (например "250-ENHANCEDSTATUSCODES" и "250 HELP"). OpenSMTPD изчислява, че първият ред включва трицифрено число и текст, разделени със знака „-“, а вторият ред съдържа трицифрено число и текст, разделени с интервал. Ако трицифрено число не е последвано от интервал и текст във втория ред, указателят, използван за дефиниране на текста, се настройва на байта след знака „\0“ и се прави опит за копиране на данните след края на линията в буфера.

По искане на проекта OpenBSD, публикуването на подробности за използването на уязвимостта беше отложено до 26 февруари, за да позволи на потребителите да актуализират своите системи. Проблемът присъства в кодовата база от декември 2015 г., но експлоатацията преди изпълнението на кода с права на root е възможна от май 2018 г. Изследователите подготвиха работещ прототип на експлойта, който беше успешно тестван в компилации на OpenSMTPD за OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (тестване) и Fedora 31.

В OpenSMTPD също идентифицирани Друга уязвимост (CVE-2020-8793), която позволява на локален потребител да прочете първия ред на всеки файл в системата. Например, можете да прочетете първия ред на /etc/master.passwd, който съдържа хеша на паролата на root потребителя. Уязвимостта също ви позволява да прочетете цялото съдържание на файл, притежаван от друг потребител, ако този файл се намира в същата файлова система като директорията /var/spool/smtpd/. Проблемът не може да се използва в много Linux дистрибуции, където стойността на /proc/sys/fs/protected_hardlinks е зададена на 1.

Проблемът е следствие от непълно отстраняване проблеми, изразени по време на одита, проведен от Qualys през 2015 г. Нападателят може да постигне изпълнение на кода си с правата на групата “_smtpq”, като зададе променливата “PATH=.” и поставяне на скрипт, наречен makemap, в текущата директория (помощната програма smtpctl изпълнява makemap, без изрично да указва пътя). Чрез получаване на достъп до групата "_smtpq", атакуващият може да предизвика състояние на състезание (създаване на голям файл в офлайн директорията и изпращане на сигнал SIGSTOP) и преди обработката да приключи, да замени файла в офлайн директорията с твърд символна връзка, сочеща към целевия файл, чието съдържание трябва да бъде прочетено.

Трябва да се отбележи, че във Fedora 31 уязвимостта ви позволява незабавно да получите привилегиите на основната група, тъй като процесът smtpctl е снабден с флага на root setgid, вместо флага setgid smtpq. Като получите достъп до root групата, можете да презапишете съдържанието на /var/lib/sss/mc/passwd и да получите пълен root достъп до системата.

Източник: opennet.ru

Добавяне на нов коментар