Исследователи из Бирмингемского университета, ранее известные разработкой атак Plundervolt и VoltPillager, выявили уязвимость (CVE-2022-43309) в некоторых серверных материнских платах, позволяющую физически вывести из строя CPU без возможности его последующего восстановления. Уязвимость, которая получила кодовое имя PMFault, может быть использована для повреждения серверов, к которым у атакующего нет физического доступа, но есть привилегированный доступ к операционной системе, полученный, например, в результате эксплуатации неисправленной уязвимости или перехвата учётных данных администратора.
Суть предложенного метода в использовании интерфейса PMBus, в котором применяется протокол I2C, для повышения подаваемого на процессор напряжения до величин, вызывающих повреждение чипа. Интерфейс PMBus обычно реализуется в модуле VRM (Voltage Regulator Module), доступ к которому можно получить через манипуляции с BMC-контроллером. Для совершения атаки на платы, поддерживающие PMBus, кроме полномочий администратора в операционной системе необходимо наличие программного доступа к BMC (Baseboard Management Controller), например, через интерфейс IPMI KCS (Keyboard Controller Style) или Ethernet.
Наличие проблемы, позволяющей совершить атаку без знания параметров аутентификации в BMC, подтверждено в материнских платах Supermicro с поддержкой IPMI (X11, X12, H11 и H12) и ASRock, но уязвимости также подвержены и другие серверные платы, на которых можно получить доступ к PMBus. В ходе проведённых экспериментов на данных платах было повреждено два процессора Intel Xeon. Инструментарий для проведения атаки на платы Supermicro и ASRock, а также утилита для проверки наличия доступа к PMBus, опубликованы на GitHub.
Метод изменения напряжения через PMBus также может применяться для совершения атаки Plundervolt, позволяющей через понижение напряжения до минимальных величин вызвать повреждение содержимого ячеек с данными в CPU, используемых при вычислениях в изолированных анклавах Intel SGX и генерации ошибок в изначально корректных алгоритмах. Например, если добиться изменения значения, используемого при умножении в процессе шифрования, на выходе окажется некорректный шифротекст. Имея возможность обращаться к обработчику в SGX для шифрования своих данных, атакующий может, вызывая сбои, накопить статистику об изменении шифротекста на выходе и восстановить значение ключа, хранящегося в анклаве SGX.