DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 954476 - Última revisão: sexta-feira, 27 de junho de 2008 - Revisão: 1.1

Nesta página

INTRODUÇÃO

Este artigo descreve a ferramenta Microsoft Source Code Analyzer for SQL Injection. É possível usar essa ferramenta de análise de código estático para encontrar vulnerabilidades na injeção SQL em códigos ASP.

Mais Informações

A ferramenta Microsoft Source Code Analyzer for SQL Injection é uma ferramenta de análise de código estático que o ajuda a encontrar vulnerabilidades em códigos ASP (Active Server Pages). Este artigo descreve como usar a ferramenta, os avisos gerados por ela e as suas limitações. Consulte o documento LEIA-ME da ferramenta para obter mais informações.

Pré-requisitos

Esta ferramenta de linha de comando requer o seguinte software:
  • .NET Framework 3,0

Problemas de injeção SQL em códigos ASP

Se os dados fornecidos pelo usuário por meio das coleções Request.Form ou Request.Querystring o código ASP são usados para construir instruções SQL sem nenhuma validação de dados, um invasor pode injetar comandos SQL em uma instrução SQL e utilizá-la para fins indevidos. Isso é normalmente conhecido como uma Vulnerabilidade de injeção SQL de primeira ordem.

Se a entrada de um usuário é armazenada em um banco de dados usando uma página ASP e, posteriormente, essa entrada do usuário é recuperada do banco de dados e usada para construir instruções SQL dinâmicas em uma página ASP diferente, um invasor pode injetar comandos SQL em uma instrução SQL e utilizá-la para fins indevidos. Isso é normalmente conhecido como uma Vulnerabilidade de injeção SQL de segunda ordem.

Para reduzir essas vulnerabilidades, a melhor coisa a fazer é usar consultas SQL parametrizadas. Para obter mais informações sobre vulnerabilidades de injeção SQL em ASP e sobre métodos para reduzir essas vulnerabilidades, visite o seguinte site da Microsoft (em inglês):
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)
A ferramenta Microsoft Source Code Analyzer for SQL Injection o ajuda a encontrar alguns desses problemas de forma automática.

Uso

Esta seção descreve como usar a ferramenta.

Sintaxe

A ferramenta usa a seguinte sintaxe:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=núm;..;núm] [/GlobalAsaPath=caminho] [/IncludePaths=caminho;..;caminho] /Input=arquivo.asp

Descrição

A ferramenta analisa o código ASP procurando por vulnerabilidades de injeção SQL.

Lista de parâmetros

Recolher esta tabelaExpandir esta tabela
ParâmetroOpção Descrição
/GlobalAsaPathpathExibe o caminho do arquivo Global.asa.
/IncludePathspathsExibe caminhos separados por ponto e vírgula para a resolução de arquivos incluídos usando caminhos virtuais.
/inputasp fileExibe o caminho absoluto do arquivo ASP que precisa ser analisado.
/suppress warnings Os avisos não são exibidos.
/nologo O logotipo da ferramenta não é exibido.
/quietOs erros de análise não são exibidos. Ao usar as opções /nologo e /quiet, somente as mensagens de aviso são exibidas.

Exemplos

MSSCASI_ASP /input="c:\source\logon.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp" /IncludePaths="C:\virtualdirectory1;C:\virtualdirectory2"
MSSCASI_ASP /input="c:\source\webitems\display.asp" /suppress="80406;80407"

Analisar a saída

A ferramenta gera os seguintes avisos:
Recolher esta tabelaExpandir esta tabela
AvisoDescrição
80400Uma possível vulnerabilidade de injeção SQL através de dados lidos do objeto Request sem qualquer objeto de entrada de validação. Esses avisos muito provavelmente representam bugs que precisam ser corrigidos.
80406Uma possível vulnerabilidade de injeção SQL através de dados lidos do objeto Request onde a entrada de dados é passada através de algumas chamadas de funções desconhecidas que podem desenvolver validação de dados. Se nenhuma validação de dados é realizada dentro de uma chamada de função, esses avisos muito provavelmente representam bugs. Ou então, são falso positivos.
80403Uma possível vulnerabilidade de injeção SQL através de dados provenientes de um servidor back-end. Se os dados são controlados por um usuário final através de outro site da Web, esses avisos muito provavelmente representam bugs. Entretanto, se os dados são confiáveis, esses avisos podem não representar bugs. É recomendável parametrizar essas consultas como parte de uma estratégia de defesa em níveis.
80407Uma possível vulnerabilidade de injeção SQL através de dados provenientes de um servidor back-end e que é passada através de algumas chamadas de funções desconhecidas. Se os dados são controlados por um usuário final através de outros sites da Web e nenhuma validação é realizada nesses dados, esses avisos muito provavelmente representam bugs.
80420Uma possível vulnerabilidade de injeção SQL através de parâmetros de funções. Esses avisos são gerados no escopo da função. Portanto, se os valores de parâmetro da função vêm de fontes confiáveis, esses avisos são falsos positivos. Se os valores de parâmetro são controlados por usuários finais, esses avisos muito provavelmente representam bugs. É possível usar a anotação __sql_pre_validated nos parâmetros da função para detectar se os usuários finais podem chegar até esse código.
80421Uma possível vulnerabilidade de injeção SQL através de parâmetros de funções, e parâmetros de funções são passados através de algumas chamadas de funções desconhecidas que podem desenvolver validação de dados. É possível usar a anotação __sql_pre_validated nos parâmetros da função e __sql_validate na função de validação para detectar se os usuários finais podem chegar até esse código.
De todos os avisos gerados pela ferramenta, o aviso 80400 é o que possui a maior probabilidade de estar representando bugs. Os desenvolvedores Web de ASP precisam corrigir esses bugs usando consultas parametrizadas. Para obter informações adicionais sobre como usar consultas SQL parametrizadas em códigos ASP, visite o seguinte site da Microsoft (em ingles):
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)

Limitações

A ferramenta possui as seguintes limitações conhecidas:
  • A ferramenta entende somente o código ASP que está escrito em VBScript. Ela atualmente não analisa o código do lado servidor que esteja escrito em qualquer outra linguagem, como Jscript.
  • Um novo analisador ASP foi desenvolvido como parte do processo de desenvolvimento desta ferramenta. Entretanto, esse analisador pode não cobrir todas as construções ASP. Portanto, é possível que ocorram alguns erros de análise.

Referências

Para baixar a ferramenta Microsoft Source Code Analyzer for SQL Injection, visite o seguinte site da Microsoft (em inglês):
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA (http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA)
Para obter informações sobre documentação sobre diversas práticas recomendadas, visite o seguinte site da Microsoft (em inglês):
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx (http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx)
Para obter mais informações sobre como impedir a injeção SQL em ASP, visite o seguinte site da Microsoft (em inglês):
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)
Para obter mais informações sobre ataques de injeção SQL, visite o seguinte site da Microsoft (em inglês):
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx (http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx)
Para obter mais informações sobre a ferramenta, visite o seguinte site da Microsoft (em inglês):
http://blogs.msdn.com/sqlsecurity (http://blogs.msdn.com/sqlsecurity)
Visite o seguinte site da Microsoft para discutir sobre a ferramenta no fórum sobre segurança SQL da MSDN (em inglês):
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1 (http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1)

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 2.0
Palavras-chave: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft