Атака по определению состояния памяти процессов при помощи страничного кэша

Группa исслeдoвaтeлeй бeзoпaснoсти, изо кoтoрыx нeскoлькo учaствoвaли в выявлeнии пeрвыx уязвимoстeй Meltdown и Spectre, рaзрaбoтaли нoвый форма aтaки пo стoрoнним кaнaлaм, прoвoдимoй нa oснoвe aнaлизa сoдeржимoгo стрaничнoгo кэшa (page cache), в кoтoрoм сoдeржится уведомление, полученная в результате обращения операционной системы к дискам, SSD-накопителям и другим блочным устройствам. В несходность от атак Spectre, новая слабость не вызвана аппаратными проблемами, а касается токмо программных реализаций страничного кэша и проявляется в Linux (CVE-2019-5489), Windows и, пожалуй, во многих других операционных системах. Ради ядра Linux исправление уже общедоступно в виде патча. В Windows 10 заморочка устранена в тестовой сборке (Insider Preview Build) 18305. Минуя манипуляции с системными вызовами mincore (Linux) и QueryWorkingSetEx (Windows), позволяющими смерить наличие страницы памяти в системном страничном кэше, ограниченный непривилегированный атакующий может отслеживать отдельные люди обращения других процессов к памяти. Набег позволяет отслеживать доступ на уровне 4 килобайтовых блоков с временным разрешением в 2 микросекунды в Linux (6.7 измерений в погоди) и 446 наносекунд в Windows (223 измерений в погоди). В страничном кэше оседают достаточно разнообразные исходняк, в том числе отрывки исполняемых файлов, разделяемые библиотеки, загружаемые с диска данное, отражённые в память файлы и другая оповещение, которая обычно хранится на диске и используется операционной системой и приложениями. Нападение основана на том, что постоянно процессы используют общий системный страничный кэш и факт. Ant. отсутствие или отсутствие информации в этом кэше дозволено определить через изменение задержки быть чтении данных с накопителя или насквозь обращение к вышеупомянутым системным вызовам. Страницы в кэше могут находиться отражены в области виртуальной памяти, зараз используемые несколькими процессами (например, в физической памяти может околачиваться только одна копия разделяемой библиотеки, которая отражена в виртуальную видеопамять разных приложений). В процессе вытеснения информации изо страничного кэша и заполнении его присутствие загрузке типовых данных с диска, (бог) велел анализировать состояние аналогичных страниц в виртуальной памяти других приложений. Системные вызовы mincore и QueryWorkingSetEx имеет первостепенное значение упрощают проведение атаки, так словно сразу позволяют определить какие страницы памяти изо заданного диапазона адресов присутствуют в страничном кэше. Скажем как размер отслеживаемого блока (4 Кб) не в меру велик для определения содержимого чрез перебора, атака может применяться только что для скрытой передачи данных, снижения стойкости криптографических операций выше отслеживание поведения алгоритма, оценки типовых шаблонов обращений известных процессов к памяти тож наблюдения за ходом выполнения другого процесса, расстил данных в памяти для которого известна атакующему (вот хоть, если изначально известно базовое содержание буфера в время вывода диалога аутентификации, позволительно определить пароль на основе посимвольного побора умереть и не встать время его ввода пользователем). Промежду продемонстрированных исследователями практических применений атаки получи локальную систему упоминается создание канала передачи данных изо изолированных sandbox-окружений, воссоздание выводимых сверху экран элементов интерфейса (например, диалогов аутентификации), атрибуция задержек при нажатии клавиш и ремилитариза автоматически генерируемых временных паролей (продемонстрировано держи примере приложения phpMyFAQ). Более того, предложен прогноз гипотетической удалённой атаки, позволяющей локально запущенному вредоносному процессу скрыто ост данные вовне через канал узы, организованный при помощи манипуляцией со страничным кэшем (принимающая сторонушка определяет данные через измерение задержек присутствие отдаче http-сервером Apache частей в полный голос доступных файлов). Источник: http://www.opennet.ru/opennews/art.shtml?num=49927