Recentemente, una vulnerabilità nell'app di messaggistica di Facebook che consentiva agli attacchi di accedere a messaggi privati degli utenti tramite AJAX di origine incrociata è stata corretta e divulgata.
Simple Bug allows Hackers to Read all your Private Facebook Messenger Chats
The root of this issue was misconfigured cross-origin header implementation on Facebook's chat server domain, which allowed an attacker to bypass origin checks and access Facebook messages from an external website.
Il nome di "Originull" e lo screenshot sembrano indicare che il problema è la seguente intestazione:
Access-Control-Allow-Origin: null
Ma questo mi fa pensare, in che modo esattamente un valore di null
porta a una vulnerabilità. Non sembra un'origine valida, a meno che tu non visiti in qualche modo un sito web dal dominio di null
(in realtà, dovrebbe essere http://null
o https://null
, poiché il protocollo dovrebbe essere incluso) .
Ho controllato e null
non è in realtà un valore consentito nello stesso modo in cui *
è, in Chrome o Firefox.
XMLHttpRequest cannot load http://other.localhost/ajax.php. The 'Access-Control-Allow-Origin' header contains the invalid value 'null'. Origin 'http://localhost' is therefore not allowed access.
(L'uso di un valore di *
funziona comunque, quindi chiaramente il fatto che solo null
non è sufficiente per consentire alle pagine arbitrarie di accedere a tali risorse.)
C'è qualche caratteristica o bug nei browser che leggono null
come *
? O alcune funzionalità nei browser, come le pagine aperte da un URI di dati, che consentono la corrispondenza con null
? Come funziona questa vulnerabilità?