Незамеченная на протяжении 7 лет уязвимость позволяет взломать устройства Ivanti через cookie-файлы
21/02/24
Уязвимость Ivanti, которая была раскрыта 2 года назад, до сих пор вызывает беспокойство специалистов из-за своего загадочного происхождения, согласно Securitylab.
Речь идет об уязвимости внедрения кода CVE-2021-44529 (оценка CVSS: 9.8) в устройстве Ivanti EPM Cloud Services Appliance (CSA), которая позволяет неаутентифицированному злоумышленнику выполнять произвольный код с ограниченными разрешениями (уровень прав «nobody”). После обнаружения уязвимости в 2021 году компания Ivanti выпустила рекомендации по безопасности, в которых говорится, что уязвимый код расположен в «/opt/landesk/broker/webroot/lib/csrf-magic.php», а целью атаки является — «/client/index.php».
Интерес к данной уязвимости возрос после того, как ИБ-шник Viettel Cyber Security Туан Ань Нгуен в 2020 году упомянул о наличии бэкдора в библиотеке csrf-magic, которая, по его словам, уже не поддерживается. Поиск дополнительной информации о бэкдоре в csrf-magic не принёс результатов, однако использование архива Way Back Machine позволило обнаружить скомпрометированный файл, последнее изменение в котором было сделано ещё в феврале 2014 года. Это означает, что уязвимость могла оставаться незамеченной на протяжении многих лет.
Дальнейший анализ кода привёл к обнаружению механизма бэкдора, который был спрятан в конце файла в обфусцированном коде. Процесс деобфускации кода выявил, что для активации бэкдора необходимо выполнение определённых условий, связанных с cookie-файлов браузера пользователя.
Примечательно, что код динамически генерирует функцию, которая позволяет достигнуть удаленного выполнения кода на основе куки (Cookie-based RCE), несмотря на то, что функция create_function() устарела в PHP 8 и выше. Эксплуатация уязвимости осуществляется через специально сформированные заголовки куки, содержащие base64-закодированный PHP код. Для выполнения атаки необходимо, чтобы количество пар куки было больше 3, а значение первой пары было «ab». Если эти условия выполняются, код из куки, соответствующий значению счётчика минус три, декодируется и выполняется.
Остаётся открытым вопрос о причинах добавления такого кода в программное обеспечение: является ли это остатком тестирования или скрытым методом доступа к аппаратуре. Поиск в Shodan показывает, что более 2 000 таких устройств всё ещё подключены к интернету, и около 15% из них работают на уязвимой версии.
Для дальнейшего повышения привилегий на устройстве можно воспользоваться уязвимостью CVE-2021-4034 (оценка CVSS: 7.8) в операционной системе CentOS, лежащей в основе Ivanti CSA. Эксплуатация ошибки позволяет получить права root.