No estoy seguro de qué acceso a la API de socket proporciona un objeto Flash, pero existen muy buenas razones para no permitir sockets TCP o UDP (mucho menos cualquier otro tipo de JavaScript).
El más grande, probablemente, es que básicamente estás proporcionando una manera de evitar los cortafuegos si lo haces. Todos los servicios en su máquina que escuchan en sockets de red de bucle invertido, normalmente inaccesibles por atacantes externos, ahora pueden ser atacados desde el navegador. Ahora se puede acceder o atacar a cada máquina en su red, normalmente aislada de Internet por su puerta de enlace y firewall, mediante un código de Internet.
También hay otras razones. El escaneo de puertos y los ataques DDOS se vuelven mucho más fáciles cuando los navegadores pueden hacerlo sin un complemento ( sí, los navegadores pueden intentar iniciar DDOS en servidores HTTP (S), pero podrían ser mucho más eficientes con sockets de nivel inferior) ). Los gusanos de red (especialmente aquellos a los que solo una pequeña parte de las máquinas son vulnerables) pueden propagarse mucho más rápido cuando todos los que ven un anuncio en un sitio web popular comienzan a enviar ataques, en lugar de solo aquellos que realmente se infectan.
Los websockets existen para proporcionar una forma de comunicación de socket con cosas que explícitamente desean comunicarse con un navegador que ejecuta código no confiable. El servidor de Internet típico está endurecido de manera similar, esperando clientes maliciosos de todas las franjas. El problema proviene de los servicios que no esperan tráfico malicioso, ya que solo los clientes de confianza pueden acceder a ellos. Los zócalos controlados por JS lo romperían totalmente.