Samsung закрыла критическую уязвимость в KNOX, угрожающую миллионам Galaxy

KNOX

Samsung выпустила январское обновление безопасности 2026 года, устраняющее критическую уязвимость в проприетарной платформе KNOX. Проблема, зарегистрированная как CVE-2026-20971, была обнаружена исследовательской лабораторией LucidBit Labs. Она затрагивает широкий спектр устройств Galaxy, выпущенных за последние восемь лет, включая линейки от S9 до S25, а также модели A-серии на процессорах Exynos и Qualcomm. В случае успешной эксплуатации злоумышленник мог бы получить полный контроль над устройством через атаку на ядро операционной системы.

Уязвимость CVE-2026-20971

Уязвимость находится в подсистеме Process Authenticator (PROCA), входящей в состав KNOX. Этот компонент отвечает за проверку целостности процессов на уровне ядра. PROCA использует механизм File Integrity Verification Engine (FIVE), который отслеживает и управляет состояниями доверия процессов и файлов. Исследователи выявили condition use-after-free (UAF) в обработке объектов task_integrity, связанных с жизненным циклом процессов. Суть проблемы заключается в небезопасном доступе к этим объектам через интерфейсы procfs, расположенные по пути /proc/[pid]/integrity/. Обработчики ядра получают указатель на структуру целостности процесса с помощью макроса, который не увеличивает счетчик ссылок, хотя сам объект управляется через подсчет ссылок.

При выполнении execve() ядро заменяет существующий объект task_integrity новым и освобождает старый. Поскольку ядро Linux является вытесняющим, возникает состояние гонки: один поток обращается к объекту целостности, а другой одновременно инициирует его замену и освобождение. При точном расчете времени поток продолжает работать с уже освобожденным объектом, что приводит к классическому сценарию UAF. Исследователи продемонстрировали, что эта уязвимость доступна из непривилегированных приложений, что значительно повышает ее серьезность.

Эксплуатация узких окон гонок позволяет достичь нескольких примитивов повреждения памяти. Один из них - утечка памяти ядра через обработчик proc_integrity_value_read(). Если освобожденная память перераспределяется подконтрольными атакующему данными, это дает возможность обойти защиту Kernel Address Space Layout Randomization (KASLR). Более сложный путь эксплуатации предполагает потенциальный произвольный вызов функции через обработчик proc_integrity_reset_file(). Для этого используются висящие указатели на файловые структуры ядра и косвенные вызовы функций. Однако современные ядра Android реализуют механизм Control Flow Integrity (CFI), который ограничивает косвенные вызовы только допустимыми сигнатурами функций. Эта защита существенно снижает возможность эксплуатации такого примитива.

Другой жизнеспособный вектор связан с обработчиком proc_integrity_label_read(), где операции со spinlock на освобожденной памяти могут приводить к ограниченным примитивам записи. Хотя эти записи ограничены, они потенциально способны повредить соседние структуры ядра, открывая путь для дальнейших атак, таких как переполнение кучи или новые условия UAF.

Несмотря на сложность эксплуатации, требующую точного расчета времени, манипуляций с кучей и техник перераспределения кэша, исследователи отмечают широкую поверхность атаки и доступность уязвимости из недоверенных приложений. Работа LucidBit Labs также демонстрирует, что такие механизмы безопасности, как KNOX и FIVE, хотя и предназначены для усиления защиты, могут непреднамеренно создавать новые векторы атак из-за сложного управления состоянием и недостаточного контроля времени жизни объектов.

Samsung устранила CVE-2026-20971 в январском обновлении безопасности после ответственного раскрытия информации компанией LucidBit Labs. Пользователям настоятельно рекомендуется установить последний уровень патча безопасности, чтобы минимизировать риски эксплуатации. Эта проблема подчеркивает повторяющуюся тенденцию в современной мобильной безопасности: по мере усложнения защитных систем их внутренняя сложность сама становится целью для злоумышленников, особенно когда упускаются из виду тонкие ошибки управления памятью.

Ссылки

Комментарии: 0