Come probabilmente già sapete, questo martedì è stata identificata una vulnerabilità potenzialmente catastrofica sulla funzione glibc chiamata getaddrinfo (), che esegue ricerche sul nome di dominio, contiene un bug di overflow del buffer (vedere il link here ).
Le conseguenze di questo sembrano essere quiete orribili e ci vorrà del tempo per avere anche una panoramica sulle dimensioni dell'elenco di hardware e software vulnerabili che utilizza questa libreria.
Mentre l'estensione del danno e le correzioni da seguire probabilmente si presenteranno prima o poi, ci sono alcune attenuazioni che potrebbero impedire l'attacco consigliato dai ricercatori di Google:
Google has found some mitigations that may help prevent exploitation if you are not able to immediately patch your instance of glibc. The vulnerability relies on an oversized (2048+ bytes) UDP or TCP response, which is followed by another response that will overwrite the stack. Our suggested mitigation is to limit the response (i.e., via DNSMasq or similar programs) sizes accepted by the DNS resolver locally as well as to ensure that DNS queries are sent only to DNS servers which limit the response size for UDP responses with the truncation bit set.*
I manutentori di Glibc forniscono le seguenti soluzioni:
Mitigating factors for UDP include:
Un firewall che elimina pacchetti DNS UDP > 512 byte.
Un risolutore locale (che elimina le risposte non conformi).
Evita le query dual A e AAAA (evita l'errore di gestione del buffer) ad es. Non utilizzare AF_UNSPEC.
Nessun utilizzo di
options edns0
in /etc/resolv.conf poiché EDNS0 consente risposte superiori a 512 byte e può portare a risposte DNS valide overflow.Nessun utilizzo di
RES_USE_EDNS0
oRES_USE_DNSSEC
poiché possono entrambi portare a risposte DNS EDNS0 valide di grandi dimensioni che possono eccedere.I fattori attenuanti per TCP includono:
- Limita tutte le risposte a 1024 byte.
Al momento sto cercando di trovare un modo per limitare la dimensione delle risposte tramite iptables e l'uso del modulo limite. Ma finora ho trovato solo modi per utilizzare i limiti di velocità che non sono applicabili qui. Qualche idea su come questo potrebbe essere tradotto in una regola (o) di iptables?
Attualmente sto anche esaminando come avere un risolutore DNS per eliminare le risposte non conformi, quindi ogni pensiero / idea è il benvenuto.