Ранее в этом году уже были показаны типы атак Spectre и Meltdown. Они позволяют атаковать жертву с минимальным использованием ресурсов. Специальным образом сформированный JavaScript может быть использован для выполнения атаки Spectre. Облачные сервисы, насколько можно было понять, находятся в безопасности — оба типа атак применимы лишь к проникновению на дискретные сетевые ресурсы.
Сейчас появилась информация о новом типе атаки. Ее предоставили исследователи из Грацского технологического университета имени Карла и Франца. В раскрытии нового типа атаки принимал участие и специалист по кибербезопасности Дэниэл Грасс, который обнаружил исходную атаку Meltdown. Что касается новинки, то она получила название NetSpectre. Ее особенность в том, что злоумышленник может удаленно считать данные памяти без выполнения какого-либо кода на системе жертвы.
Стоит отметить, что все варианты атак Spectre имеют в своей основе один и тот же набор принципов. Каждый процессор характеризуется архитектурным и микроархитектурным поведением. Они могут различаться, но не разительно. К примеру, в первом случае программа, которая загружает значение из определенной области памяти будет ожидать, пока адрес не станет известным, прежде, чем начать выполнение загрузки. Во втором случае процессор может попробовать угадать адрес для начала получения значения из памяти, причем еще до того, как станет известен точный адрес.
Если процессор допустит ошибку, то загрузка будет выполнена по-новой, на этот раз с правильным адресом. «Угадываемое» значение будет проигнорировано и сохранится архитектурно-определенное поведение. Но ошибка затронет другие элементы, в частности, содержимое кеша. Такие нарушения могут быть обнаружены и идентифицированы вредоносной программой. Такой способ получения данных известен как сторонний канал. А вернее — как атака по сторонним (или побочным) каналам.
Это вовсе не новый тип атаки, о них знали с 80-х годов прошлого века, а широко распространенными они стали после освещения Полом Кохером в 96-м году. NetSpectre основывается на этих хорошо известных принципах осуществления атаки, но разработчики привнесли и кое-что свое. В частности, атака позволяет инициировать утечку данных из памяти посредством манипуляции с сетевыми пакетами, которые отправляются по сети.
Для определения остаточных данных процессора эксперты, рассказавшие об атаке, предлагают использовать существующие фрагменты кода в приложениях либо ядре, которые активируются при появлении сетевых запросов определенного типа. К примеру, для того, чтобы извлечь осевшие в кэше данные, исследователи предлагают модифицировать метод Evict+Reload. Он основан на создании условий для вытеснения данных из кеша, а также обработки запросов, время выполнения которых позволяет судить о наличии данных в процессорном кеше.
Атаку можно было бы считать очень опасной, если бы не ее низкая производительность. В оптимальных условиях новый метод может определить 15-60 бит в час. В день — не больше 45-180 байт. Но оптимальными условия бывают очень редко, так что в обычных условиях скорость атаки минимальная — всего 1-3 байта за 3-8 часов атаки. Для проверки одного бита в этом случае требуется выполнить около 20 млн проверок.
По мнению специалистов, со временем будут предложены новые методы, позволяющие повысить эффективность атаки. Но на извлечение, к примеру, ключа AES потребуются целые дни. Такая атака блокируется методами защиты, которые эффективны против первого варианта уязвимости Spectre (CVE-2017-5753).
Для того, чтобы увеличить производительность атаки в реальных, а не оптимальных условиях до 60 бит в час исследователи предлагают использовать гаджеты с инструкциями AVX2 в качестве дополнительного канала утечки информации. Такой метод использует особенности перевода блока AVX2 в режим энергосбережения. В случае же неактивного использования AVX2 предусматривается режим экономии энергии, при котором блок AVX2 будет продолжать работать, хотя и со снижением производительности. Если AVX2 в течение 1 мс неактивен, процессор его отключает, что становится причиной появления задержки при выполнении следующей операции.
Злоумышленники могут определить факт спекулятивного выполнения кода на основании исчезновения задержки на пробуждение указанного выше блока. А это, в свою очередь, позволяет сократить число проверок для определения каждого бита информации.
Для выполнения такой работы можно воспользоваться специализированной утилитой. Как считают эксперты, фрагменты кода, о которых говорится выше, могут содержаться в любых сетевых приложениях. В том числе — коде http-серверов, SSH и других обработчиках сетевых пакетов. При определенных условиях можно получить полный доступ к содержимому всей системной памяти.
Автор: marks