Suicide
10.03.2022, 01:51
Группа исследователей из Амстердамского свободного университета выявила новую уязвимость (https://www.vusec.net/projects/bhi-spectre-bhb/) в микроархитектурных структурах процессоров Intel (https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html) и ARM (https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/spectre-bhb), представляющую собой расширенный вариант уязвимости Spectre-v2, позволяющий обойти добавленные в процессоры механизмы защиты eIBRS и CSV2. Уязвимость присвоено несколько названий: BHI (Branch History Injection, CVE-2022-0001 (https://security-tracker.debian.org/tracker/CVE-2022-0001)), BHB (Branch History Buffer, CVE-2022-0002 (https://security-tracker.debian.org/tracker/CVE-2022-0002)) и Spectre-BHB (CVE-2022-23960 (https://security-tracker.debian.org/tracker/CVE-2022-23960)), которые описывают разное проявление одной проблемы (BHI - атака, затрагивающая разные уровни привилегий, например, процесс пользователя и ядро, BHB - атака на одном уровне привилегий, например, eBPF JIT и ядро).
Исследователями продемонстрирован рабочий эксплоит, позволяющий из пространства пользователя извлекать произвольные данные из памяти ядра. Например, показано как при помощи подготовленного эксплоита можно извлечь из буферов ядра строку с хэшем пароля пользователя root, загруженную из файла /etc/shadow. В эксплоите демонстрируется возможность использования уязвимости в рамках одного уровня привилегий (атака из уровня ядра на ядро) при помощи загруженной пользователем еBPF-программы. Не исключается также возможность применения вместо eBPF существующих в коде ядра Spectre-гаджетов (https://www.opennet.ru/opennews/art.shtml?num=56642), последовательностей команд, приводящих к спекулятивному выполнению инструкций.
Уязвимость проявляется (https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html) в большинстве актуальных процессоров Intel, за исключением процессоров семейства Atom. Из процессоров ARM проблеме подвержены (https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/spectre-bhb) Cortex-A15, Cortex-A57, Cortex-A72/73/75/76/77/78, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 и возможно некоторые чипы Cortex-R. По мнению исследований, в процессорах AMD уязвимость не проявляется. Для устранения проблемы предложено несколько программных методов блокирования уязвимости, которые можно использовать до появления аппаратной защиты в будущих моделях CPU.
Для блокирования проведения атак через подсистему eBPF рекомендуется отключить по умолчанию возможность загрузки eBPF-программ непривилегированными пользователями, записав 1 в файл "/proc/sys/kernel/unprivileged_bpf_disabled" или выполнив команду "sysctl -w kernel.unprivileged_bpf_disabled=1". Для блокирования атак через гаджеты рекомендуется использовать инструкцию LFENCE в участках кода, потенциально приводящих к спекулятивному выполнению. Примечательно, что в конфигурации по умолчанию большинства дистрибутивов Linux уже присутствуют необходимые меры защиты, достаточные для блокирования продемонстрированной исследователями атаки через eBPF. Рекомендации Intel по отключению непривилегированного доступа к eBPF также применяются по умолчанию начиная с ядра Linux 5.16 и будут бэкпортированы в более ранние ветки.
Концептуально BHI представляет собой (http://download.vusec.net/papers/bhi-spectre-bhb_sec22.pdf) расширенный вариант атаки Spectre-v2, в котором для обхода добавленной защиты (Intel eIBRS и Arm CSV2) и организации утечки данных используется подстановка значений в буфер с глобальной историей переходов (Branch History Buffer), применяемый в CPU для повышения точности предсказания ветвления за счёт учёта истории прошлых переходов. В ходе атаки через манипуляции с историей переходов создаются условия неверного предсказания перехода и спекулятивного выполнения необходимых инструкций, результат которых оседает в кэше.
За исключением использования буфера с историей переходов (Branch History Buffer) вместо буфера предсказания ветвления (Branch Target Buffer) новая атака идентична Spectre-v2. Задача атакующего в создании таких условий, чтобы адрес при выполнении спекулятивной операции был взят из области определяемых данных. После выполнения спекулятивного косвенного перехода, считанный из памяти адрес перехода, остаётся в кэше, после чего для его извлечения может применяться один из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным.
09.03.2022
https://www.opennet.ru/opennews/art.shtml?num=56827
Исследователями продемонстрирован рабочий эксплоит, позволяющий из пространства пользователя извлекать произвольные данные из памяти ядра. Например, показано как при помощи подготовленного эксплоита можно извлечь из буферов ядра строку с хэшем пароля пользователя root, загруженную из файла /etc/shadow. В эксплоите демонстрируется возможность использования уязвимости в рамках одного уровня привилегий (атака из уровня ядра на ядро) при помощи загруженной пользователем еBPF-программы. Не исключается также возможность применения вместо eBPF существующих в коде ядра Spectre-гаджетов (https://www.opennet.ru/opennews/art.shtml?num=56642), последовательностей команд, приводящих к спекулятивному выполнению инструкций.
Уязвимость проявляется (https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html) в большинстве актуальных процессоров Intel, за исключением процессоров семейства Atom. Из процессоров ARM проблеме подвержены (https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/spectre-bhb) Cortex-A15, Cortex-A57, Cortex-A72/73/75/76/77/78, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 и возможно некоторые чипы Cortex-R. По мнению исследований, в процессорах AMD уязвимость не проявляется. Для устранения проблемы предложено несколько программных методов блокирования уязвимости, которые можно использовать до появления аппаратной защиты в будущих моделях CPU.
Для блокирования проведения атак через подсистему eBPF рекомендуется отключить по умолчанию возможность загрузки eBPF-программ непривилегированными пользователями, записав 1 в файл "/proc/sys/kernel/unprivileged_bpf_disabled" или выполнив команду "sysctl -w kernel.unprivileged_bpf_disabled=1". Для блокирования атак через гаджеты рекомендуется использовать инструкцию LFENCE в участках кода, потенциально приводящих к спекулятивному выполнению. Примечательно, что в конфигурации по умолчанию большинства дистрибутивов Linux уже присутствуют необходимые меры защиты, достаточные для блокирования продемонстрированной исследователями атаки через eBPF. Рекомендации Intel по отключению непривилегированного доступа к eBPF также применяются по умолчанию начиная с ядра Linux 5.16 и будут бэкпортированы в более ранние ветки.
Концептуально BHI представляет собой (http://download.vusec.net/papers/bhi-spectre-bhb_sec22.pdf) расширенный вариант атаки Spectre-v2, в котором для обхода добавленной защиты (Intel eIBRS и Arm CSV2) и организации утечки данных используется подстановка значений в буфер с глобальной историей переходов (Branch History Buffer), применяемый в CPU для повышения точности предсказания ветвления за счёт учёта истории прошлых переходов. В ходе атаки через манипуляции с историей переходов создаются условия неверного предсказания перехода и спекулятивного выполнения необходимых инструкций, результат которых оседает в кэше.
За исключением использования буфера с историей переходов (Branch History Buffer) вместо буфера предсказания ветвления (Branch Target Buffer) новая атака идентична Spectre-v2. Задача атакующего в создании таких условий, чтобы адрес при выполнении спекулятивной операции был взят из области определяемых данных. После выполнения спекулятивного косвенного перехода, считанный из памяти адрес перехода, остаётся в кэше, после чего для его извлечения может применяться один из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным.
09.03.2022
https://www.opennet.ru/opennews/art.shtml?num=56827