В процессорах AMD выявлена уязвимость (CVE-2023-20588), приводящая к утечке данных, используемых в ходе выполнения операций на том же ядре CPU при обработке процессором исключения #DE (Divide Error), возникающего при попытке деления на ноль. Уязвимость проявляется только в процессорах AMD на базе микроархитектуры Zen1, например, в сериях AMD EPYC 7001, AMD Athlon 3000, AMD Ryzen 3000 с GPU Radeon, AMD Athlon PRO 3000 c GPU Radeon Vega и AMD Ryzen PRO 3000 с GPU Radeon Vega.
Уязвимость вызвана тем, что при возникновении исключения #DE при делении на ноль, процессор спекулятивно перенаправляет результат предыдущей операции деления, так как на CPU с микроархитектурой Zen1 в конвейрере присутствует только один делитель, обслуживающий операций в разных потоках. На уязвимых системах атакующий может определить результат предыдущей операции деления, в том числе выполненной на том же ядре CPU в других контекстах, например, в ядре, в других процессах или вне виртуальной машины.
С практической стороны уязвимость может использоваться для организации скрытого канала передачи данных между процессами, sandbox-окружениями или виртуальными машинами, позволяющего обмениваться данными в обход системных механизмов разграничения доступа и без обращения к системным вызовам. Уязвимость также позволяет из пространства пользователя определить результат предыдущего фактического или спекулятивного выполнения инструкции DIV, которая может применяться при обработке конфиденциальных данных на более высоком уровне привилегий (например, деление может использоваться при выполнении криптографических операций и атакующий может определить параметры этих операций).
Исправления для блокирования уязвимости подготовлены для ядра Linux и гипервизора Xen. Проблема устранена через перезапись буфера делителя во время переключения контекста. Исправление эффективно только при отключении симметричной многопоточности (SMT).