Суть узявимости:
Криптографический алгоритм
authencesn во время работы использует часть выделенной памяти в качестве «черновика» и записывает четыре байта прямо в страницы кеша файла. Это даёт атакующему возможность модифицировать кеш любого читаемого файла. Эксплоит представляет собой 732-байтный Python-скрипт, который последовательно вызывает операции
AF_ALG и splice для записи четырёх контролируемых байт в кеш, например, setuid-приложения. В результате модифицируется исполняемый код в памяти и запускается шелл с рутовыми правами. Что делать:
Рекомендуется в первую очередь обновить ядро, а если это невозможно — отключить модуль
algif_aead (интерфейс AF_ALG для AEAD).Как детектировать атаку:
Артефакты запуска исходного эксплоита на Python можно увидеть на скриншоте выше. Запуск отслеживается по характерным командным строкам:
sh -c -- su
sh -c -- newgrp
sh -c -- passwd
sh -c -- gpasswd
sh -c -- sudo
sh -c -- chfn
sh -c -- umount
sh -c -- mount
sh -c -- fusermount3
sh -c -- chsh
sh -c -- su
Аналогичные строки могут быть и с другими setuid-файлами.
Можно отслеживать атаку и по характерной цепочке процессов: python запускает shell.
Также рекомендуется контролировать:
— создание сокета
AF_ALG (интерфейс к криптографическому API ядра Linux) непривилегированными пользователями, — использование системного вызова
splice(), который позволяет перемещать данные между двумя файловыми дескрипторами (например, из файла в пайп или из сокета в файл) внутри памяти ядра.Необходимо отметить, что уже появляются другие версии эксплоитов, детектирование которых может отличаться. Следите за подозрительными изменениями идентификатора пользователя родительского и дочернего процессов от неизвестных файлов либо файлов, нехарактерных для вашей инфраструктуры.
Update: Дополнительные артефакты и рекомендации по детектированию атаки Copy Fail собраны здесь.
