Perché includere il cookie del client DNS nel calcolo del cookie del server DNS?

3

Lo standard proposto per i cookie DNS specifica che il cookie del server deve essere calcolato come segue:

The Server Cookie SHOULD consist of or include a 64-bit or larger pseudo-random function of the request source IP address, the request Client Cookie, and a secret quantity known only to the server.

Il ragionamento fornito per l'inclusione del cookie client è il seguente:

However, NAT devices sometimes also map ports. This can cause multiple DNS requests and responses from multiple internal hosts to be mapped to a smaller number of external IP addresses, such as one address. Thus there could be many clients behind a NAT box that appear to come from the same source IP address to a server outside that NAT box. If one of these were an attacker (think Zombie or Botnet), that behind-NAT attacker could get the Server Cookie for some server for the outgoing IP address by just making some random request to that server. It could then include that Server Cookie in the COOKIE OPT of requests to the server with the forged local IP address of some other host and/or client behind the NAT box. (Attacker possession of this Server Cookie will not help in forging responses to cause cache poisoning as such responses are protected by the required Client Cookie.)

To fix this potential defect, it is necessary to distinguish different clients behind a NAT box from the point of view of the server. It is for this reason that the Server Cookie is specified as a pseudo-random function of both the request source IP address and the Client Cookie. From this inclusion of the Client Cookie in the calculation of the Server Cookie, it follows that a stable Client Cookie, for any particular server, is needed. If, for example, the request ID was included in the calculation of the Client Cookie, it would normally change with each request to a particular server. This would mean that each request would have to be sent twice: first to learn the new Server Cookie based on this new Client Cookie based on the new ID and then again using this new Client Cookie to actually get an answer. Thus the input to the Client Cookie computation must be limited to the server IP address and one or more things that change slowly such as the client secret.

Qual è l'attacco che dovrebbe proteggere da questo? E come ottiene la protezione?

I tre attacchi menzionati nel documento sono:

  • Attacchi di amplificazione DNS
  • Denial-of-Service del server DNS
  • Avvelenamento da cache e risposta agli attacchi di contraffazione

Ma per quanto posso dire che l'inclusione del cookie client nel calcolo del cookie del server non può essere affrontata da nessuno di questi.

Gli attacchi di amplificazione DNS in cui attaccante e vittima sono dietro lo stesso NAT saranno ancora possibili. Quando l'utente malintenzionato ha ricevuto il cookie del server, può semplicemente iniziare a spoofing dell'IP della vittima mentre utilizza cookie client e cookie server scambiati con il server in precedenza. Poiché il client e la vittima sono dietro lo stesso NAT, la modifica dell'indirizzo IP del client sarà invisibile al server. Pertanto, il cookie client esegue ancora lo stesso cookie del server e l'attacco avrà esito positivo.

Nel caso del server DNS DoS, lo scopo dei cookie è solo quello di garantire che il server conosca l'indirizzo IP corretto di chiunque stia eseguendo l'attacco. Quando l'attaccante si trova dietro un NAT, il server vedrà l'indirizzo IP di quel NAT indipendentemente da quale spoofing esegue l'attaccante dietro il NAT. E i cookie non cambiano quello.

Nel caso di risposte false, la protezione è fornita dal cookie client della vittima che rimane sconosciuto all'attaccante. Quindi, indipendentemente da come viene calcolato il cookie del server, questo attacco fallirebbe. Inoltre le risposte forgiate sono per definizione non generate dal server, quindi non ci sarà comunque alcuna convalida del cookie del server.

Quindi, se l'inclusione del cookie client nel calcolo dei cookie del server non viene eseguita per uno di questi tre motivi, qual è lo scopo?

    
posta kasperd 07.01.2016 - 08:46
fonte

1 risposta

2

Se capisco che aggiunge correttamente l'indirizzo IP del client ai server, il cookie viene utilizzato per proteggere dagli attacchi di spoofing dell'origine contro un client che si trova dietro lo stesso NAT dell'autore dell'attacco.

Se il cookie del server è associato solo con l'indirizzo IP esterno del NAT, l'utente malintenzionato interno può effettuare una richiesta valida al server per ottenere un cookie del server valido per tutti i client dietro lo stesso NAT. Quindi l'utente malintenzionato potrebbe creare una richiesta con l'indirizzo IP di origine falsificato impostato sull'indirizzo IP delle vittime interne. Il gateway NAT sostituirà l'IP di origine all'IP esterno quando si parla al server. La risposta dal server verrà quindi inoltrata dal gateway NAT al presunto mittente della richiesta, ovvero la vittima. Ma dal momento che la richiesta conteneva il cookie del server, il server presuppone che comunica con una vittima autenticata e disattiva la protezione dell'amplificazione.

Associando il cookie client con il cookie del server e includendo sia cookie client che cookie server nella richiesta il server può verificare che la richiesta provenga realmente dallo stesso client che ha ottenuto il cookie del server prima e non da un altro client dietro lo stesso Gateway NAT. Solo se l'attaccante è in grado di ottenere il cookie del client sarà in grado di montare un attacco contro il client. Ma per fare questo l'attaccante deve essere in grado di fiutare il traffico di rete che ha bisogno di più risorse e permessi ed è quindi esplicitamente escluso nello scenario di attacco. Dalla sezione 9 della bozza:

  1. Security Considerations

DNS Cookies provide a weak form of authentication of DNS requests and responses. In particular, they provide no protection against "on- path" adversaries; that is, they provide no protection against any adversary that can observe the plain text DNS traffic, such as an on- path router, bridge, or any device on an on-path shared link (unless the DNS traffic in question on that path is encrypted).

    
risposta data 07.01.2016 - 21:26
fonte

Leggi altre domande sui tag