Разработчики Google добавили в Chrome новую функцию Private Network Access, которая будет обнаруживать сайты, сканирующие локальные сети пользователей. Новая функция будет включена в Chrome 123, выпуск которого запланирован на март 2024 года.
Таким образом в Google хотят предотвратить атаки на устройства пользователей (например, принтеры или маршрутизаторы). Разработчики объясняют, что обычно люди считают устройства в локальной сети защищенными, так как они не подключены к интернету напрямую и находятся за маршрутизатором.
Идея заключается в том, чтобы не дать вредоносным сайтам атаковать уязвимые девайсы и серверы во внутренних сетях пользователей. В том числе защитить от несанкционированного доступа маршрутизаторы и интерфейсы локальных устройств, ведь все больше приложений используют практически незащищенные веб-интерфейсы. Судя по всему, инженеры Google начали работать над этой идеей еще в 2021 году, стремясь предотвратить вредоносные запросы внешних сайтов к ресурсам в частных сетях (localhost и приватным IP-адресам).
Ожидается, что пока функция Private Network Access будет работать в режиме «warning-only», то есть будет проводить проверки и отмечать, что публичный сайт («сайт A») направляет браузер на посещение другого сайта («сайт B») в частной сети пользователя. Упомянутые проверки в основном будут связаны с запросами CORS-preflight.
В примере, приведенном Google, разработчики демонстрируют HTML iframe, который выполняет CSRF-атаку, изменяющую конфигурацию DNS маршрутизатора в локальной сети:
<iframe href="https://admin:admin@router.local/set_dns?server1=123.123.123.123">
</iframe>
Если браузер обнаружит, что публичный сайт пытается подключиться к внутреннему устройству, Chrome сначала отправит устройству предварительный запрос. Если ответа не последует, соединение будет заблокировано. Однако если устройство в локальной сети ответит, оно может сообщить браузеру, что запрос следует разрешить, используя для этого хедер Access-Control-Request-Private-Network. Ожидается, что это позволит автоматически блокировать запросы к устройствам во внутренней сети, если устройство не разрешает соединение с публичными сайтами.
Поскольку пока функция будет работать в режиме warning-only, даже если проверки не пройдены, запросы не будут блокироваться. Вместо этого разработчики лишь получат предупреждение в консоли DevTools.
При этом в Google предупреждают, что даже если запрос блокирован, автоматическая перезагрузка все равно позволит ему сработать. Чтобы предотвратить это, Google предлагает блокировать автоперезагрузку страниц, если ранее их блокировала функция Private Network Access. В таком случае браузер отобразит сообщение об ошибке, в котором будет сказано, что разрешить запрос можно, перезагрузив страницу вручную.