Исследователи из университета Карнеги-Меллона и Intel изучили аппаратный дефект в большом количестве модулей памяти DDR3. Те непроизвольно меняют значение битов в соседних рядах при колебании напряжения в определённой линии управления. То есть можно изменить значение ячейки памяти без прямого доступа к ней.
Глюк легко вызывается программным путём. Достаточно задать только две операции считывания данных из памяти с особым относительным смещением и некоторыми инструкциями для контроля кэша — и запустить небольшой цикл.
На иллюстрации показаны примеры кода. Код слева вызывает ошибку, код справа — не вызывает.
Ошибки удалось вызвать в 110 из 129 модулей памяти от трёх ведущих производителей DRAM. Устойчивы к дефекту многие старые модули, произведённые до 2012 года. Среди новых модулей (2012-2013 гг) ошибки присутствуют почти в 100% экземпляров.
Исследователи описывают только технические аспекты бага. Они не вдаются в детали, как использовать уязвимость на практике. Но очевидно, что такой баг должен привлечь внимание специалистов по безопасности. Например, раньше уже обсуждалась теоретическая возможность атаки на песочницу JVM с помощью случайной замены битов в оперативной памяти.
Вероятно, даже простой запуск такой программы на компьютере приравнивается к DoS-атаке, поскольку замена битов в оперативной памяти наверняка вызовет системные ошибки.
Трудно предположить, что такого рода «уязвимости» были внедрены в аппаратуру умышленно. Очень похоже на ток утечки между соседними электродами. Это известная проблема в электронике, тем более при современном уровне миниатюризации. Банальный технический дефект.
В то же время, случайность появления бага вовсе не отменяет возможности его эксплуатации.