Paolo Perego
Paolo Perego Specialista di sicurezza applicativa e certificato OSCE e OSCP, amo spaccare e ricostruire il codice in maniera sicura. Sono cintura nera di taekwon-do, marito e papà. Ranger Caotico Neutrale, scrivo su @codiceinsicuro.

Rubygems vulnerabile a DNS Hijack

Rubygems vulnerabile a DNS Hijack Photo by on Unsplash
353 parole - Lo leggerai in 1 minuti

Quattro giorni fa è passata nella mailing list ruby-security-ann la segnalazione di una vulnerabilità corretta in rubygems più di un mese fa.

Ultimamente sto trascurando dawnscanner in favore di altri progetti, tra cui WordStress. Per questo motivo sono stato meno attento a quello che succedeva nel mondo rubesco.

Il 15 Maggio scorso, veniva segnalato sul blog di rubygems.org, il rilascio di una nuova versione di rubygems per correggere una vulnerabilità che se sfruttata dava la possibilità ad un attaccante di fare un DNS hijack e potenzialmente distribuire versioni di gemme modificata rispetto alle originali.

Rubygems, infatti, è il sistema di distribuzione del software utilizzato dal mondo ruby. Il sistema è centralizzato e, attraverso il comando gem, permette di scaricare ed installare gemme, ovvero librerie di terze parti che possiamo utilizzare nelle nostre applicazioni ruby (o rails, o sinatra, o padrino, o rack, &mdots;).

Grazie ad un’impostazione DNS, il sito di rubygems.org permetteva la redirezione di client verso un host separato e dedicato alla distribuzione delle gemme e alle richieste fatte via API.

Il comando gem tuttavia, e da qui il problema, non verificava l’hostname restituito dalla chiamata DNS prima di redirigere le richieste del client.

Se un attaccante fosse stato in grado di forgiare una risposta alla richiesta DNS del client, realizzando un DNS hijack, avremmo che potenzialmente software modificato, sarebbe stato distribuito e considerato lecito.

La patch come potete vedere, rende più consistente la parte di validazione della risposta DNS prima darla in pasto al client.

Cosa devo fare

Fortunatamente possiamo risolvere il problema molto facilmente; aggiornando rubygems all’ultima versione disponibile.

Questo comando, aggiornerà gem all’ultima patch rilasciata per quella minor release, in modo da non rovinare nulla nel caso fossimo obbligati a stare su versioni vecchiotte di ruby o gem stesso.

$ gem update --system 

Attenzioni a versioni vecchie di ruby, dalla 1.9.0 alla 2.2.0. Queste infatti hanno una versione di rubygems incapsulata, vulnerabile e non aggiornabile. In questi casi sarebbe meglio passare ad una versione aggiornata dell’interprete stesso.

Vuoi aiutarmi a portare avanti il progetto Codice Insicuro con una donazione? Fantastico, allora non ti basta che premere il pulsante qui sotto.

Supporta il progetto

comments powered by Disqus
Codice Insicuro, blog di Cyber Security, sviluppo sicuro, code review e altro.   Non perdere neanche un post, iscriviti ora alla mailing list