29 July 2009
Active Template Library (ATL) Security Update – modifiche da apportare al proprio codice
Microsoft ha rilasciato un out-of-band security update per chi ha utilizzato le classi Active Template Library (ATL) in componenti e controlli. In caso in cui aveste utilizzato in un progetto C++ queste librerie dovete identificare le potenziali vulnerabilità, modificare e rimcompilare i controlli e componenti usando la versione aggiornata di ATL.
Micorosoft ha rilasciato un update alle librerie e hader files per le classi ATL presenti nelle versioni supportate di Visual Studio.
Se ho usato ATL come faccio a verificare il mio codice ?
Nella figura seguente trovate un flow-chart che vi può aiutare a capire quali interfacce/macro/tipi dovete ricercare nel codice per capire se il codice scritto è potenzialmente vulnerabile.
Quindi:
1: Se avete un oggetto COM guardate se è fleggato come safe for initializing (SFI)
2: Se eredita da IPersistStreamInitImpl, usa AtlIPersistStreamInit_Load cercate se vengono usate le macro illustrate nel diagramma.
3: Se avete usato CComVariant::ReadFromStream controllate se vengono passati dati non-trusted.
Questa vulnerabilità si applica ad oggetti COM (Active X e non) che usano ATL ed in particolare specifiche interfcce, metodi, macro e/o tipi.
Come posso correggere la vulnerabilità ? Per quali versioni di Visual Studio ( e di ATL) è stata rilasciata una fix ?
Sono state rilasciate le fix per le librerie e gli header file per le versione supportate di Visual Studio. Se state usando una versione non supportata di Visual Studio (e.g Visual C++ 6.0) potete rimuovere il flag “Safe for initializing” e rimuovere le interfacce IPersistStreamInit & IPersistStorage, in aternativa passare ad una versione supportata.
Le versioni di ATL di cui sono disponibili le fix sono la 7.0, 7.1, 8.0, 9.0.
Trovate la lista delle versioni supportate di Visual Studio a questo link.
Da dove scarico le fix?
Microsoft Visual Studio .NET 2003 Service Pack 1(KB971089)
Microsoft Visual Studio 2005 Service Pack 1(KB971090)
Microsoft Visual Studio 2005 Service Pack 1 64-bit Hosted Visual C++ Tools(KB973830)
Microsoft Visual Studio 2008(KB971091)
Microsoft Visual Studio 2008 Service Pack 1(KB971092)
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package(KB973544)
Microsoft Visual C++ 2008 Redistributable Package(KB973551)
Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package (KB973552)
Basta ricompilare il codice con le nuove librerie ?
Ricompilando il codice che usa quanto visto prima, si ottengono dei warning (se non disabilitati) di compilazione che indicano come deprecate le macro/metodi afflitti da questa vulnerabilità.
Bisogna quindi modificare il codice ed usare le nuove macro oppure usare la nuova versione della ReadFromStream.
Se con il vostro codice compilato aveto rilasciato anche le dll di ATL(ATL.DLL, ATLxx.DLL) in specifiche locazioni, dovete ridristribuire anche le nuove versioni di queste dll con il nuovo codice compilato.
Trovate tutti i dettagli nel documento Active Template Library Security Update for Developers.
Risorse:
Comment Notification
If you would like to receive an email when updates are made to this post, please register here
Subscribe to this post's comments using
Comment Policy: No HTML allowed. URIs and line breaks are converted automatically. Your e–mail address will not show up on any public page.