[Перевод] Насколько небезопасен Avast Secure Browser?
Некоторое время назад я уже изучал Avast Secure Browser. Тогда для Avast это закончилось не лучшим образом: я обнаружил критические уязвимости, позволяющие произвольным веб-сайтам заражать компьютер пользователя. Хуже того: во многом это произошло из-за пренебрежения методами безопасной разработки, а существующие механизмы безопасности были отключены без уважительной на то причины.
Я не закончил это расследование, потому что обнаружил, что браузер, по сути, был программой-шпионом, которая собирала историю просмотров и продавала её через дочернюю компанию Avast Jumpshot.
Но это было почти пять лет назад. После первоначальной фазы отрицания в Avast решили извиниться и прекратить использование Jumpshot. И то, что Avast впоследствии был продан компании NortonLifeLock, которая сегодня называется Gen Digital, было простым совпадением.
Да, Avast действительно исправился и расплачивается за свои преступления в Европе и США. Согласно постановлению европейского правительства, Avast по-прежнему утверждает (несмотря на известную информацию), что в компании собирали данные анонимно, а сам процесс полностью соответствовал требованиям конфиденциальности. Ну что ж, от старых привычек трудно избавиться.
В любом случае пришло время ещё раз взглянуть на Avast Secure Browser. Разумеется, из-за нейминга! Это была воистину гениальная идея — назвать свой браузер так, чтобы профессионалы в области безопасности подорвались проводить бесплатные аудиты. К настоящему времени в Avast наверняка уже решили проблемы, поднятые в моей статье, и сделали всё гораздо более безопасным, не так ли?
Примечание
В этой статье не представлены какие-либо реальные уязвимости. Вместо этого я поделюсь общим обзором проектных решений, которые подвергают пользователей риску, искусственно увеличивая поверхность атаки и оказывая большое доверие множеству компаний, связанных с веб-пространствами Avast.
Я бы не стал запускать Avast Secure Browser на какой-либо реальной операционной системе, только внутри виртуальной машины, не содержащей никаких данных.
Краткое изложение фактов
Проблемы, поднятые в моей предыдущей статье о предустановленных расширениях браузера, все ещё частично присутствуют.
Два расширения по умолчанию ослабляют защиту, обеспечиваемую Content-Security-Policy (CSP — политика безопасности контента), хотя этого можно было легко избежать. Одно расширение запрашивает огромные привилегии, хотя на самом деле они ему не нужны. По крайней мере, они перешли с jQuery на React, но каким-то образом всё равно умудрились получить уязвимости, которые можно использовать для HTML-инъекций.
Кроме того, два расширения принимают сообщения с любого веб-сайта Avast или серверов, выдающих себя за веб-сайты Avast, поскольку соединения, зашифрованные по протоколу HTTPS, не используются принудительно.
В случае с расширением Privacy Guard (sic!) эти сообщения делают доступной всю информацию о просмотрах пользователя веб-сайтам, готовым её принимать. Да, в прошлом Avast собирал и продавал эту информацию, и данная проблема в принципе может позволить им делать это снова, но на этот раз менее заметным образом.
Расширение Messaging отвечает за довольно навязчивую функциональность «онбординга» браузера, позволяя веб-серверу Avast устанавливать практически произвольные правила, чтобы раздражать пользователя, перенаправляя его запросы к сайтам на другие страницы. Что еще хуже, доступ к внутренним API-интерфейсам браузера был открыт для ряда доменов Avast.
Даже если предположить, что Avast (и другим компаниям, участвующим в управлении этими доменами) можно доверять, нет оснований думать, что такая огромная поверхность атаки может быть безопасной. Поэтому следует ожидать, что другие веб-сайты также смогут злоупотреблять доступом к этим API.
Что такое Avast Secure Browser?
Avast Secure Browser — это то, что вы получаете автоматически, если не проявите должной осторожности при установке антивирусного продукта Avast. Или антивируса AVG. Или Avira. Или Norton. Или CCleaner. Все эти бренды сейчас принадлежат компании Gen Digital, и все они будут продвигать Avast Secure Browser под разными именами.
Согласно информации на их веб-странице, у них есть веские причины рекламировать этот браузер:
Итак, одна из причин — этот браузер на 100% бесплатный. А если вы получаете что-то бесплатно, то вы не клиент — вы товар. Я взял на себя смелость сделать скриншот браузера и отметить рекламные площади:
Да, возможно, это не совсем справедливо. Я всё ещё не уверен, следует ли также отметить строку поиска. Поисковой системой по умолчанию является Bing, и браузер подтолкнет вас к тому, чтобы сохранить этот выбор. Конечно, не потому, что поисковая система Microsoft такая безопасная и конфиденциальная, а потому, что они за это платят.
Но это качественная и действительно полезная реклама! Как в той рекламе магазина, который торгует пищевыми добавками, чтобы вы могли вести здоровый образ жизни. Быстрый поиск показывает, что одна из трех пищевых добавок, показанных в рекламе, скорее всего, бесполезна, хотя есть подозрение, что она вредна. Другая приводит к множеству статей заинтересованных сторон, в которых утверждается о больших научно доказанных преимуществах, однако реальных исследований по этой теме нет. Наконец, третий препарат, вероятно, мог бы очень помочь — если бы существовал какой-то способ доставить его в организм в достаточной концентрации, что кажется совершенно невозможным при пероральном приеме.
Теперь, когда мы разобрались с понятием «бесплатно», мы можем сосредоточиться на аспектах безопасности и конфиденциальности в следующих разделах.
Предустановленные расширения
Разработчики по разным причинам предустанавливают расширения в свои браузеры. Mozilla Firefox использует расширения для распространения экспериментальных функций, прежде чем они станут неотъемлемой частью браузера. Как я узнал еще в 2011 году, Google Chrome использует такие расширения для продвижения своих веб-приложений и дает им преимущество перед конкурентами. И, как недавно обнаружил Саймон Уиллисон (Simon Willison), расширение Google Hangouts, встроенное в Google Chrome, предоставляет Google domains доступ к внутренним API–интерфейсам браузера, что весьма удобно, если хочется улучшить возможности отслеживания пользователей.
В предыдущей статье я рассказал, что Avast Secure Browser добавил одиннадцать расширений к тем, которые уже встроены в Google Chrome. Это число не изменилось: я по-прежнему насчитываю одиннадцать расширений, хотя их назначение могло поменяться. Вероятно, что разные версии этого браузера имеют разные комбинации программ. Только два из них — Coupons и Video Downloader — отображаются в списке расширений и могут быть легко отключены. Еще три расширения — Avast Bank Mode, Avast SecureLine VPN, Privacy Guard — становятся видны при включении режима разработчика.
Кроме того, есть пять расширений, которые вообще невидимы и не могут быть отключены обычными средствами: Anti-Fingerprinting, Messaging, Side Panel, AI Chat, Phishing Protection. Наконец, расширение New Tab встроено в браузер, и его невозможно отключить.
Все это не вызывает беспокойства, если эти программы разработаны с учетом требований безопасности и конфиденциальности. Так ли это?
Механизмы безопасности отключены
В моей предыдущей статье расширение Video Downloader описывалось как огромная вывеска: «Пожалуйста, взломайте меня». Манифест этой программы запрашивал все возможные разрешения, а также ослаблял защиту Content-Security-Policy (CSP), разрешая выполнение динамических скриптов. И то, и другое было совершенно не нужно, но мой эксплойт для проверки концепции использовал это, чтобы закрепиться в защищенном браузере Avast.
Глядя на текущий манифест Video Downloader, можно сказать, что сегодня ситуация несколько улучшилась:
{
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"permissions": [
"activeTab", "downloads", "management", "storage", "tabs", "webRequest",
"webRequestBlocking", ""
],
}
Разрешения, запрашиваемые этим расширением, по-прежнему предоставляют ему практически произвольный доступ ко всем веб-сайтам. Но, по крайней мере, единственной неиспользуемой привилегией в этом списке является management, которая дает ему возможность отключать или удалять другие расширения.
Что касается CSP, то все еще существует 'unsafe-eval', который позволил скомпрометировать это расширение в прошлый раз. Но теперь для этого есть причина: Video Downloader «нуждается» в запуске некоторого JavaScript-кода, который он получает от YouTube, чтобы извлечь метаданные видео.
Я не проверял, что это за код и что он делает, но это, как минимум, дает YouTube возможность скомпрометировать это расширение и целостность всего браузера. Но это же YouTube, он вряд ли обернется злом, верно?
Для справки: необязательно использовать 'unsafe-eval' для запуска какого-либо недоверенного кода. Всегда можно создать элемент и использовать атрибут sandbox для выполнения в нем кода JavaScript, не затрагивая остальную часть расширения.
Но есть и другие расширения. Например, Avast Bank Mode, в манифесте которого указано:
{
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"permissions": [
"activeTab", "alarms", "bookmarks", "browsingData", "clipboardRead",
"clipboardWrite", "contentSettings", "contextMenus", "cookies", "debugger",
"declarativeContent", "downloads", "fontSettings", "geolocation", "history",
"identity", "idle", "management", "nativeMessaging", "notifications",
"pageCapture", "power", "privacy", "proxy", "sessions", "storage", "system.cpu",
"system.display", "system.memory", "system.storage", "tabCapture", "tabs", "tts",
"ttsEngine", "unlimitedStorage", "webNavigation", "webRequest",
"webRequestBlocking", "http://*/*", "https://*/*", ""
],
}
Да, запрашивать все возможные разрешения и одновременно позволять выполнение динамических скриптов — это именно та комбинация, которая в прошлый раз привела к хаосу.
Почему тут нужен 'unsafe-eval'? Потому что расширение использует какую-то древнюю версию webpack, которая задействует вызов eval () для динамической «загрузки» модулей JavaScript. Очевидно, ослабить механизмы безопасности было проще, чем задействовать сборщик модулей получше (например тот, который используется в других расширениях Avast).
(Отсутствие) конфиденциальности при блокировке рекламы
Расширение Privacy Guard отвечает за блокировку рекламы и трекеров. Это оно подразумевается под предложением «заблокировать рекламу и повысить вашу конфиденциальность в интернете» на скриншоте с веб-сайта браузера. Это также одно из двух расширений, содержащих в своем манифесте следующую запись:
{
"externally_connectable": {
"ids": [ "*" ],
"matches": [
"*://*.avastbrowser.com/*",
"*://*.avgbrowser.com/*",
"*://*.ccleanerbrowser.com/*",
"*://*.avast.com/*",
"*://*.securebrowser.com/*"
]
},
}
Это означает, что любое другое установленное расширение может отправлять сообщения расширению Privacy Guard. Это не ограничивается расширениями Avast: любое другое расширение, которое вы установили из магазина дополнений Avast или Google, также может это делать.
То же самое верно для любого веб-сайта под доменами: avast.com, securebrowser.com, avastbrowser.com, avgbrowser.com или ccleanerbrowser.com. Обратите внимание, что приведенные здесь правила не применяют схему https://, незашифрованные HTTP-соединения также разрешены. И хотя домен avast.com, похоже, защищен HTTP Strict Transport Security, другие домены, напротив, не защищены.
Почему это важно: когда ваш браузер запрашивает веб-сайт example.securebrowser.com по незашифрованному HTTP-соединению, невозможно гарантировать, что браузер действительно взаимодействует с веб-сервером Avast. На самом деле любой ответ гарантированно будет исходить от вредоносного сервера, потому что такого веб-сайта не существует.
Один из способов получить ответ от такого вредоносного веб-сервера — это подключиться к общедоступной сети Wi-Fi. В принципе любой, кто подключен к тому же Wi-Fi, может перенаправлять незашифрованные веб-запросы на свой вредоносный веб-сервер, внедрить невидимый запрос на example.securebrowser.com во фрейм (который также будет обрабатываться их вредоносным сервером) и получить возможность отправлять сообщения в расширение Privacy Guard. Хотя подобные нападения и не являются распространенным явлением, такого рода атаки случались в реальных условиях.
А что же получает злоумышленник в таком случае? Позвольте мне показать вам:
chrome.runtime.connect("onochehmbbbmkaffnheflmfpfjgppblm", {name: "PG_STORE"})
.onMessage.addListener(x => console.log(x));
При этом устанавливается соединение соединение с расширением и записывает в лог все входящие сообщения. Сразу приходит одно сообщение:
{
"type": "chromex.state",
"payload": {
"main": {
"settings": {
"paused": false,
"off": false,
"blockingMode": "strict",
"showIconBadge": true,
"fingerprintEnabled": true,
"previousBlockingModeIsOff": false
},
"pausedDomains": [],
"whitelist": [],
"afpWhitelist": [],
"installationInfo": {
"hostPrefix": "",
"noProBrand": false,
"urls": {
"faqUrl": "https://extension.securebrowser.com/privacy-guard/learn-more/",
"proUrl": "https://extension.securebrowser.com/privacy-guard/offer/"
},
"whitelists": {
"whitelist": "https://update.avastbrowser.com/adblock/assets/v3/document_whitelist.txt",
"filterWhitelist": "https://update.avastbrowser.com/adblock/assets/v3/filter_whitelist.txt",
"searchWhitelist": "https://update.avastbrowser.com/adblock/assets/v3/search_document_whitelist.txt"
}
},
"isProUser": false,
"blockedAdsCount": 12
},
"tabs": {
"391731034": {
"adsBlocked": 0,
"fingerprintAttempts": 0,
"adsAllowed": 0,
"listAdsBlocked": [],
"listAdsAllowed": [],
"pageAllowed": false,
"isInternal": false,
"domainIsPaused": false,
"isInUserWhitelist": false,
"isInUserAfpWhitelist": false,
"netFilteringSwitch": true,
"active": true,
"audible": false,
"autoDiscardable": true,
"discarded": false,
"groupId": -1,
"height": 514,
"highlighted": true,
"id": 391731034,
"incognito": false,
"index": 2,
"lastAccessed": 1720641256405.484,
"mutedInfo": {
"muted": false
},
"openerTabId": 391731032,
"pendingUrl": "secure://newtab/",
"pinned": false,
"selected": true,
"status": "complete",
"title": "Example Domain",
"url": "https://example.com/",
"width": 299,
"windowId": 391730998,
"favIconUrl": "https://example.com/favicon.ico"
},
"-1": {
"adsBlocked": 0,
"fingerprintAttempts": 0,
"adsAllowed": 0,
"listAdsBlocked": [],
"listAdsAllowed": [],
"isInternal": true
},
"active": 391731034
}
}
}
Первая часть — это настройки Privacy Guard, ваши домены из белого списка и всё остальное. Есть также три жестко заданных (закодированных) списка, содержащих исключения для блокировки — забавно, что Avast, похоже, не упоминает об этом нигде в пользовательском интерфейсе или документации. Я имею в виду, что, похоже, в стандартном «сбалансированном режиме» их блокировщик рекламы, помимо прочего, не будет блокировать никакую рекламу на Amazon или eBay. Возможно, Avast следует быть более прозрачными в этом вопросе, иначе у пользователей может сложиться впечатление, что это как-то связано с этими спонсируемыми закладками.
Затем идет информация обо всех ваших вкладках браузера, которую я здесь сократил до одной вкладки. Это практически вся информация, создаваемая API вкладок, дополненная некоторыми сведениями о заблокированной рекламе. Privacy Guard не просто отправляет информацию о текущем состоянии вашего сеанса просмотра, он также будет отправлять обновления всякий раз, когда что-то изменится. На любое расширение браузера, на любой веб-сайт Avast и на любой веб-сервер, выдающий себя за веб-сайт Avast.
Может ли Avast воспользоваться этим доступом, чтобы снова собирать данные о просмотре сайтов пользователей? Это, конечно, возможно. Однако до тех пор, пока они делают это только для избранной группы пользователей, обнаружить это будет очень сложно. Не помогает и то, что Avast Secure Browser, помимо прочего, отслеживает использование виртуальных машин, поэтому вполне вероятно, что такое поведение не будет задействовано для пользователей, которые их используют. Он также может быть включен только для людей, которые открывали браузер определенное (заданное) количество раз после его установки, поскольку это тоже отслеживается.
Могут ли другие браузерные расширения злоупотреблять этим для сбора данных об истории просмотра? Безусловно. Расширение может запрашивать минимальные привилегии, но все равно сможет собирать всю историю просмотров благодаря Privacy Guard.
Может ли вредоносный веб-сервер злоупотребить этим, чтобы собрать данные о просмотренных страницах пользователей, помимо одного снимка открытых в данный момент вкладок? Это сложнее, поскольку этому веб-серверу понадобится, чтобы его веб-страница каким-то образом оставалась открытой постоянно. Хотя у Avast есть такие возможности (подробнее об этом ниже), произвольный веб-сервер обычно не имеет таких возможностей и вынужден прибегать к социальной инженерии.
Интерфейс обмена сообщениями позволяет не только читать данные, но и изменять их практически произвольно. Например, можно включить блокировку рекламы без какого-либо взаимодействия с пользователем. Не то чтобы это многое меняет: сбор данных работает независимо от того, включена блокировка рекламы или нет.
Этот интерфейс обмена сообщениями также можно использовать для добавления исключений для произвольных доменов. И хотя страница настроек Privacy Guard построена с использованием React.js, который обычно защищен от HTML-инъекций, в одном компоненте они решили использовать функцию с подходящим названием dangerouslySetInnerHTML. И этот компонент, как вы уже догадались, используется, среди прочего, для отображения исключений домена.
Это не является уязвимостью межсайтового скриптинга благодаря тому, что защита CSP здесь не ослаблена. Но это позволяет внедрять HTML-контент: например, CSS-код для вмешательства в страницу настроек Privacy Guard. Злоумышленник мог бы сделать так, что добавленные исключения больше нельзя было удалить. Или он мог бы просто сделать настройки Privacy Guard полностью непригодными для использования.
Onboarding
Другое расширение, которое может получать сообщения от любого расширения или веб-сервера Avast, называется Messaging.
Интересно, что Avast зашел так далеко, что отключил для него инструменты разработчика, что сильно затрудняет изучение его функциональности. Я не знаю, почему они это сделали. Может быть, они боялись, что люди запаникуют, увидев результаты, которые оно выдает во время просмотра?
Вам интересно, что происходит? Это расширение обрабатывает некоторые правила, загруженные с сайта https://config.avast.securebrowser.com/engagement? content_type=messaging, messaging_prefs&browser_version=126.0.25496.127 (с добавлением некоторых дополнительных параметров отслеживания). Да, здесь много информации, поэтому позвольте мне выбрать одну запись и объяснить ее:
{
"post_id": 108341,
"post_title": "[190] Switch to Bing provider – PROD; google",
"engagement_trigger_all": [
{
"parameters": [
{
"operator": "s_regex",
"value": "^secure:\\/\\/newtab",
"parameter": {
"post_id": 11974,
"name": "url_in_tab",
"post_title": "url_in_tab",
"type": "string"
}
}
]
},
{
"parameters": [
{
"operator": "s_regex",
"value": "google\\.com",
"parameter": {
"post_id": 25654,
"name": "setting_search_default",
"post_title": "setting_search_default (search provider)",
"type": "string"
}
}
]
}
],
"engagement_trigger_any": [
{
"parameters": [
{
"operator": "equals",
"value": "0",
"parameter": {
"post_id": 19236,
"name": "internal.triggerCount",
"post_title": "internal.triggerCount",
"type": "number"
}
}
]
},
{
"parameters": [
{
"operator": "n_gte",
"value": "2592000",
"parameter": {
"post_id": 31317,
"name": "functions.interval.internal.triggered_timestamp",
"post_title": "interval.internal.triggered_timestamp",
"type": "number"
}
}
]
}
],
"engagement_trigger_none": [],
...
}
Запись engagement_trigger_all перечисляет условия, которые должны быть выполнены: вы должны находиться на странице новой вкладки, а вашим поисковиком должен быть Google. Запись engagement_trigger_any перечисляет условия, при которых достаточно любого из них: это конкретное правило не должно срабатывать ранее, или оно должно было сработать более 2592000 секунд (30 дней) назад. Наконец, параметр engagement_trigger_none перечисляет условия, которые должны препятствовать применению этого правила. И если эти условия соблюдены, расширение Messaging вставит фрейм в текущую вкладку, чтобы надоедать вам предложениями о переключении с Google на Bing:
Ещё одно правило будет изводить вас каждые 30 дней: необходимость включить расширение Coupons, которое также является источником дохода для Avast. Пользователям, открывающим приватное окно, будет предложено приобрести PRO-версию. И это еще не всё.
Интересным моментом является то, что эти правила не обязаны ограничиваться предоставленной им информацией. Они также могут вызывать любую функцию частных API-интерфейсов Avast в пространствах имен chrome.avast, chrome.avast.licensing и chrome.avast.onboarding. Некоторые функции API, которые, по-видимому, вызываются таким образом, довольно базовые: например isPrivateWindow () или isConnectedToUnsafeWifi (), в то время как gatherInfo (), например, выдает огромное количество информации о закладках, других браузерах и ярлыках Windows.
Кроме того, отображение сообщения во фрейме — лишь один из возможных вариантов «размещения». Расширение Messaging в настоящее время предоставляет восемь различных вариантов пользовательского интерфейса, включая прямое перенаправление текущей страницы на адрес, указанный в правиле. Но не волнуйтесь: Avast вряд ли начнет перенаправлять ваши запросы из Google в Bing: это вызовет слишком много подозрений.
Веб-сайты с суперспособностями
Почему тот факт, что расширение Messaging позволяет некоторым серверам Avast запускать API браузера, является лишь дополнительным замечанием в моей статье? Дело в том, что это расширение на самом деле не дает этому серверу ничего такого, чего он не мог бы сделать сам по себе. Когда речь идет о Avast Secure Browser, веб-сайты Avast обладают огромными привилегиями прямо »из коробки».
Браузер предоставляет эти привилегии любой веб-странице в доменах avast.com, avg.com, avastbrowser.com, avgbrowser.com, ccleanerbrowser.com и securebrowser.com. По крайней мере, здесь используются HTTPS-соединения, так что выдать себя за веб-сайт Avast не получится. Но эти веб-сайты автоматически получают доступ к:
chrome.bookmarks API: полный доступ для чтения/записи к закладкам
chrome.management API: полный доступ к расширениям, за исключением возможности их установки
chrome.webstorePrivate API: частный API браузера, который позволяет устанавливать расширения.
И к подборке частных API-интерфейсов Avast:
Теперь, чтобы детально разобраться, что делают все эти приватные API Avast и каков их потенциал для злоупотреблений и можно ли проэксплуатировать их баги, требуется больше времени, чем я мог потратить на этот проект. Я вижу, что API chrome.avast.ntp позволяет произвольно манипулировать плитками, отображаемыми на странице новой вкладки, включая отмену всех ваших изменений, чтобы вы видели только те рекламные ссылки. Похоже, что API chrome.avast.onboarding позволяет манипулировать упомянутыми выше данными «вовлечения», так что произвольный контент можно внедрить во вкладки, соответствующие любым заданным критериям. Различные элементы пользовательского интерфейса могут быть активированы по желанию. Я оставлю читателям возможность выяснить, что ещё могут сделать эти API.
Если вы сделаете это, пожалуйста, дайте мне знать, используется ли chrome.avast.browserCall () просто для связи с Центром безопасности и конфиденциальности Avast (Avast«s Security & Privacy Center), или же он раскрывает внутренние функции Chromium. Но подождите, мы же говорим об Avast! Мы все знаем, что Avast заслуживает доверия. В конце концов, они обещали Федеральной торговой комиссии, что больше не будут делать ничего плохого. И, как я уже говорил выше, выдать себя за сервер Avast невозможно благодаря принудительному использованию HTTPS. Дело закрыто, никаких проблем?
Не совсем, здесь задействовано гораздо больше сторон. Если посмотреть только на www.avast.com, то, например, за баннеры cookie отвечает OneTrust. Google, Adobe, hotjar, qualtrics и mpulse занимаются аналитикой (также известной как отслеживание пользователей). Также присутствует виджет Trustpilot. Задействовано некоторое количество провайдеров веб-хостинга (определенно Amazon, но, вероятно, и другие) и, по крайней мере, две сети доставки контента (Akamai и Cloudflare).
И это только один хост. Если посмотреть дальше, то на этих доменах размещено множество различных веб-сайтов. Некоторые из них используются в производстве, другие — в качестве экспериментов, но еще больше, по-видимому, заброшено в различных состояниях неработоспособности. Некоторые из этих веб-сервисов, похоже, находятся под контролем Avast, в то время как другими явно управляют третьи лица. По какой-то причине ещё существует нерабочий интернет-магазин, управляемый немецкой компанией электронной коммерции, той же, что раньше обеспечивала работу интернет-магазина Avira, до того как Gen Digital купила их. Если посчитать, предположу, что порядка двух десятков компаний может размещать контент на вышеупомянутых доменах. Однако я не удивлюсь, если это будет трехзначное число. Каждая из этих компаний потенциально может злоупотреблять внутренними API Avast Secure Browser, либо потому, что они решили немного подзаработать, либо потому, что правительство принудило их к сотрудничеству, либо потому, что их сети были скомпрометированы.
И не только это. Нет необходимости постоянно компрометировать один из этих веб-сервисов. Простая и очень распространенная уязвимость межсайтового скриптинга в любом из этих веб-сервисов предоставит любому веб-сайту в интернете доступ к этим API. Проверил ли Avast безопасность и целостность каждого стороннего сервиса, который они решили разместить на этих доменах? Я сильно в этом сомневаюсь.
Похоже, что официальной причиной предоставления этих привилегий столь многим веб-сайтам было содействие вышеупомянутому »онбордингу». Теперь можно задаться вопросом: действительно ли необходима такая гибкая и обширная функциональность. Но, независимо от ответа, разумный способ ее реализовать — ограничить поверхность атаки. Если вам нужно предоставить привилегии веб-страницам, вы предоставляете их единственному хосту. Вы должны убедиться, что этот единственный хост не запускает больше веб-служб, чем необходимо, и что эти веб-службы проходят надлежащую проверку безопасности. И вы добавляете как можно больше уровней защиты: например, механизм политики безопасности контента (CSP), который серьезно недоиспользован на веб-сайтах Avast.
В заключение я процитирую решение о наказании Avast за нарушение GDPR:
На данном этапе Апелляционная инстанция считает необходимым напомнить, что обвиняемая компания предоставляет программное обеспечение, предназначенное для защиты конфиденциальности своих пользователей. Будучи экспертом информационных и кибертехнологий, обвиняемая компания должна быть чрезвычайно осведомлена в области защиты данных.
Да, ну что ж…