Google está actualmente en fase de prueba de una nueva función diseñada para prevenir que sitios web maliciosos aprovechen el navegador del usuario para atacar dispositivos y servicios en redes internas y privadas.
En términos sencillos, la intención de Google es evitar que sitios web maliciosos en Internet ataquen los dispositivos domésticos de los visitantes, como impresoras o routers, así como sus computadoras.
Tradicionalmente, se considera que estos dispositivos son seguros, ya que no están directamente conectados a Internet y están protegidos por un enrutador.
Google describe la idea en un documento de soporte como la necesidad de evitar que los sitios web maliciosos utilicen la posición de red del agente de usuario para atacar dispositivos y servicios que se asumía razonablemente como inaccesibles desde Internet.
Estos dispositivos y servicios suelen residir en la intranet local del usuario o en la máquina misma.
Bloquear solicitudes no seguras a redes internas
La función propuesta, denominada «Protecciones de Acceso a Redes Privadas«, estará en modo «solo advertencia» en Chrome 123.
Esta función realiza verificaciones antes de que un sitio web público (denominado «sitio A«) dirija a un navegador a visitar otro sitio (denominado «sitio B«) dentro de la red privada del usuario.
Estas verificaciones incluyen la confirmación de si la solicitud proviene de un contexto seguro y el envío de una solicitud preliminar para determinar si el sitio B (por ejemplo, un servidor HTTP en la dirección de bucle local o el panel web del enrutador) permite el acceso desde un sitio web público mediante solicitudes específicas conocidas como solicitudes CORS-preflight.
A diferencia de las protecciones existentes para subrecursos y workers, esta función se enfoca exclusivamente en las solicitudes de navegación, con su objetivo principal siendo resguardar las redes privadas de los usuarios contra posibles amenazas.
En un ejemplo proporcionado por Google, los desarrolladores ilustran un iframe HTML en un sitio web público que ejecuta un ataque CSRF para cambiar la configuración DNS del enrutador de un visitante en su red local.
Bajo esta nueva propuesta, cuando el navegador detecta un intento de conexión de un sitio web público a un dispositivo interno, primero enviará una solicitud preliminar al dispositivo.
Si no hay respuesta, la conexión será bloqueada.
Sin embargo, si el dispositivo interno responde, puede comunicar al navegador si se debe permitir la solicitud mediante un encabezado ‘Access-Control-Request-Private-Network‘.
Esto posibilita el bloqueo automático de solicitudes a dispositivos en una red interna a menos que el dispositivo permita explícitamente la conexión desde sitios web públicos.
Aunque en la etapa de advertencia, incluso si las verificaciones fallan, la función no bloqueará las solicitudes.
En cambio, los desarrolladores verán una advertencia en la consola de DevTools, brindándoles tiempo para ajustar antes de que se implemente una aplicación más estricta.
No obstante, Google advierte que, aunque se bloquee una solicitud, una recarga automática del navegador permitirá que la solicitud se realice, ya que se consideraría una conexión interna => interna.
«Las protecciones de Acceso a Redes Privadas no se aplicarán en este caso, ya que la función fue diseñada para proteger la red privada de los usuarios de páginas web más públicas«, advierte Google.
Para abordar esto, Google propone bloquear la recarga automática de una página si la función de Acceso a Redes Privadas la bloqueó previamente.
Cuando esto sucede, el navegador web mostrará un mensaje de error indicando que se puede permitir la solicitud volviendo a cargar manualmente la página, como se muestra a continuación.
Esta página mostrará un nuevo mensaje de error en Google Chrome, denominado «BLOCKED_BY_PRIVATE_NETWORK_ACCESS_CHECKS«.
Este mensaje te informará cuando una página no pueda cargarse debido a que no ha superado las verificaciones de seguridad de Acceso a Redes Privadas.
Los motivos de esta mejora
La motivación detrás de este desarrollo es prevenir que sitios web maliciosos en Internet aprovechen vulnerabilidades en dispositivos y servidores dentro de las redes internas de los usuarios, que tradicionalmente se consideraban seguras contra amenazas basadas en Internet.
Esto abarca la protección contra el acceso no autorizado a routers e interfaces de software en dispositivos locales de los usuarios, una inquietud que ha ido en aumento a medida que más aplicaciones implementan interfaces web asumiendo erróneamente protecciones inexistentes.
Según un documento de soporte, Google inició la exploración de esta idea en el 2021 con el objetivo de evitar que sitios web externos realicen solicitudes dañinas a recursos dentro de la red privada, como localhost o una dirección IP privada.
Aunque el objetivo inmediato es mitigar riesgos como los ataques «SOHO Pharming» y las vulnerabilidades de CSRF (Cross-Site Request Forgery), la especificación no tiene la intención de asegurar las conexiones HTTPS para servicios locales.
Este último sería un paso necesario para integrar recursos públicos y no públicos de manera segura, pero actualmente está fuera del alcance de la especificación.