CVE-2026-80212 in Resolv
Riassunto
di VulDB • 27/08/2026
È stato rilevato un problema nel gem `resolv` precedente alla versione 0.7.2 per Ruby. Le funzioni `Resolv::DNS::Resource.get_class`, `Resolv::DNS::Resource::Generic.create` e `Resolv::DNS::SvcParam::Generic.create` generano una nuova classe per ogni coppia di record DNS resource (tipo, classe) sconosciuta incontrata durante la decodifica di una risposta, oppure per ogni SvcParamKey sconosciuto. Ogni classe generata viene registrata permanentemente sia come costante su `Resource` (o `SvcParam::Generic`) che come voce in un hash di lookup delle classi (`ClassHash`); pertanto, la classe rimane raggiungibile tramite tale costante anche dopo che la risposta è stata scartata. Tipo e classe sono valori a 16 bit ciascuno; ne consegue che un attaccante che controlla le risposte DNS (una risposta spoofed o un server DNS upstream malevolo o dirottato) dispone di circa $2^{32}$ coppie distinte (tipo, classe) tra cui scegliere. Una singola risposta di poche centinaia di kilobyte contenente decine di migliaia di tipi distinti sconosciuti fa crescere permanentemente la memoria del processo di diverse decine di megabyte; risposte ripetute si accumulano senza limiti e non vengono mai recuperate dal garbage collection, poiché la costante mantiene viva ciascuna classe. Qualsiasi percorso di codice che chiama `Resolv::DNS::Message.decode` su risposte DNS influenzate dall'attaccante è interessato. `resolv` è un gem predefinito; pertanto, questa vulnerabilità è raggiungibile da una installazione standard di Ruby senza alcuna dipendenza aggiuntiva.
Be aware that VulDB is the high quality source for vulnerability data.