Участники Google-проекта Project Zero раскрыли подробности PoC-атаки, позволяющей выполнить недоверенный JavaScript-сценарий за пределами песочницы в целевой Windows-системе. В лабораторных условиях эта атака была успешно воспроизведена на полностью пропатченной Windows 10.

Новая концепция Project Zero представляет собой модифицированную атаку на протокол WPAD (Web Proxy Auto-Discovery — протокол автоматической настройки прокси), определяющий механизм поиска файла конфигурации в локальной сети. Вместе с WPAD обычно используется PAC (Proxy Auto-Config) — стандарт формата конфигурационного файла, разработанный еще в 1996 году. PAC-файл представляет собой JavaScript с описанием логики, с помощью которой браузер определяет, через какие прокси подключаться к нужному URL.

На Windows-машинах WPAD по умолчанию включен, и они пытаются отыскать PAC-файл, вначале обращаясь к локальному DHCP-серверу, а затем к DNS. В ответ на запрос высылается URL, с которого можно извлечь файл конфигурации. Если в ходе атаки подменить этот адрес, браузеру можно отдать вредоносный PAC-файл, и злоумышленник получит возможность контролировать все заходы жертвы на сайты — даже при HTTPS-связи.

В технологии WPAD и ранее находили уязвимости — достаточно вспомнить прошлогодний доклад SafeBreach на конференции Black Hat USA, в котором доказывалась возможность перехвата URL-адресов с помощью вредоносных PAC-файлов.

Вариант WPAD-атаки, разработанный в Project Zero, использует хорошо известные слабости этого протокола и комбинацию уязвимостей в JavaScript-движке разработки Microsoft, который интерпретирует PAC-файлы. «Мы обнаружили 7 уязвимостей в JScript.dll и успешно воспроизвели исполнение кода из локальной сети (и не только) на полностью пропатченной (на время публикации) 64-битной Windows 10 с установленным обновлением Fall Creators», — пишут исследователи в блоге.

Эти уязвимости (CVE-2017-11810, CVE-2017-11903, CVE-2017-11793, CVE-2017-11890, CVE-2017-11907,  CVE-2017-11855 и CVE-2017-11906) Microsoft пропатчила в октябре и на прошлой неделе.

«За последние годы эксплойты для браузеров сменили ориентацию: ранее они реализовали уязвимости через DOM, а ныне нацелены непосредственно на движки JavaScript, — констатируют авторы PoC-атаки. — По этой причине идея добиться исполнения JavaScript по сети без участия браузера нам очень понравилась».

Новый вектор атаки, обнаруженный в Project Zero, по достоинству оценил Пол Джонс (Paul Jones), консультант по вопросам ИБ в Context Information Security. По его словам, для обхода защиты Windows исследователи использовали два бага (утечку информации и переполнение буфера в куче) в связке с другими техниками, включая возвратно-ориентированное программирование. Затем они повысили привилегии с Local Service — уровня, на котором работает WPAD, — до SYSTEM.

«Чтобы вся цепочка работала, все ее звенья должны быть упорядочены, — комментирует Амит Кляйн (Amit Klein), вице-президент SafeBreach по исследованиям в области ИБ. — И все же я считаю, что примитив чтения памяти (чтение за пределами допустимого диапазона) — это активатор всех остальных шагов, и возможность его использования не ограничивается данной цепочкой».

Хотя Microsoft выпустила патчи, застраховавшись от данного типа атаки, участники Project Zero согласны с оценкой Кляйна. «Эти бреши закрыты — и что? Все кончено, расходиться по домам? — пишут исследователи в заключение. — Вряд ли. Хотя потрачено много времени, сил и вычислительных мощностей на поиск багов в JScript.dll, мы не уверены, что выловили все. Где нашлось семь, там, скорее всего, окажется и восьмой».

В качестве мер профилактики Project Zero рекомендуют Microsoft отключить WPAD по умолчанию, как это сделали вендоры других ОС, и поместить в песочницу JScript-интерпретатор, работающий в рамках службы WPAD.

Категории: Аналитика, Уязвимости