quarta-feira, julho 29, 2009

Falhas de Segurança em Biblioteca Microsoft Requer Providências dos Desenvolvedores

Os mais atentos devem ter percebido que a Microsoft disponibilizou ontem duas atualizações fora do cronograma normal. A instalação destas atualizações, entretanto, não é suficiente para retirar a vulnerabilidade das aplicações afetadas. Para isto é necessário re-gerar a aplicação, utilizando uma nova versão da biblioteca e alterando algumas construções no código fonte.

ATL

As falhas de segurança foram encontradas na Active Template Library (ATL). O corpo da ATL é um conjunto de templates C++ que gera classes para facilitar o desenvolvimento de objetos COM.

Se você não tem alguma familiaridade com C++ e COM, a frase anterior não deve ter feito sentido. Tentando explicar
  • COM (Component Object Model) é uma especificação para interface entre objetos criada pela Microsoft no começo dos anos 90. Entre seus vários usos se destacam os controles ActiveX usados (principalmente) para fornecer funcionalidades adicionais ao IE e aplicações VB.
  • Um template C++ é um recurso que permite definir funções e classes usando tipos genéricos. O compilador se encarrega de gerar versões das funções ou classes específicas para os tipos necessários. Por exemplo, pode-se criar um template para uma classe que implementa uma pilha de objetos de um tipo T (genérico) e depois usar este template para declarar pilhas de tipos int, float, etc.
A criação de um objeto COM pode ser algo bastante complicado e trabalhoso. A ATL e o Visual Studio simplificam isto, permitindo agregar uma grande quantidade de código pronto e gerar automaticamente mais um outro tanto. O programador pode se concentrar nas funcionalidades do seu objeto e deixar o "encanamento" por conta da ATL. Ótimo, até que se descubra uma falha no código da ATL.

As Atualizações de Segurança

As atualizações liberadas ontem consistem em uma atualização da ATL e uma atualização no IE. A atualização no IE tem por objetivo evitar que as falhas na ATL sejam exploradas através de componentes hospedados no IE. Uma das possíveis explorações é burlar uma proteção usada no IE para bloquear componentes nocivos. Em outras palavras, explorando a falha na ATL pode-se "ressuscitar" falhas já bloqueadas.

Como Saber Se o Seu Componente é Afetado

O boletim de segurança da Microsoft apresenta um fluxograma (vocês ainda lembram disso) para determinar se um componente é afetado. Se não me perdi nas setas, um componente é afetado se atender a pelo menos uma das seguintes condições:
  • Chame CComVariant::ReadFromStream com dados não confiáveis.
  • For um componente COM, marcado como SFI, que herde de IPersistStreamInitImpl ou não herde mas chame AltPersistStreamInit_Load e use PROP_ENTRY / PROP_ENTRY_EX ou use PROP_ENTRY_TYPE / PPROP_ENTRY_TYPE_EX com VT_EMPTY, VT_DISPATCH ou VT_UNKNOWN
Se você desenvolveu um software que se encaixe nestas condições, leia com atenção o boletim para ver os passos necessários para corrigir a vulnerabilidade no seu software.

Fonte: The Register.

Nenhum comentário: