
Proof-of-concept per un buffer overflow critico nella gestione DNS di Kemp LoadMaster, che causa denial-of-service remoto tramite richieste DNS appositamente create.
I dispositivi Kemp LoadMaster (firmware < 7.2.60) soffrono di una critica vulnerabilità di buffer overflow nei metodi isreverse() e locate_fqdn() della libreria libkemplink.so. La vulnerabilità deriva da un buffer sottodimensionato di 256 byte allocato per i nomi DNS, che può essere sfruttato inviando una richiesta DNS appositamente predisposta contenente caratteri speciali o Unicode.
Lo sfruttamento riuscito porta a un crash immediato e a una condizione di denial-of-service (DoS). La presenza di un token canary di stack impedisce ulteriori sfruttamenti, ma la possibilità di esecuzione remota di codice (RCE) non può essere esclusa se un attaccante trova un'altra vulnerabilità per divulgare il token canary di stack.
La vulnerabilità viene facilmente innescata inviando una richiesta DNS su TCP o UDP ai servizi DNS esposti del dispositivo LoadMaster. Una semplice proof-of-concept è:
dig @kempdeviceip 😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀.com (Su alcune distribuzioni Linux dovrai aggiungere +noidnout +noidnin)
Lo sfruttamento sfrutta un passaggio specifico nel processo di risoluzione dei nomi DNS. Sebbene il buffer allocato di 256 byte sia la dimensione massima standard per i nomi DNS trasmessi in rete, e la proof-of-concept rientri in questo limite, i caratteri speciali e Unicode si espandono quando vengono escaped durante l'elaborazione. Pertanto, la dimensione del buffer dopo l'escaping supera l'allocazione originale. La documentazione e il codice sorgente della libreria Bind9 (dalla quale è stato forkato il componente DNS) indicano che per un funzionamento sicuro è necessario un buffer di almeno 1004 byte, raccomandando una dimensione conservativa di 1023 byte. Per ulteriori dettagli, vedere .
Cronologia: