Программное обеспечение, от веб-приложений до операционных систем и микропрограмм, постоянно атакуется всеми способами, причем как злоумышленниками, так и исследователями-безопасниками. Теперь же на передний план вышло аппаратное обеспечение — вчера было опубликовано описание нового метода эксплуатации проблемы, свойственной памяти DRAM, которая может дать злоумышленникам низкоуровневый доступ к целевым машинам.
Проблема названа Rowhammer (от англ. row hammer, «молот рядов»), так как метод ее эксплуатации заключается в «долблении» рядов ячеек памяти в устройствах DRAM, чтобы вынудить ячейки переключиться из одного состояния в другое. Используя новую технику для эксплуатации проблемы Rowhammer, исследователи из Google смогли вызвать переключение битов в ячейках и получить таким образом права доступа уровня ядра. Безопасники сообщили, что эта техника — один из наиболее серьезных эксплойтов за последние годы и может затронуть огромное число ноутбуков и десктопных машин.
Исследователь Марк Сиборн (Mark Seaborn) в понедельник опубликовал детальное техническое разъяснение техники эксплуатации проблемы Rowhammer, которая была ранее описана в документе, выпущенном сотрудниками Intel и Университета Карнеги — Меллон. Базовая концепция основана на факте, что ячейки памяти в устройствах DRAM становятся все плотнее и плотнее, это означает, что производителям становится все сложнее предотвратить перетекание электронов от одной ячейки к другой. Запрашивая целевые ячейки DRAM снова и снова, злоумышленник может вызвать возмущение в соседних ячейках, вызвав переключение битов в них при определенных обстоятельствах.
«Rowhammer — проблема с некоторыми новыми устройствами DRAM, которая заключается в том, что повторяющийся доступ к ряду ячеек может вызвать переключение битов в соседних рядах. Мы протестировали набор ноутбуков и обнаружили, что часть из них имеет эту проблему. Мы написали два работающих эксплойта повышения привилегий, использующих данный эффект. Один из них использует переключение битов с помощью Rowhammer для получения привилегий уровня ядра под Linux x86-64 при запуске из сеанса непривилегированного пользователя, — написал Сиборн в своем посте. — При запуске на машине, уязвимой для проблемы Rowhammer, процесс смог выполнить переключение битов в элементах таблицы страниц (PTE). Он смог использовать это для получения доступа к собственной таблице страниц, что дало доступ на чтение и запись ко всей физической памяти».
Сиборн протестировал свою технику на 29 различных компьютерах с разными процессорами и оперативной памятью от различных производителей и наблюдал переключение битов в 15 случаях. Тем не менее он подчеркнул, что отсутствие наблюдаемого переключения битов не означает, что DRAM не подвержена эксплуатации.
«Хотя отсутствие на данной машине переключения битов во время тестирования не означает автоматической защищенности, это может дать некоторую уверенность в том, что вызвать переключение битов на этом компьютере может быть сложно», — сказал Сиборн.
Ортега заявил, что новая техника эффективна благодаря тому, как сейчас разрабатывают устройства DRAM.
«Современная память неидеальна, производители во многом «срезают углы», чтобы сэкономить энергию и удешевить производство микросхем, так что, если вы слишком быстро обращаетесь к секции памяти или вы будете слишком быстро включать и выключать ячейку памяти, соседние ячейки памяти также будут затронуты, — сказал он. — Хитрость в том, чтобы найти ячейку памяти, хранящую нечто важное, к чему у вас нет доступа по соображениям безопасности, к примеру ячейки, хранящие пароль, или список файловых доступов, и переключить ячейку рядом с этим. В какой-то момент переключится и та ячейка, к которой у вас нет доступа».
По словам Сиборна, атаки Rowhammer можно отразить. К примеру, производители могут удостовериться в том, что, когда система обновляет ячейки DRAM, она не активирует данный ряд слишком часто без обновления соседних рядов. Проблема Rowhammer известна производителям DRAM, и некоторые из них уже внедрили определенные меры противодействия ей.
«Оглядываясь назад, если бы было больше публичной информации о проблеме Rowhammer, это было бы раньше идентифицировано как эксплуатируемая проблема безопасности. Похоже, что производители знают о Rowhammer уже какое-то время, об этом свидетельствуют меры защиты от Rowhammer в LPDDR4. Вполне возможно, что производители расценивали Rowhammer исключительно как проблему надежности», — сказал Сиборн.
Исследователь-безопасник Дэн Каминский (Dan Kaminsky), главный исследователь из White Ops, сообщил, что атака эффективна в удивительно большом количестве случаев.
«Ошибки такого рода наполняют память, если представить ее в виде скопища ведер в вашем компьютере, очень большим количеством областей, где большие возможности зависят от пустоты одного ведра. Мы трясем определенные ведра — «ведра-агрессоры», пытаясь перелить 1 в одно из этих 0. И на удивительно большом количестве компьютеров это работает», — написал Каминский по электронной почте.
Хорошей защитой от таких атак является использование памяти ECC, которая имеет дополнительные биты для коррекции ошибок. При этом ECC стоит дороже и в основном используется в серверах, а не в ноутбуках и настольных компьютерах, сказал исследователь Роберт Грэхем (Robert Graham) из Errata Security.
«Как представляется, наибольшая опасность на данный момент грозит настольным компьютерам и ноутбукам, так как они не используют ни ECC-память, ни виртуальные машины. В частности, похоже, есть опасность при исполнении кода в Google Native Client (NaCl). Это умная «песочница», которая позволяет запускать машинный код в браузере Chrome, так что веб-страницы могут исполнять программы так же быстро, как если бы эти программы запускались в самой системе. Это повреждение памяти устраняет один уровень защиты NaCl. Пока никто не продемонстрировал, как использовать эту технику на практике, чтобы полностью победить NaCl, но, скорее всего, кто-то в конечном итоге найдет способ», — сказал Грэхем.
Новые техники, по словам Сиборна, являются хорошим примером того, почему производители и исследователи должны уделять пристальное внимание аппаратным уязвимостям.
«История показала, что проблемы, которые считались только проблемами надежности, часто могут иметь значительные последствия для безопасности, и Rowhammer является хорошим примером этого. Многие уровни программной безопасности полагаются на то, что содержимое областей памяти не меняется, пока в эти области не производится запись, — сказал он. — Хотя отрасль менее ориентирована на аппаратные и более — на программные баги, мы бы хотели побудить производителей аппаратуры использовать тот же подход: тщательно анализировать последствия для безопасности этих проблем «надежности», публиковать описание этих последствий, предлагать стратегии защиты и, если возможно, выпускать обновления микропрограмм и BIOS. Такое обсуждение приведет к более защищенной аппаратуре, что принесет пользу всем пользователям».