Уязвимость в NAND Flash может привести к повреждению чужих данных на SSD-накопителях

Группа исследователей из Университета Карнеги — Меллона, компании Seagate и Швейцарской высшей технической школы Цюриха выявила низкоуровневую уязвимость в организации хранения информации на современных NAND Flash-чипах, применяемых в SSD-накопителях. Атакующий может сформировать определённую активность со своими данными на накопителе, в результате которой будет нарушена целостность не подконтрольных ему данных, которыми манипулируют другие процессы.

Уязвимость вызвана особенностями хранения данных чипами NAND Flash, поддерживающими технологию MLC (Multi-Level Cell), при которой каждая ячейка может принимать одно из четырёх пороговых напряжений (низкое — 0, два промежуточных — 01/10 и высокое — 11), т.е. MLC обеспечивает хранение в одной ячейке сразу двух битов, в отличие от классической схемы SLC (Single-Level Cell), при которой низкое напряжение в ячейке соответствует 0, а высокое — 1. Из-за паразитной ёмкостной связи между соседними ячейками, программирование содержимого ячеек может влиять на уровень заряда в соседних ячейках и появлению ошибок в них, в случае когда к ранее незаряженной ячейке прикладывается высокий уровень напряжения.

Для обхода подобного эффекта производители применяют двухэтапный метод программирования ячеек, при котором вначале устанавливается бит, задаваемый промежуточным напряжением, а затем напряжение ячейки доводится до высокого. Исследователи показали, что подобная мера не является полностью надёжной и имеет слабое звено. В частности, доказано, что частично запрограммированные ячейки, для которых завершён первый этап программирования, но ещё не выполнен второй, значительно более подвержены влиянию изменения напряжения в соседних ячейках и возникновению искажений при чтении («read disturb»), чем полностью запрограммированные ячейки. В результате разработаны две атаки, нацеленные на искажение значений в частично запрограммированных ячейках.

Первая атака реализуется через выполнение операций записи данных, соответствующих определённому шаблону, который позволят в 4.9 раза увеличить вероятность возникновения ошибки при работе алгоритма программирования ячеек MLC и в качестве косвенного влияния приводит к повреждению значений в соседних ячейках, находящихся в первой фазе программирования. Метод во многом напоминает атаку Rowhammer, нацеленную на повреждение содержимого ячеек DRAM и также разработанную в университете Карнеги — Меллон.

Вторая атака направлена на искажение данных при чтении значений частично запрограммированных ячеек из-за возникновения ошибок «read disturb» при выполнении большого числа операций чтения за очень короткий отрезок времени. Так как искажаются считываемые данные, то данный вид атаки приводит как к повреждению содержимого, уже сброшенного в частично запрограммированные ячейки, так и страниц которые только готовятся к записи. Для производителей исследователи разработали несколько методов предотвращения атак, которые рекомендованы для внедрения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.