Un pacchetto broadcast è, a livello ethernet, un pacchetto con un bit specifico impostato nell'indirizzo che dice: "se vedi questo frame, dai un'occhiata". Normalmente, un'interfaccia di rete trascurerà i frame a meno che l'indirizzo di destinazione non sia il proprio indirizzo MAC (un'interfaccia può essere messa in "modalità promiscua" per raccogliere tutti i frame); ma il bit "broadcast" rende il frame "interessante" per tutte le interfacce di rete.
Quando il frame non viene filtrato dall'interfaccia di rete, il contenuto del frame viene elaborato dal sistema host indipendentemente dalla sorgente Ethernet e dagli indirizzi di destinazione : il frame è stato ricevuto, e questo è sufficiente. Se il frame contiene una risposta ARP, le informazioni contenute in questa risposta ("l'host con questo indirizzo IP utilizza tale indirizzo ethernet") sono debitamente elaborate. Dipende un po 'dal sistema operativo, tuttavia: Linux è noto per ignorare le risposte ARP che non corrispondono a una richiesta ARP che ha inviato non molto tempo prima.
Non c'è autenticazione di sorta nel protocollo ARP; è costruito sulla fiducia. Quindi, è vulnerabile agli attacchi attivi come il tuo.
L'impostazione di una voce della tabella ARP statica offre protezione, ma rimuove un po 'di flessibilità (se l'hardware del gateway viene sostituito, l'indirizzo ethernet cambia e, poiché la voce statica ha la precedenza, la macchina rifiuterà di parlare al sostituzione) e non è nemmeno una protezione completa: i tuoi pacchetti potrebbero ancora essere osservati dall'attaccante, e può ancora falsificare i pacchetti falsi, il che può essere abbastanza per fare molto danno.
Come amministratore di rete, il meglio che puoi fare è una combinazione di percorsi statici (noioso, non scalabile) e guardare / logging / reporting (mantenere una tabella di coppie IP / ethernet, segnalare ogni risposta ARP che prova a cambia questo). Vedi questa pagina per un elenco di possibili difese.