Google продолжает давить. Переход на Manifest V3 неизбежен

Google продолжает давить. Переход на Manifest V3 неизбежен

Google продолжает давить. Переход на Manifest V3 неизбежен

Уже с 3 июня 2024 года Google начнёт отправлять пользователям Beta-, Dev- и Canary-версий браузера Google Chrome предупреждающий баннер о том, что скоро старые расширения браузера Manifest V2 будут отключены. К ним относятся блокировщики рекламы и контент-фильтры, которые работают на основе API MV2.

Данный баннер будет выскакивать, когда пользователи будут заходить на страницу управления расширениями, расположенную по адресу chrome://extensions.

Менеджер по продуктам Chrome Extensions Дэвид Ли сообщил в блоге, что процесс будет проходить постепенно. В Chrome Web Store пользователи смогут найти альтернативные расширения Manifest V3 взамен тех, что были отключены.

Уже пять лет идёт переход от Manifest V2 к Manifest V3. Google стремится усовершенствовать браузерные расширения и повысить их производительность, конфиденциальность и безопасность. Становятся доступные новые API, а старые удаляются.

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

Текущая версия MV3 перестала вызывать ожесточённые споры и воспринимается как более усовершенствованная, чем изначально предложенная, но всё же с недостатками. К сожалению, она не предоставляет функциональность, эквивалентную той, что удаляется.

Компания отреагировала на проблему и добавила поддержку пользовательских скриптов, автономных документов, имеющих доступ к API DOM, а также увеличила количество наборов правил в декларативном APINetRequest (аналог WebRequest) до 330 000 статических правил и 30 000 динамических. Блокировщики рекламы могут использовать эти правила для отсеивания контента, который не нужен пользователям.

Браузеры Firefox, Safari и Edge в той или иной мере поддерживают MV3. Как только изменения API станут доступны в стабильном канале Chrome, расширения MV2 перестанут работать (предположительно с начала 2025-го).

Дэвид Ли отметил, что основная масса расширений (более 85%) в Chrome Web Store без проблем поддерживают Manifest V3, а самые топовые имеют версии MV3 с вариантами для пользователей AdBlock, Adblock Plus, uBlock Origin и AdGuard.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru