Xakep #305. Многошаговые SQL-инъекции
В начале февраля 2018 года специалист команды Devcore, Мех Чанг (Meh Chang), обнаружил критическую уязвимость в составе агента пересылки сообщений Exim. Проблема получила идентификатор CVE-2018-6789, и разработчики Exim исправили ее в версии 4.90.1, вышедшей еще 10 февраля текущего года.
Хотя патч вышел месяц тому назад, уязвимость, по самым скромным подсчетам, затрагивает сотни тысяч серверов по всему миру, и исправление пока установлено далеко не на все из них. Так, сам Чанг пишет о 400 000 уязвимых серверов, но согласно свежей статистике Security Space, Exim используют более 500 000 почтовых серверов в мире (больше 50%). Статистика Shodan, датированная концом 2017 года, выглядит еще более удручающе, здесь речь идет почти о 4,5 млн серверов.
Обнаруженный Чангом баг распространяется на все версии Exim и представляет собой классическое переполнение буфера (buffer overflow), связанное с работой функции декодирования base64. Так, злоумышленник может вынудить уязвимый сервер выполнить произвольный код, причем аутентификация для этого не потребуется. Процесс эксплуатации бага исследователь подробно описал у себя в блоге.
Разработчики Exim пишут в бюллетене безопасности, что они не совсем уверены в критичности проблемы и надеются на то, что эксплуатация бага довольно сложна. На иллюстрациях ниже можно увидеть структуру эксплоита, который использовал Чанг.
Пока специалисты не обнаруживали готовых эксплоитов для CVE-2018-6789 и атак с их использованием, однако после детального раскрытия информации об уязвимости, они определенно появятся в самое ближайшее время. Всем администраторам и владельцам Exim-серверов настоятельно рекомендуется обновиться до Exim 4.90.1 как можно скорее.