Cerca nel blog

2006/01/07

Come funziona la patch WMF

Questo articolo vi arriva grazie alle gentili donazioni di "carcaroth", "motopoeta" e "pietropal****".

Securiteam pubblica una breve intervista tecnica a Ilfak Guilfanov, l'autore della patch non ufficiale che risolve la falla WMF. Ecco come Ilfak spiega la falla e la patch (la traduzione e la sintesi sono opera mia; se sapete l'inglese, vi consiglio di leggervi l'intero originale).

Un file WMF appositamente confezionato può prendere il controllo completo del vostro computer. In effetti un file WMF non è un file grafico normale, somiglia più a un programma che a un file di dati, perché è composto da una sequenza di comandi per Windows. La maggior parte dei comandi è del tipo "disegna una riga blu", "riempi di rosso un rettangolo", e così via. C'è un codice di comando molto potente nei file WMF, il cui significato è "se va storto qualcosa, fai quanto segue:". In questo modo, il creatore del file WMF può far fare al vostro computer quello che gli pare usando questo codice di comando e poi causando intenzionalmente una condizione d'errore.

A proposito della patch di Ilfak:

La patch non fa altro che rimuovere questo comando potente. Non fa nient'altro: modifica al volo l'immagine in memoria del sistema e non altera nessun file sul disco. Modifica l'immagine della DLL di sistema "gdi32.dll", perché è lì che si trova il codice vulnerabile.

Sempre Securiteam ha un'analisi tecnica di come funziona la patch Microsoft:

Fa esattamente quello che faceva la patch di Ilfak Guilfanov, con la differenza che lui l'ha creata in poche ore (più un po' di test). Microsoft ha disabilitato SETABORT: la stessa cosa che ha fatto Ilfak, riarrangiandola un po'. Confrontate pure.

L'articolo mostra bit per bit cosa viene cambiato dalla patch Microsoft e cosa viene cambiato dalla patch di Ilfak. Certo, Microsoft deve fare un controllo di qualità molto severo, per cui è comprensibile un certo ritardo. Però Securiteam nota che la nuova gdi32.dll, dopo l'installazione della patch, non è datata ieri (giorno di rilascio della patch), ma 28 dicembre 2005: il giorno dopo l'annuncio della falla. Mistero.

Promemoria per chi ha disabilitato shimgvw.dll: ricordatevi di riabilitarlo, altrimenti le anteprime in Esplora Risorse e il visualizzatore immagini e fax non funzioneranno, neppure se installate la patch Microsoft. Il comando apposito è già stato descritto in altri articoli, ma lo ripeto per scrupolo: al prompt dei comandi di Windows, digitate REGSVR32 SHIMGVW.DLL.

Per finire, una chicca: la falla WMF esiste tuttora ed è senza patch... per gli utenti Linux. Mi riferisco a quelli che usano Wine, Cedega e Crossover Office per far girare sotto Linux i programmi per Windows: secondo un commento su ZDNet, Wine ha implementato l'intera API per WMF senza rendersi conto che conteneva un problema di sicurezza. Wine, insomma, è così fedele nel replicare il funzionamento di Windows che ne replica persino le falle.

Ciao da Paolo.

10 commenti:

Ermanno ha detto...

dal sito ufficile di Wine :

http://www.winehq.com/

January 5, 2006: Wine 0.9.5 Released

Wine 0.9.5 is out.

The following changes were noted in the announcement:

* A number of MSI fixes.
* More improvements to the IDL compiler.

Binary packages are in the process of being built, but the source is available now.

Fabiuz ha detto...

In rete ho trovato un altra similitudine tra le 2 patch Ilfak e MS:
In ogni processo che carica user32.dll viene "iniettata" wmhotfix.dll, che modifica in memoria la funzione Escape() di gdi32.dll in modo che essa ignori tutte le chiamate che utilizzano il parametro SETABORTPROC (0x09). Questo dovrebbe impedire l'attacco ma consentire ai programmi Windows di mostrare normalmente i file WMF. La versione della patch che avevamo messo a disposizione era stata verificata con il codice sorgente messo a disposizione e testata con tutte le varianti note dell'attacco. Funzionava su Windows XP (anche con SP1 o SP2) e con Windows 2000. La documentazione fornita da Microsoft mostra che anche la patch ufficiale ha lo stesso effetto.
Trovate altre info in ITA qui: http://www.pescetti.it/andrea/wmf-faq-it.shtml
Ora la mia domanda per Paolo è: "chi usa un sys win98Se come me sul portatile, visto che ms nn rilascia fix per s.o. win9x/Me che si fa? si resta vulnerabili o si installa la patch di Future Time (nod32) che pare sia l'unica testata su winMe?"
Ciaoooo

Paolo Attivissimo ha detto...

Be', potresti installare la patch disponibile presso il sito di Mandriva o Red Hat :-)

Battute semiserie a parte, ti conviene la soluzione NOD. Piuttosto che niente, meglio piuttosto. Sarebbe comunque buona cosa passare a un sistema operativo più aggiornato, se non hai motivi inderogabili per restare ancorato a 98.

miki64 ha detto...

Fabiuz, a meno che tu non abbia un P200 con 16 MB di RAM, ti consiglio pure di installare Firefox come browser: è un palliativo (ottimo), am meglio di niente...

Fabiuz ha detto...

Ringrazio tutti x le o vs. risposte. Ho anche un desktop recente, il motivo x cui uso win98Se sul portatile è che essendo un compaq armada V300, ossia PII dixon "celeron" 466mhz. e con 128mb. di ram, il 2k girerebbe a fatica se nn portando la ram a 256mb. almeno. per il resto uso già firefox 1.5, mediaplayer classic, Zone alarm 6, AVG 7 etc.. e gira tutto egregiamente, vedo pure i divx senza scatti. finchè quindi nn aggiungo ram resto col 98se.
L'unica speranza quindi x noi col 98Se, è la patch di future time, quella di Ilfak va solo su 2k_Xp_2k3 se nn erro. Ho vagliato l'ipotesi linux, ma vorrei fare un po di autoaprendimento prima con il libro di paolo, "da win a linux" dite che una live da CD o USB va bene?
Ciaoooo

Anonimo ha detto...

Vorrei sapere se la patch di Ilfak non funziona su Windows 95-98-NT.
Grazie.

Anonimo ha detto...

Ciao a tutti,

non so se questa è la pagina adatta, ma mi piacerebbe che qualcuno mi rispondesse - qui o altrove - a una domanda che mi faccio da tempo leggendo le infinite critiche che vengono rivolte a Microsoft per la lentezza o addirittura l'apparente disinteresse nel rilascio delle patch (basta vedere su Secunia o simili).

La domanda è semplice: come mai Microsoft si comporta nel modo succitato?

Io ho ipotizzato:

- perché pensa solo a far soldi e si concentra sulla promozione dei nuovi prodotti piuttosto che sulla correzione dei vecchi o dei correnti (però Gates è ai primi posti della classifica mondiale di chi devolve più denaro in beneficienza)

- perché se esistono bug sfruttabili dagli hacker, i produttori di sistemi di sicurezza come firewall, antivirus, ecc. guadagnano di più (un po' come le aziende farmaceutiche che seminano malattie per vendere medicine; mi sembra un tantino rischioso però)

- perché avere bug nei propri prodotti fa pubblicità all'azienda (si, ma negativa però...)

- perché Bill Gates ama vedere i propri clienti insoddisfatti (masochista?)

- perché per rilasciare una patch non basta scriverla, bisogna testarla in molti sistemi e in un numero sconsiderato di condizioni affinché non esca fuori un problema più grave inizialmente invisibile (mah, questo non spiega perché alcune falle sono ancora aperte da tempo immemore)

- perché con i bug si può costringere gli utenti a comprare un upgrade del prodotto malfunzionante (bè ma le patch sono gratuite...)

- boh....

Mi illuminate? Risposte serie però!
Grazie!!!
Gianluca

P.S.: se a qualcuno fosse venuto il dubbio, la mia domanda non vuole assolutamente essere retorica o polemica. Mi sto davvero chiedendo in buona fede come mai Microsoft si comporta così

Anonimo ha detto...

Uhm le risposte fioccano vedo...

Alex ha detto...

Crossover rilascia la versione corretta. Ha inviato oggi una mail a tutti gli utenti comunicando che è disponibile per il download una versione di Crossover non affetta dal bug.

Ciao

Fabiuz ha detto...

Io sul win98Se ho installato la patch di nod32 al momento l'unica che sembri funzionare su sistemi win9x/Me.
Ebbene ieri AVG 7.1 mi rileva un trojan.cpu.2 nel file INJECT.exe che installando la patch si trova in c:\programmi\wmfpatch le 2 dll. anche con virustotal risultano puliti, nn riesco però a caricare il file inject.exe sul server virustotal x il controllo, x ora ho il file in virus vault.
Credo che si tratti di un falso positivo, ma se ci vado su AVG mi rileva il trojan, se tento l'up su virustotal mi dice impossibile aprire il file, rivolgersi al produttore o nn si possiedono i diritti di amministrazione x aprirlo.
Cosa ne pensate?
Ciaoooo