Исследователь Александр Попов продемонстрировал методику эксплуатации уязвимости в ядре операционной системы Linux, известной как CVE-2024-50264. Эта уязвимость представляет собой ошибку класса use-after-free, присутствующую в ядрах начиная с версии 4.8. Пользователь без привилегий может вызвать эту ошибку без использования пользовательских пространств имён.
Баг настолько сложный и имеет масштабные последствия, что стал лауреатом премии Pwnie Awards 2025 в как лучшая уязвимость для повышения привилегий.
Ограничения для использования уязвимости:
Клиентский объект virtio_vsock_sock, подверженный уязвимости, размещается совместно с серверным объектом в одном и том же slab-кэше, что усложняет проведение атак, основанных на манипуляциях разными кэшами.
Возникающее при этом состояние гонки трудно воспроизвести стабильно, поскольку запись UAF выполняется в kworker практически мгновенно после освобождения объекта (kfree()), делая стандартную технику cross-cache attack неэффективной.
После записи наступает ситуация обращения к нулевому указателю в рабочем потоке, что изначально приводит к отказу от попыток решения проблемы. Даже если исключить этот крах системы, спустя восемь секунд после закрытия сокета (VSOCK_CLOSE_TIMEOUT) произойдет новое обращение к нулевому указателю в kworker. К тому же, рабочий поток может заблокироваться в спинлоке spin_lock_bh(), если tx_lock объекта virtio_vsock_sock не равен нулю.
Основным достижением исследователя стало применение специального POSIX-сигнала, который предотвращает завершение процесса. Этим сигналом прерывается системный вызов connect(), обеспечивая стабильное воспроизведение условий гонки состояний и позволяя сохранить контроль над ходом атаки. Затем была разработана техника управления памятью, позволяющая заменять освобождаемые объекты собственными структурами. Точная синхронизация действий позволяет точно разместить подготовленные данные в той части памяти, где раньше находился уязвимый элемент.
Следующим шагом является повреждение ключевых структур ядра - msg_msg и pipe_buffer. Используя очереди сообщений, удается получать доступ к областям памяти вне пределов разрешенного диапазона, извлекая важные адреса и ссылки на конфиденциальные данные, включая учетные записи пользователей. Затем осуществляется изменение указателей внутри pipe_buffer, что открывает возможность произвольной записи в область ядра.
Особое значение имеет стратегия многократного запуска уязвимых соединений («spidraning»), пока необходимая комбинация объектов не попадет в нужное положение для эффективного захвата. Это увеличивает надежность атаки и её эффективность против современных защищенных систем.
Выявленная техника демонстрирует, насколько даже хорошо защищенное ядро Linux остается восприимчивым к креативным подходам. Поэтому специалисты по безопасности должны рассматривать CVE-2024-50264 как приоритетную угрозу, требующей срочного устранения и переоценки подходов к защите памяти.
Мы внедряем системы информационной безопасности в Свердловской области и Севастополе!
Благодаря многолетнему опыту и команде экспертов, знаем, что важно для IT-инфраструктуры и как защититься от киберугроз во всех сферах деятельности.
Оставьте свой контакт на главной странице и мы поможем с решением проблемы любой сложности!