Vulnerabilidade no Microsoft SQL Server [Atualizado]

Atualização - Este problema foi resolvido pelo boletim MS09-004.  A Microsoft recomenda que todos os softwares afetados sejam atualizados com esta correção.

 

A Microsoft acaba de divulgar um advisory sobre uma vulnerabilidade descoberta no Microsoft SQL Server e com exploit já publicado na Internet. Esta vulnerabilidade permite execução de código remoto, e afeta o Microsoft SQL Server 2000 e Microsoft SQL Server 2005 sem SP3, incluindo as versões gratuitas (Microsoft SQL 2000 Desktop Engine - MSDE e SQL Server 2005 Express).

A vulnerabilidade é um estouro de buffer na memória heap (heap overflow) dentro da stored procedure sp_replwritetovarbin. O SQL Server 7.0, o SQL Server 2005 com SP3 e o novo SQL Server 2008 não são afetados.

Para ser explorada a vulnerabilidade exige que o usuário esteja autenticado no sistema. Note no entanto que um usuário anônimo pode explorar a vulnerabilidade caso consiga obter acesso autenticado ao banco de dados através de um SQL Injection por exemplo.

Enquanto uma atualização corrigindo a vulnerabilidade não é disponibilizada, os seguintes workarounds estão disponíveis:

¦ Bloquear a permissão de acesso a store procedure sp_replwritetovarbin. Isto pode ser feito usando os seguintes comandos no banco de dados, logado como System Administrator (sa):

use master
deny execute on sp_replwritetovarbin to public

Note que este bloqueio irá afetar os usuários que utilizam replicação transacional com assinaturas atualizáveis, i.e. aquelas onde o assinante pode fazer alterações e replicar de volta para o publicador. Se você usa esta forma de replicação não implemente este workaround. Outras formas de replicação não são afetadas.

¦ Para usuários do Microsoft SQL Server 2005, atualizar o sistema com o Service Pack 3. O SQL Server 2005 com SP3 não é afetado pela vulnerabilidade.

Mais informações técnicas sobre esta vulnerabilidade estão disponíveis no blog da equipe de pesquina de vulnerabilidades da Microsoft, e o advisory será mantido atualizado com qualquer nova informação que seja divulgada.

Update: A Microsoft divulgou um script que automatiza a aplicação do workaround.