Мы представляем SugarCoat, результат годичной совместной работы Brave и Калифорнийского Университета в Сан-Диего по созданию новой системы, улучшающей веб-конфиденциальность без ущерба для веб-совместимости. SugarCoat — это наше новейшее решение старейшей проблемы в сфере веб-конфиденциальности: как защитить пользователей от следящих скриптов и при этом не разломать сайты, которые с ними интегрируются. Мы внедрим в наш браузер защиту, базирующуюся на SugarCoat, уже в этом году. Мы и наши коллеги из Калифорнийского Университета в Сан-Диего с радостью делимся исходным кодом и результатами нашего проекта. Наше исследование было представлено 15 ноября на конференции по компьютерной и коммуникационной безопасности (2021 ACM Conference on Computer and Communications Security), а препринт статьи доступен уже сейчас. Адблокеры и другие блокировщики контента часто оказываются в патовой ситуации, когда пользователи посещают неконфиденциальный сайт: или же заблокировать трекинговую функциональность и тем самым поломать страницу, или же поставить функционирование сайта в приоритет, подвергнув пользователя риску конфиденциальности, которого он изначально и хотел избежать. Это связано с тем, что сайты нередко завязываются на наличие или возможности следящих скриптов. На сегодняшний день, популярные списки блокировки контента содержат тысячи исключений, позволяющих сайтам не ломаться, а трекерам проникать в браузер пользователя. Некоторые проекты, такие как uBlock Origin по-другому подходят к этой проблеме, вручную создавая альтернативные, более лучшие версии трекинговых библиотек, т.е. скрипты, с отрезанными вредоносными частями, но сохраняющие условно-полезную часть кода. Этот подход оказался эффективным, и мы включили его в свой браузер и сами участвовали в подобных проектах. Однако же такой подход — не панацея: создание конфиденциальных версий трекинговых библиотек — это трудная и утомительная работа. Эти скрипты большие, сложные, и нередко обфусцированные. В результате наше сообщество ограничено в количестве альтернативных конфиденциальных трекинговых скриптов, которое мы можем поддерживать. На сегодня, в репозитории uBlock содержатся всего несколько десятков таких подменных скриптов. SugarCoat решает проблему «конфиденциальность или совместимость» благодаря автоматизации создания конфиденциальных вариантов трекинговых библиотек. В этом году мы внедрим скрипты, сгенерированные с помощью SugarCoat, в наш браузер, а также опубликуем их для того, чтобы другие популярные инструменты блокировщики (включая уже упомянутый uBlock Origin) могли ими воспользоваться. В общих чертах работа SugarCoat состоит из двух частей: сначала с помощью нашей системы PageGraph алгоритм анализирует то, как страница использует трекинговые библиотеки, включая то, какие веб-API скрипт использует и какие дополнительные скрипты подтягивает следящая библиотека. Затем SugarCoat переписывает скрипт, заменяя вызовы к неконфиденциальным веб-API заглушками. Эти фейковые вызовы API выглядят нормально для трекинговой библиотеки, но предотвращают запланированные неконфиденциальным скриптом непотребства. SugarCoat включает в себя различные механизмы, контролирующие корректную работу добросовестных частей трекинговых библиотек и заменяющую только её следящие щупальца. Процесс SugarCoat может работать полностью автоматизированно, что позволяет применять его в масштабах сети, на десятках тысяч сайтов, если возникнет такая необходимость. Автономная работа абсолютно необходима, так как она позволяет SugarCoat не отставать от скриптов, которые будут пытаться его обойти, и сайтов, которые часто меняются.Больше подробностей о механизме SugarCoat есть в нашей статье. Мы начнём раздавать подменные скрипты, сгенерированные SugarCoat, в составе нашего браузера в четвёртом квартале 2021 года. Мы весьма рады сотрудничеству с популярными блокировщиками контента для улучшения защиты конфиденциальности пользователей. Исходный код SugarCoat, а также его фреймворк автоматизации находятся полностью в открытом доступе. Мы также будем создавать, обновлять и распространять конфиденциальные библиотеки, сгенерированные SugarCoat, для использования другими проектами и инструментами.