Ruby vulnerabile, upgrade obbligatorio

Il celebre linguaggio di programmazione rivela vulnerabilità critiche che coinvolgono l'interprete e permettono attacchi DoS ed esecuzione di codice malevolo
Il celebre linguaggio di programmazione rivela vulnerabilità critiche che coinvolgono l'interprete e permettono attacchi DoS ed esecuzione di codice malevolo

Ruby, linguaggio di programmazione ad oggetti particolarmente utilizzato nella programmazione web, corre ai ripari. Vulnerabilità critiche sono state segnalate per le versioni 1.8.x e 1.9.x, come riportato in un advisory sul portale ufficiale del linguaggio.

I tipi di attacco con cui è possibile sfruttare le vulnerabilità vanno dalla negazione di servizio (DoS, Denial of Service) all’esecuzione remota di codice arbitrario . Nello specifico, le versioni coinvolte sono: 1.8.4 e precedenti; 1.8.5-p230 e precedenti; 1.8.6-p229 e precedenti; 1.8.7-p21 e precedenti ed 1.9.0-1 e precedenti. A seconda della versione installata è disponibile una patch per la risoluzione del problema ; in realtà si tratta di un semplice upgrade di versione. Gli upgrade risolvono anche la vulnerabilità presente in WEBrick , webserver di Ruby.

Come riportato dal blog di Matasano , queste vulnerabilità sono molto pericolose in quanto non prevenibili dal programmatore : “Diversamente dalle eccezioni non gestite, questi bug non sono colpa del programmatore disattento ma sono proprio colpa dell’interprete. Parte del contratto non scritto con l’interprete del tuo linguaggio è che debba prevenire ridicole conseguenze causate dal raise di eccezioni .”

Le vulnerabilità sono state scoperte da Drew Yao del team di sicurezza di Apple. Tutte le vulnerabilità pubblicate possono essere utilizzate per la corruzione di memoria dell’interprete. Le classi affette sono Array, Stringhe e Bignum: tutte classi fondamentali in Ruby. Come sottolineato ancora da Matasano, le vulnerabilità sfruttano il fatto che i numeri si “sovrappongono” quando superano la dimensione massima allocabile dalla CPU (di solito 32 bit). La possibilità di sovrascrivere aree di memoria nell’interprete Ruby praticamente equivale alla possibilità di caricare linguaggio macchina nativo nell’interprete: ci sono centinaia di locazioni della memoria che, se sovrascritte, ridirezionano il codice in librerie non protette o direttamente in buffer di input, come i contenitori di richieste web.

Sul portale ruby-forum.com si sta discutendo delle vulnerabilità e dell’impatto degli upgrade. L’allerta al momento è molto alta soprattutto per i web developer. A tutti gli sviluppatori Ruby è d’obbligo l’upgrade e caldamente consigliato di tenere d’occhio la situazione.

Enrico “Fr4nk” Giancipoli

Link copiato negli appunti

Ti potrebbe interessare

25 06 2008
Link copiato negli appunti