GNU C Libreria getaddrinfo () Flaw

0

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 o RES_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.

    
posta dude 17.02.2016 - 01:21
fonte

1 risposta

1

trying to find a way to limit the size of responses via iptables and the use of the limit module

Quello di cui hai probabilmente bisogno è il modulo iptables length che può abbinare pacchetti che hanno una lunghezza (o intervallo) specifica. Vedi link .

Si noti che questo aiuta solo con UDP dove il carico utile completo è contenuto in un singolo messaggio (dovresti rilasciare UDP frammentato pacchetti però ). Con TCP, la risposta può essere trasferita utilizzando più pacchetti e un singolo flusso TCP può anche contenere più richieste e risposte. Quindi limitare la lunghezza di un pacchetto non aiuterà molto.

I am also currently looking into how to have a dns resolver to drop non-compliant responses, so any thoughts/ideas are most welcome.

La cosa migliore sarebbe avere un gateway a livello di applicazione che disinfetti le risposte, cioè un server DNS locale a cui si accede dalla libreria resolver. Qualcosa come dnsmasq potrebbe aiutare, anche se non sono sicuro che dnsmasq riduca veramente le risposte abbastanza per questo caso specifico. Altre opzioni potrebbero essere impostate come non collegate o associate, sebbene il bind abbia una brutta storia relativa alla sicurezza stessa.

    
risposta data 17.02.2016 - 07:05
fonte

Leggi altre domande sui tag