PDA

Просмотр полной версии : Усиление изоляции между сайтами в Chrome


Suicide
18.10.2019, 21:55
Компания Google объявила (https://blog.chromium.org/2019/10/recent-site-isolation-improvements.html) об усилении в Chrome режима межсайтовой изоляции (https://www.chromium.org/Home/chromium-security/site-isolation), обеспечивающего обработку страниц с разных сайтов в отдельных изолированных процессах. Режим изоляции на уровне сайтов позволяет обезопасить пользователя от атак, которые могут быть совершены через используемые на сайте сторонние блоки, такие как iframe-вставки, или для блокирования утечки данных через встраивание легитимных блоков (например, с запросами к банковским сервисам, на которых может быть аутентифицирован пользователь) на вредоносных сайтах.

При разделении обработчиков в привязке к домену, в каждом процессе находятся данные только одного сайта, что затрудняет совершение атак, направленных на межсайтовый захват данных. В настольных версиях Chrome разделение (https://www.opennet.ru/opennews/art.shtml?num=48956#isolation) обработчиков в привязке к домену, а не вкладке, реализовано начиная с Chrome 67 (https://www.opennet.ru/opennews/art.shtml?num=48682). В Chrome 77 (https://www.opennet.ru/opennews/art.shtml?num=51468) подобный режим был активирован и для платформы Android.

https://www.opennet.ru/opennews/pics_base/0_1531383613.png (https://4.bp.blogspot.com/-IGhYKMvLVKQ/W0Yon_eYgdI/AAAAAAAAAno/cI9D5591oLUJD-8SQBpVW5dyPPBmU1eiACLcBGAs/s1600/Security%2BBlog%2BPost_%2BMitigating%2BSpectre%2Bw ith%2BSite%2BIsolation%2Bin%2BChrome%2B%2528croppe d%2529.png)

Для снижения накладных расходов режим изоляции сайтов в Android включается только если на странице зафиксирован вход при помощи пароля. Chrome запоминает факт использования пароля и включает защиту и для всех дальнейших обращений к сайту. Защита также применяется сразу для избранного списка предопределённых сайтов, популярных среди пользователей мобильных устройств. Выборочный метод активации и добавленные оптимизации позволили удержать рост потребления памяти из-за увеличения числа работающих процессов в среднем на уровне 3-5%, вместо 10-13%, наблюдаемых при активации изоляции для всех сайтов.

Новый режим изоляции активирован для 99% пользователей Chrome 77 на Android-устройствах, снабжённых как минимум 2 Гб ОЗУ (для 1% пользователей режим остался отключённым для мониторинга за производительностью). Включить или отключить режим изоляции сайтов вручную можно через настройку "chrome://flags/#enable-site-per-process".

В настольной редакции Chrome вышеотмеченный режим изоляции сайтов теперь усилен для противостояния атакам, нацеленным на полную компрометацию процесса с обработчиком контента. Улучшенный режим изоляции позволит защитить данные сайтов от двух дополнительных видов угроз: утечек данных в результате атак по сторонним каналам, таких как Spectre, и утечек после полной компрометации процесса-обработчика при успешной эксплуатации уязвимостей, позволяющих получить контроль над процессом, но не достаточных для обхода sandbox-изоляции. В Chrome для Android подобная защита будет добавлена позднее.

Суть метода в том, что управляющий процесс запоминает к какому сайту рабочий процесс имеет доступ и запрещает обращение к другим сайтам, даже если атакующий получит контроль над процессом и попытается получить доступ к ресурсам другого сайта. Ограничения охватывают ресурсы, связанные с аутентификацией (сохранённые пароли и Cookie), загружаемыми напрямую по сети данными (фильтруются и привязываются в текущему сайту HTML, XML, JSON, PDF и прочие типы файлов), данными во внутренних хранилищах (localStorage), полномочиями (выданные сайту разрешения доступа к микрофону и т.п.) и сообщениями, передаваемыми через API postMessage и BroadcastChannel. Все подобные ресурсы связываются меткой с исходным сайтом и проверяются на стороне управляющего процесса на предмет возможности передачи по запросу из рабочего процесса.

Из связанных с Chrome событий также можно отметить начало (https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/zlLSxQ9BA8Y/uw9HcwIVDQAJ) утверждения включения в Chrome поддержки функции Scroll-To-Text (https://www.opennet.ru/opennews/art.shtml?num=50156), дающей возможность формировать ссылки на отдельные слова или фразы, без явного указания в документе меток при помощи тега "a name" или свойства "id". Синтаксис подобных ссылок планируется утвердить в качестве web-стандарта, который пока находится на стадии черновика (https://wicg.github.io/ScrollToTextFragment/). Маска для перехода (по сути выполняется поиск с прокруткой) отделяется от обычного якоря признаком ":~:". Например, при открытии ссылки "https://opennet.ru/51702/#:~:text=Chromе" страница сдвинется на позицию с первым упоминанием слова "Chromе" и данное слово будет подсвечено. Возможность добавлена в ветку Canary (https://www.google.com/chrome/canary/), но для включения требует запуска с флагом "--enable-blink-features=TextFragmentIdentifiers".

Другим интересным предстоящим изменением в Chrome является (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/sotCDcI-E7Y) возможность заморозки неактивных вкладок, позволяющая автоматически выгрузить из памяти вкладки, которые находятся в фоновом состоянии более 5 минут и не выполняют имеющих значение действий. Решение о пригодности той или иной вкладки для заморозки принимаются на основе эвристики. Изменение добавлено в ветку Canary, на базе которой будет сформирован выпуск Chrome 79, и включается через флаг "chrome://flags/#proactive-tab-freeze".

18.10.2019

http://www.opennet.ru/opennews/art.shtml?num=51702​