ТехТок 9. Как работают браузерные расширения и что такое фаервол
В прошлом декабре мы запустили рубрику ТехТок, чтобы отвечать на вопросы читателей о технологиях вокруг блокировки рекламы и защиты личных данных. Простая формула — вы спрашиваете, мы отвечаем. Так было восемь выпусков — благодаря вопросам, которые вы присылали через форму. Но сегодня мы хотим сделать небольшое отступление.
Оба сегодняшних вопроса — от технического директора и сооснователя AdGuard Андрея Мешкова, который заметил, что некоторыми общими техническими терминами часто бросаются, но редко объясняют, что за ними стоит. Не будем ничего усложнять и сразу перейдём к первому из них:
Как работают браузерные расширения?
Сначала давайте определим, что такое браузерные расширения. Если говорить очень просто, это мини-программы, которые запускаются в браузере и тем или иным образом изменяют веб-интерфейс. Видите маленькие значки рядом с адресной строкой? Это и есть браузерные расширения. Они могут выполнять самые разные функции — от небольших изменений настроек до серьёзных улучшений. Например, одни просто меняют способ открытия ссылок или автоматически копируют текст, а другие идут гораздо дальше — блокируют рекламу и трекеры, работают как VPN или даже используют искусственный интеллект, чтобы помочь вам писать тексты или резюмировать их содержание. Обычно для их использования вам не нужно знать ничего, кроме того, как добавить их в браузер. Но всё же, как на самом деле работают все эти расширения? Давайте разбираться.
Главное в браузерных расширениях кроется в их названии. В отличие от отдельных программ, они не могут работать вне браузера. В основе взаимодействия браузера и расширения лежат API (интерфейсы прикладного программирования) — наборы методов и свойств, предоставляемых браузерами, которые позволяют расширениям получать ограниченный доступ к некоторым функциям и данным браузера на основе имеющихся разрешений. Например, если API позволяет создавать новые вкладки или закрывать существующие, расширение может делать это посредством обращения к этому API, при условии, что расширение имеет необходимые разрешения. Чем больше функций и данных хочет получить расширение, тем больше разрешений ему требуется, поэтому внимательно относитесь к запросам разрешений при установке новой «игрушки» в браузер. Но об этом позже.
Как правило, каждый разработчик браузера создаёт свои API, специально предназначенные для этого браузера. Поэтому нередко можно увидеть, что расширение, например, для Chrome, не будет работать в Safari, и наоборот. Конечно, это не идеальное положение вещей, поэтому предпринимаются попытки стандартизировать и унифицировать эти API в рамках общей структуры. Один из примеров — WebExtensions API. Благодаря ему большинство основных браузеров, таких как Chrome, Firefox и Safari, предлагают совместимые API расширений. Это позволяет разработчикам создавать расширения, которые работают в нескольких браузерах с минимальными изменениями. Однако это не что-то само собой разумеющееся. Во многих случаях для бесперебойной работы расширения в разных браузерах требуется много усилий, и не у каждого разработчика есть ресурсы и желание для этого.
Теперь давайте вернёмся к вопросам безопасности и поговорим об ограничениях, которые браузеры накладывают на расширения. Браузерные расширения работают в так называемых песочницах — закрытых средах, которые позволяют каждому расширению получать доступ только к API браузера и ограничивают его взаимодействие с операционной системой и другими приложениями. У каждого расширения есть манифест, в котором декларируются разрешения, необходимые для выполнения его функций (например, разрешения на изменение содержимого страницы или на запуск и отмену загрузок). Браузер следит за соблюдением этих разрешений и не позволяет расширению выполнять какие-либо действия, выходящие за их рамки. Таким образом, даже если расширение взломают, оно не сможет нанести ущерб процессам и файлам, находящимся вне его досягаемости — по крайней мере, в теории.
Часто можно услышать предупреждения об опасности установки браузерных расширений из источников, не относящихся к официальным магазинам. Это связано с тем, что официальные магазины добавляют дополнительный уровень защиты. Каждое расширение, отправленное разработчиком в магазин, проходит проверку. В ходе этого процесса разработчик должен объяснить, зачем расширению требуются все запрашиваемые разрешения. Если после проверки кода эксперт решит, что разрешения чрезмерны для функциональности расширения, оно может быть отклонено и не попасть в магазин. Но нет гарантий, что в ходе проверки не будет допущено никаких ошибок. Есть множество примеров, когда расширения, допущенные в популярные магазины, такие как магазин расширений Chrome, оказывались вредоносными и крали данные пользователей или делали что-то похуже. Поэтому очень важно всегда проверять разрешения расширения перед его установкой.
Наконец, говоря о расширениях и безопасности, нельзя не упомянуть переход Chrome на новую версию платформы расширений Manifest V3. Мы много писали об этом и даже провели несколько выступлений на эту тему на Ad-Filtering Dev Summit, поскольку этот переход серьёзно сказывается на браузерных расширениях и вдвойне — на расширениях для блокировки рекламы. Это доставило нашим разработчикам много головной боли, но справедливости ради следует отметить, что это должно улучшить безопасность расширений Chrome. Весь код должен будет проходить проверку, что устраняет возможность расширений выполнять удалённо размещённый или произвольный код. Это должно значительно снизить риски безопасности.
Теперь перейдём к следующему вопросу…
Что такое фаервол?
Это одна из тех тем, на которую можно было бы легко потратить с десяток страниц, если бы мы захотели раскрыть все её аспекты. Но вместо того, чтобы углубляться в эту тему, давайте сосредоточимся на самом важном. Сначала давайте разберёмся с самым очевидным вопросом: почему фаервол вообще так называется?
Слово «фаервол» (в переводе буквально «стена огня» или «стена от огня») изначально не было техническим термином — оно появилось задолго до интернета. В своём первоначальном значении фаервол буквально означал стену, защищающую от огня. Такие стены устанавливали внутри зданий, чтобы пламя не распространялось из одной части строения в другую. В отличие от обычных стен, они были толще, изготавливались исключительно из фундаментных материалов и, как правило, не имели окон или других элементов, через которые мог пройти огонь.
В мире компьютерных сетей фаерволы впервые появились в конце 1980-х годов. Подобно своим физическим прототипам, они были разработаны для предотвращения распространения чего-либо, в данном случае — нежелательного или потенциально опасного сетевого трафика.
Первым поколением фаерволов были пакетные фильтры. Они работали на сетевом уровне, проверяя трафик путём анализа отдельных пакетов — небольших фрагментов данных, на которые разбивается информация при передаче в интернете. Пакетные фильтры принимали решения на основе таких параметров, как IP-адреса источника и пункта назначения, номера портов и используемые транспортные протоколы. В своей основе эти фаерволы полагались на заранее определённый набор правил, которые разрешали или блокировали трафик на основе этих свойств.
Затем, в начале 1990-х годов, появилось второе поколение фаерволов. В отличие от первого поколения, они были более сложными и получили название «фаерволы с отслеживанием состояния». Они не рассматривали один пакет в изоляции, а могли отслеживать трафик в течение определённого времени. Это означало, что они могли запоминать «состояние» соединения, например, был ли пакет частью существующего, одобренного сеанса или просто случайным входящим запросом.
Фаерволы продолжали развиваться по мере развития интернета. Рост популярности веб-приложений привел к разработке фаерволов, которые работают на прикладном уровне. Эти фаерволы способны понимать и фильтровать трафик на основе конкретных протоколов, которые поддерживают приложения или службы, такие как HTTP (используемый веб-браузерами для загрузки сайтов) или DNS (используемый для преобразования доменных имён в IP-адреса), а не только IP-адреса и порты. Затем, примерно в 2008 году, фаерволы начали включать технологию Deep Packet Inspection (DPI, «глубокий анализ пакетов»). Она позволяет фаерволам анализировать фактическое содержимое пакетов данных, а не только их заголовки.
Существуют различные формы реализации фаервола. Это может быть аппаратный фаервол, когда физическое устройство размещается на границе сети для фильтрации трафика (например, домашний роутер). Это может быть программный фаервол — приложение, работающее на вашем устройстве и фильтрующее трафик, поступающий на это устройство и исходящий из него (Windows Defender Firewall и т. п.). Или это может быть виртуальный или облачный фаервол, работающий удалённо и защищающий сети или устройства, не будучи при этом привязанным к конкретному оборудованию.
Теперь давайте ответим на вопрос, который может вас заинтересовать. Является ли Блокировщик рекламы AdGuard фаерволом? Краткий ответ — нет, по крайней мере, не в традиционном смысле этого слова. Но у наших приложений есть отдельные функции фаервола. В частности, в AdGuard для Android есть модуль фаервола, который позволяет пользователям управлять доступом приложений на своём устройстве к интернету. Этот модуль позволяет пользователям контролировать, какие приложения могут ходить в сеть, блокируя или разрешая доступ по мере необходимости.
Эта функция становится особенно полезной, когда приложения ведут себя подозрительно — например, отправляют данные, даже когда вы ими не пользуетесь. С помощью модуля фаервола AdGuard для Android вы можете заблокировать доступ к интернету для определённых приложений, отключить фоновый трафик, когда экран заблокирован, или даже отключить мобильные данные в роуминге. Это даёт вам полный контроль над тем, как и когда ваши приложения подключаются к интернету, без необходимости рутирования телефона или изучения сложных настроек системы.
Хотя фаерволы могут быть полезными инструментами для защиты домашней сети или конфиденциальности и безопасности на устройстве, чаще всего слово «фаервол» сейчас ассоциируется с цензурой. Во многом это связано с дурной славой, которую за последние годы приобрел «Великий китайский фаервол». И мы не можем закончить эту статью, не сказав об этом хотя бы несколько слов.
«Великий китайский фаервол» — это огромная государственная система цензуры, направленная на ограничение доступа к иностранному интернет-контенту в Китае, включая такие сервисы, как Google, Facebook, Twitter и YouTube. Она использует сочетание различных технологий, таких как DNS-спуфинг, фильтрация URL-адресов по ключевым словам, глубокий анализ пакетов (DPI) и даже подделка пакетов, чтобы блокировать или прерывать трафик. В мире существуют и другие государственные системы, похожие на эту, которые в основном функционируют как инструменты цензуры под видом обеспечения безопасности, но это тема для отдельной статьи.