Уязвимость системы безопасности Meltdown

Опубликовано: 13 Июля, 2021

Что такое уязвимость системы безопасности Meltdown?
Meltdown, также известный как Rogue Data Cache Load, представляет собой уязвимость системы безопасности, которая затрагивает микропроцессоры типов Intel x86, IBM Power и ARM, позволяя некоторым вредоносным процессам читать память даже без авторизации.
Эта уязвимость, эксплуатирующая состояние гонки, позволяет процессу обойти обычную проверку привилегий, которая предотвращает доступ процесса к данным, принадлежащим другим процессам и операционной системе, что позволяет неавторизованному процессу читать данные с любого адреса, сопоставленного с пространством памяти текущего процесса. . Следовательно, данные с неавторизованного адреса загружаются в кэш ЦП, откуда они могут быть легко выполнены процессором, даже если средство проверки привилегий каким-то образом идентифицирует мошеннический процесс, пытающийся получить доступ к другим адресам в ОЗУ. Также вредоносный процесс может эффективно читать любую физическую память, отображаемую память ядра или любого другого процесса, даже если у него может не быть на это разрешения.

Как работает эксплуатация Meltdown?
Meltdown использует следующие особенности, присущие конструкции ЦП:

  • Виртуальная память
  • Уровни привилегий
  • Конвейерная обработка инструкций и спекулятивное исполнение
  • Кеш процессора

Вышеупомянутые функции составляют основу работы всех современных процессоров и считаются безопасными. Однако расплавление использует то, как они взаимодействуют друг с другом. Следующие пункты объясняют механизм эксплуатации:

  1. Виртуальное адресное пространство операционной системы не имеет проверок управления привилегиями для максимальной эффективности. Механизм управления возложен на управление привилегиями ЦП. Как и любому другому процессу, мошенническому процессу здесь также назначается адресное пространство.

  2. Если процесс пытается выполнить чтение из неавторизованной памяти, инструкция чтения будет запланирована и обработана ЦП. Прежде чем инструкции будет разрешено производить какой-либо вывод, проверка привилегий завершится в другом месте. В случае неавторизованного чтения исполнительному устройству будет сказано, что инструкция не прошла проверку привилегий.

  3. На ранних этапах выполнения инструкции планировщик ЦП запланировал два события - проверку привилегий и первые шаги выполнения инструкции. В рамках этого, пока он ждал завершения проверки привилегий, исполнительный модуль начал с выборки данных. В случае мошеннического процесса данные были с неавторизованного адреса, но они все равно были извлечены контроллером памяти на начальном этапе выполнения инструкции, даже если затем они были отброшены и заброшены, когда проверка привилегий завершилась и не удалась.

  4. Несмотря на сбой инструкции, данные уже были запрошены исполнительным блоком и извлечены контроллером памяти, чтобы быть готовыми к их обработке, и хотя исполнительный блок отбрасывает данные при сбое проверки привилегий, кэш ЦП фактически был обновляется как автоматическая часть выборки данных из памяти, если те же данные могут понадобиться вскоре во второй раз. В этот момент начинается Meltdown.

  5. Используя атаку по боковому каналу синхронизации кэша, мошеннический процесс может определить, хранятся ли данные с определенного адреса в кэше ЦП, даже если он сам не может прочитать оттуда фактические данные.

  6. Если данные с некоторого адреса были кэшированы ЦП, тогда вторая инструкция для чтения этого адреса будет использовать кеш ЦП для этой цели (быстро), если нет, то ЦП должен будет запросить данные для чтения из памяти (медленнее) . Мошеннический процесс может использовать эту разницу во времени, чтобы определить, что из этого произошло, и был ли адрес уже в кэше ЦП. Meltdown может использовать его в сочетании с другими функциями набора команд ЦП, чтобы получить полный доступ ко всей отображаемой памяти.

    Как производители процессоров устранили эту уязвимость?
    Обнаруженная в начале 2018 года уязвимость, связанная с расплавлением, вызвала большую панику в отрасли производства процессоров, а также в нескольких компаниях по производству аппаратного и программного обеспечения. Поэтому для борьбы с этим кризисом Intel. AMD, Snapdraggon и т. Д. Выпустили отдельные патчи для своих продуктов. Однако все они слабо реализовали одну и ту же стратегию смягчения последствий, называемую изоляцией таблицы страниц ядра, которая полностью разделяет таблицы страниц пространства пользователя и пространства ядра. Один набор таблиц страниц включает в себя адреса как пространства ядра, так и пространства пользователя, как и раньше, но он используется только тогда, когда система работает в режиме ядра. Второй набор таблиц страниц для использования в пользовательском режиме содержит копию пользовательского пространства и минимальный набор отображений пространства ядра, который предоставляет информацию, необходимую для входа или выхода из системных вызовов, прерываний и исключений.

    Хотя KPTI позволил устройству быть неуязвимым для проблемы с расплавлением, это также привело к потере производительности: некоторые процессоры Intel потеряли до 30% своей производительности. Тем не менее, Intel заверила своих потребителей, что выданная производительность со временем будет исправлена.
    Также было опубликовано несколько руководящих указаний, которые помогут конечным пользователям не пострадать от недавно обнаруженной уязвимости, которые включают регулярное обновление программного обеспечения, запрет на переход по нераспознанным гиперссылкам и загрузку программного обеспечения или документов из ненадежных источников.

    Ссылки : https: //en.wikipedia.org/wiki/Meltdown_ (security_vulnerability)
    https://meltdownattack.com/