¿Cuáles son algunas lagunas de seguridad si los navegadores pueden abrir puertos TCP directamente con javascript?

Los puertos TCP se pueden abrir con javascript, aunque solo como una solicitud HTTP, pero con tanta funcionalidad moviéndose a la Web, en parte para evadir los firewalls y en parte para aprovechar la experiencia y el software existentes, eso no es una gran restricción. En los navegadores actuales, algunos puertos restringidos como 22 (SSH), 25 (SMTP) están bloqueados, pero un navegador puede realizar una solicitud HTTP en la mayoría de los puertos: 3, 80, 8080, 9000, etc.

Se supone que la política del mismo origen evita que un script extraiga datos de una intranet. Sin eso, un script en un sitio web malicioso podría solicitar datos de una página interna de la compañía y luego enviarlo fuera del sitio al sitio web. En ese caso, la capacidad adicional de abrir sockets sin procesar permitiría que un script malicioso también explore servicios que no son HTTP, como correo electrónico o DNS o sistemas de archivos de red.

En este caso, violan su red interna con nada más que su visita a una página web. Ahora pueden buscar computadoras, compartir archivos, conectarse, recopilar datos y luego enviarlos a través de Internet. También pueden descargar cargas maliciosas, dependiendo de otras configuraciones.