Recientemente, se corrigió y reveló una vulnerabilidad en la aplicación de mensajería de Facebook que permitía a los ataques acceder a los mensajes privados de los usuarios a través de AJAX de origen cruzado.
Un error simple permite a los hackers leer todos tus chats privados de Facebook Messenger
La raíz de este problema fue una implementación de encabezado de origen cruzado mal configurada en el dominio del servidor de chat de Facebook, lo que permitió a un atacante omitir las comprobaciones de origen y acceder a los mensajes de Facebook desde un sitio web externo.
Elnombrede"Originull" y la captura de pantalla parecen indicar que el problema es el siguiente encabezado:
Access-Control-Allow-Origin: null
Pero esto me deja preguntándome cómo exactamente un valor de null
conduce a una vulnerabilidad. Esto no parece un origen válido, a menos que visitaras de alguna manera un sitio web desde el dominio de null
(en realidad, tendría que ser http://null
o https://null
, ya que el protocolo debería incluirse) .
Lo verifiqué, y null
no es realmente un valor permitido de la misma manera que *
es, en Chrome o Firefox.
XMLHttpRequest no puede cargar enlace . El encabezado 'Access-Control-Allow-Origin' contiene el valor no válido 'null'. Por tanto, no se permite el acceso al origen ' enlace '.
(Sin embargo, el uso de un valor de *
funciona, por lo que claramente solo ser null
no es suficiente para que las páginas arbitrarias accedan a estos recursos).
¿Hay alguna característica o error en los navegadores que lee null
como *
? ¿O alguna característica en los navegadores, como las páginas abiertas por un URI de datos, que permiten la coincidencia con null
? ¿Cómo funciona esta vulnerabilidad?