An attacker initiates cross domain HTTP / GET requests and times the server responses. The timing of these responses may leak important information on what is happening on the server. Browser's same origin policy prevents the attacker from directly reading the server responses (in the absence of any other weaknesses), but does not prevent the attacker from timing the responses to requests that the attacker issued cross domain.
Description
Attack Execution Flow
Step 1
Explore[Determine service to send cross domain requests to] The adversary first determines which service they will be sending the requests to
[Determina il servizio a cui inviare le richieste cross domain] L'avversario determina innanzitutto a quale servizio invierà le richieste
Step 2
Experiment[Send and time various cross domain requests] Adversaries will send a variety of cross domain requests to the target, timing the time it takes for the target to respond. Although they won't be able to read the response, the adversary can use the time to infer information about what the service did upon receiving the request.
Using a GET request, leverage the 'img' tag in conjunction with 'onload() / onerror()' javascript events to time a response
Using a POST request, leverage the 'iframe' element and use the 'onload()' event to time a response
[Invio e temporizzazione di varie richieste cross domain] Gli adversary invieranno una serie di richieste cross domain al bersaglio, misurando il tempo impiegato dal bersaglio per rispondere. Sebbene non siano in grado di leggere la risposta, l'adversary può utilizzare il tempo per dedurre informazioni su cosa abbia fatto il servizio al ricevimento della richiesta.
Utilizzando una richiesta GET, sfrutta il tag "img" in combinazione con gli eventi javascript "onload()" / "onerror()" per temporizzare una risposta
Utilizzando una richiesta POST, sfrutta l'elemento "iframe" e utilizza l'evento "onload()" per temporizzare una risposta
Attack Techniques
-
Using a POST request, leverage the "iframe" element and use the "onload()" event to time a response
-
Using a GET request, leverage the "img" tag in conjunction with "onload() / onerror()" javascript events to time a responseIT: Utilizzando una richiesta POST, sfrutta l'elemento "iframe" e utilizza l'evento "onload()" per misurare il tempo di risposta
Step 3
Exploit[Infer information from the response time] After obtaining reponse times to various requests, the adversary will compare these times and infer potentially sensitive information. An example of this could be asking a service to retrieve information and random usernames. If one request took longer to process, it is likely that a user with that username exists, which could be useful knowledge to an adversary.
Compare timing of different requests to infer potentially sensitive information about a target service
[Inferisci informazioni dal tempo di risposta] Dopo aver ottenuto i tempi di risposta a varie richieste, l'attaccante confronterà questi tempi e dedurrà potenzialmente informazioni sensibili. Un esempio potrebbe essere chiedere a un servizio di recuperare informazioni e nomi utente casuali. Se una richiesta richiede più tempo per essere elaborata, è probabile che un utente con quel nome utente esista, il che potrebbe rappresentare una conoscenza utile per un attaccante.
Confronta i tempi di risposta di richieste diverse per dedurre potenzialmente informazioni sensibili su un servizio target
Attack Techniques
-
Compare timing of different requests to infer potentially sensitive information about a target service