Уязвимост на функцията за кръпка на PHP поща ()

Изследователите откриха критична уязвимост в имейл клиента с отворен код Roundcube. Тя ви позволява да изпълнявате произволни команди в системата, като просто изпращате имейл.

Недостатъкът беше открит от RIPS Technologies и свързан с функцията PHP mail (), която се използва за изпращане на имейл. Когато тази функция бъде извикана, PHP изпълнява програмата за команден ред sendmail.

Проблемът е, че въвеждането от потребителя не се обработва правилно в петия параметър на функцията mail (). Това позволява на нападателя да предаде произволни аргументи. Тази уязвимост е известна от повече от две години, но разработчиците на Roundcube са я пренебрегнали.

Според RIPS, нападателят може да създаде злонамерен PHP файл в основната директория на уеб система, като изпълни Sendmail с опцията -X, която се използва за регистриране на целия пощенски трафик в специален файл. Такъв PHP файл може да позволи на хакер да изпълнява команди и да изпълнява различни хитрости, например четене на имейл или получаване на достъп до други системи в мрежата.

RIPS обяснява, че недостатъкът може да бъде използван от хакер, който има достъп до целевата система и може да изпраща имейли от компрометирана машина. След като получи достъп, нападателят може да използва недостатъка, като въведе специален код в полето „От“.

Има няколко условия, които трябва да бъдат изпълнени, за да се задейства уязвимостта. Първо, Roundcube трябва да бъде конфигуриран да използва функцията mail (), и второ, функцията mail () трябва да бъде конфигурирана да използва sendmail. В допълнение, safe_mode трябва да бъде деактивиран в PHP и нападателят трябва да знае абсолютния път до основната папка.

Такива конфигурации по подразбиране далеч не са необичайни и експертите смятат, че има десетки или стотици хиляди уязвими системи. Roundcube е изтеглен над 260 000 пъти от SourceForge само през 2016 г.

С пускането на версии на Roundcube 1.2.3 и 1.1.7 проблемът беше решен.