Перейти к основному содержанию

Проблемы с фильтрацией в Chrome 142+ при использовании TDI-драйвера

информация

В этой статье описывается AdGuard для Windows v8.0 — комплексный блокировщик рекламы, который защищает ваше устройство на системном уровне. Это бета-релиз, который ещё находится в стадии разработки. Чтобы начать им пользоваться, скачайте бета-версию AdGuard для Windows.

Некоторые пользователи AdGuard для Windows могут заметить, что приложение перестаёт фильтровать трафик в браузерах на основе Chromium. Начиная с Chrome версии 142 и выше, трафик браузера просто не отображается на уровне TDI-драйвера, а значит, AdGuard не может проверять и фильтровать его.

Такое поведение не ошибка AdGuard, а результат недавних изменений в архитектуре и безопасности современных браузеров.

Почему это происходит

Браузеры на основе Chromium (Chrome, Edge, Brave, Vivaldi и др.) укрепляют свою архитектуру безопасности. Одно из значительных изменений — перенос важных внутренних процессов в песочницу Windows AppContainer, включая Network Service, который обрабатывает весь трафик браузера.

Что изменилось в Chrome 142

Начиная с Chrome 142, Network Service по умолчанию запускается внутри AppContainer.

В таких случаях приложения, работающие в AppContainer, не используют устаревший сетевой интерфейс TDI; вместо этого их трафик маршрутизируется через более современный стек WSK (Winsock Kernel). В результате TDI-драйвер не может видеть, перехватывать или обрабатывать соединения, проходящие через WSK, и весь трафик браузера становится невидимым для TDI-драйвера, используемого AdGuard.

Такое поведение полностью контролируется политикой «песочницы» Chrome и внутренними экспериментами, а не настройками пользователя.

Почему это влияет на AdGuard

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

Из-за этого видимость трафика на основе TDI становится всё менее стабильной. В некоторых браузерах она уже полностью исчезла и в конечном итоге перестанет работать совсем.

AdGuard уже считает TDI-драйвер устаревшим и планирует его полное удаление.

Постоянное решение

From v8.0 RC, we’ve added experimental support for the SockFilter driver. It fixes the issue by solving conflicts in the WFP stack. More information.

To use it, go to Settings → Network → Traffic filtering, enable traffic filtering, and select SockFilter (Experimental) from the list of available options.

Since it’s experimental, there may be bugs. If you notice anything unusual, unexpected, or just plain broken, you can switch back to TDI or WFP at any time in the same section.

Временное решение

Определённые изменения в реестре Windows могут заставить браузер перестать использовать AppContainer, в результате чего его процессы снова будут работать вне песочницы. Network Service прекращает использование стека WSK и переключается на сетевой путь, который виден TDI-драйверу. После этого AdGuard восстанавливает способность фильтровать трафик браузера.

Как изменить реестр в браузерах на основе Chromium

warning

Для редактирования реестра требуются права администратора. Неправильные изменения могут повлиять на стабильность и безопасность системы или браузера. Всегда создавайте резервную копию ветки реестра перед её изменением.

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

Его не следует применять повсеместно на компьютерах пользователей. Продолжите только если понимаете последствия.

Изменения в реестре можно применить автоматически, используя один из предварительно сгенерированных файлов .reg ниже. Каждый из этих файлов отключает изоляцию AppContainer/Network Service для конкретного браузера на основе Chromium:

Если вашего браузера нет в списке, следуйте приведённой ниже инструкции, чтобы создать записи в реестре:

  1. Изучите официальную документацию производителя или откройте страницу внутренней политики. В Chrome перейдите по адресу chrome://policy. В других браузерах используется аналогичный путь.

  2. Определите правильную ветку реестра для вашего браузера. Различные браузеры на основе Chromium используют разные пути в рамках HKLM. Путь должен соответствовать модели HKLM\SOFTWARE\Policies\<Vendor>\<Product>.

  3. Откройте редактор реестра:

    • Нажмите Win + R
    • Введите regedit и нажмите Enter
    • Подтвердите запрос UAC, запустив его от имени администратора
  4. Создайте резервную копию ветки Policies:

    • В левой панели перейдите к разделу HKEY_LOCAL_MACHINE\SOFTWARE\Policies
    • Щёлкните правой кнопкой мыши на PoliciesExport
    • Сохраните файл как Policies_backup.reg

    Если что-то пойдёт не так, вы можете восстановить резервную копию, дважды кликнув по этому файлу.

  5. Перейдите к ключу политики браузера:

    • Разверните путь HKEY_LOCAL_MACHINESOFTWAREPolicies.
    • Найдите папку, соответствующую вашему браузеру.

Если ключа не существует, вы можете создать его вручную. Пример для Chrome:

  • Щёлкните правой кнопкой мыши PoliciesNewKey и назовите его Google
  • Внутри Google создайте ещё один ключ с именем Chrome

Повторите ту же логику для Chromium, Edge, Brave, Vivaldi, Yandex Browser и т. д. В итоге у вас должен получиться ключ, выглядящий как HKEY_LOCAL_MACHINE\SOFTWARE\Policies\<Vendor>\<Product>\.

  1. Добавьте необходимые значения реестра:

    • В нужном ключе нажмите на правую панель → NewDWORD (32-bit) Value

    • Назовите его RendererAppContainerEnabled

    • Дважды кликните и установите:

      • Value: 0
      • Base: Hexadecimal или Decimal (оба подходят)
    • Повторите процесс и создайте второй DWORD NetworkServiceSandboxEnabled.

    • Установите его значение равным 0.

    Оба параметра должны быть типа REG_DWORD и иметь значение 0.

  2. Закройте браузер и примените настройки. Чтобы убедиться, что политика загружена:

    • Полностью закройте браузер
    • Проверьте диспетчер задач и убедитесь, что никакие процессы, такие как chrome.exe, msedge.exe или brave.exe, не запущены
    • Откройте браузер снова
  3. Убедитесь, что политика применена, открыв её в браузере.

Вы должны видеть следующие активные политики:

  • RendererAppContainerEnabled0 / false
  • NetworkServiceSandboxEnabled0 / false

Если такая опция есть, нажмите Reload policies.

Готово!