Требуются отзывы: CORS для частных сетей (RFC1918).

Снизьте риски, связанные с непреднамеренным доступом к сети Интернет устройств и серверов во внутренней сети клиента.

Malicious websites making requests to devices and servers hosted on a private network have long been a threat. Attackers may, for example, change a wireless router's configuration to enable Man-in-the-Middle attacks. CORS-RFC1918 is a proposal to block such requests by default on the browser and require internal devices to opt-in to requests from the public internet.

Чтобы понять, как это изменение повлияет на веб-экосистему, команда Chrome запрашивает отзывы у разработчиков, создающих серверы для частных сетей.

Что не так с существующим положением дел?

Многие веб-серверы работают в частной сети — беспроводные маршрутизаторы, принтеры, внутренние веб-сайты, корпоративные сервисы и устройства Интернета вещей (IoT) — это лишь часть из них. Может показаться, что они находятся в более безопасной среде, чем общедоступные, но эти серверы могут быть использованы злоумышленниками в качестве прокси-сервера для атак. Например, вредоносные веб-сайты могут внедрять URL-адрес, который при простом просмотре жертвой (в браузере с поддержкой JavaScript) пытается изменить настройки DNS-сервера на домашнем широкополосном маршрутизаторе жертвы. Этот тип атаки называется « Drive-By Pharming » (фарминг через интернет) и произошел в 2014 году . Более 300 000 уязвимых беспроводных маршрутизаторов были взломаны путем изменения их настроек DNS, что позволило злоумышленникам перенаправлять пользователей на вредоносные серверы.

CORS-RFC1918

Для снижения угрозы подобных атак веб-сообщество внедряет CORS-RFC1918протокол совместного использования ресурсов между источниками (CORS), специализированный для частных сетей, определенный в RFC1918 .

Browsers that implement CORS check with target resources whether they are okay being loaded from a different origin. This is accomplished either with extra headers inline describing the access or by using a mechanism called preflight requests, depending on the complexity. Read Cross Origin Resource Sharing to learn more.

With CORS-RFC1918 the browser will block loading resources over the private network by default except ones that are explicitly allowed by the server using CORS and through HTTPS. The website making requests to those resources will need to send CORS headers and the server will need to explicitly state that it accepts the cross-origin request by responding with corresponding CORS headers. (The exact CORS headers are still under development.)

Разработчикам таких устройств или серверов будет предложено выполнить две задачи:

  • Убедитесь, что веб-сайт, отправляющий запросы в частную сеть, работает по протоколу HTTPS.
  • Настройте сервер для поддержки CORS-RFC1918 и отправляйте ожидаемые HTTP-заголовки.

Какие виды запросов затронуты?

К числу затронутых запросов относятся:

  • Запросы из общедоступной сети в частную сеть
  • Запросы из частной сети в локальную сеть
  • Запросы из общедоступной сети в локальную сеть

Частная сеть. Адрес назначения, который разрешается в частное адресное пространство, определенное в разделе 3 RFC1918 в IPv4, IPv4-отображенный IPv6-адрес, где сам отображенный IPv4-адрес является частным, или IPv6-адрес за пределами подсетей ::1/128 , 2000::/3 и ff00::/8 .

Локальная сеть. Адрес назначения, который разрешается в пространство «петли обратной связи» ( 127.0.0.0/8 ), определенное в разделе 3.2.1.3 RFC1122 IPv4, пространство «локальной сети» ( 169.254.0.0/16 ), определенное в RFC3927 IPv4, префикс «уникального локального адреса» ( fc00::/7 ), определенный в разделе 3 RFC4193 IPv6, или префикс «локальной сети» ( fe80::/10 ), определенный в разделе 2.5.6 RFC4291 IPv6.

Общедоступная сеть. Все остальные.

Взаимосвязь между публичными, частными и локальными сетями в CORS-RFC1918
Взаимосвязь между публичными, частными и локальными сетями в CORS-RFC1918.

Планы Chrome по включению CORS-RFC1918

Chrome внедряет CORS-RFC1918 в два этапа:

Шаг 1: Запросы к ресурсам частной сети будут разрешены только со страниц веб-сайтов, использующих протокол HTTPS.

В Chrome 87 добавлен флаг, который обязывает общедоступные веб-сайты, отправляющие запросы к ресурсам частной сети, использовать протокол HTTPS. Вы можете включить его, перейдя по about://flags#block-insecure-private-network-requests . При включенном флаге любые запросы к ресурсам частной сети с веб-сайтов, использующих протокол HTTP, будут блокироваться.

Начиная с Chrome 88, ошибки CORS-RFC1918 будут отображаться в консоли как ошибки политики CORS.

Ошибки CORS-RFC1918 будут отображаться в консоли как ошибки политики CORS.
Ошибки CORS-RFC1918 будут отображаться в консоли как ошибки политики CORS.

В панели «Сеть» в инструментах разработчика Chrome можно включить флажок «Заблокированные запросы» , чтобы сосредоточиться на заблокированных запросах:

Ошибки CORS-RFC1918 также будут отображаться как ошибки CORS на панели «Сеть».
Ошибки CORS-RFC1918 также будут отображаться как ошибки CORS на панели «Сеть» .

В Chrome 87 ошибки CORS-RFC1918 отображаются в консоли инструментов разработчика только как ERR_INSECURE_PRIVATE_NETWORK_REQUEST .

Вы можете проверить это сами, используя этот тестовый сайт .

Шаг 2: Отправка предварительных запросов со специальным заголовком.

В будущем, всякий раз, когда общедоступный веб-сайт пытается получить ресурсы из частной или локальной сети, Chrome будет отправлять предварительный запрос перед фактическим запросом.

The request will include an Access-Control-Request-Private-Network: true header in addition to other CORS request headers. Among other things, these headers identify the origin making the request, allowing for fine-grained access control. The server can respond with an Access-Control-Allow-Private-Network: true header to explicitly indicate that it grants access to the resource.

Требуется обратная связь.

Если ваш веб-сайт размещен в частной сети и ожидает запросов из общедоступных сетей, команда Chrome заинтересована в ваших отзывах и примерах использования. Вы можете помочь двумя способами:

  • Перейдите по about://flags#block-insecure-private-network-requests , включите флаг и проверьте, отправляет ли ваш веб-сайт запросы к ресурсу частной сети, как и ожидалось.
  • Если у вас возникнут какие-либо проблемы или вы захотите оставить отзыв, создайте заявку на crbug.com и установите компонент в значение Blink>SecurityFeature>CORS>RFC1918 .

Пример обратной связи

Наш беспроводной маршрутизатор предоставляет доступ к административному сайту в той же частной сети, но по протоколу HTTP. Если для сайтов, в которые встроен административный сайт, требуется HTTPS, это будет смешанный контент. Следует ли включать HTTPS на административном сайте в закрытой сети?

Это именно тот тип обратной связи, который нужен Chrome. Пожалуйста, создайте заявку с подробным описанием вашего конкретного случая на сайте crbug.com . Chrome будет рад услышать ваше мнение.