Está disponível a ferramenta Microsoft Source Code Analyzer for SQL Injection para localizar vulnerabilidades de injecção de SQL em código ASP

Traduções de Artigos Traduções de Artigos
Artigo: 954476 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

INTRODUÇÃO

Este artigo descreve a ferramenta Microsoft Source Code Analyzer for SQL Injection. Pode utilizar esta ferramenta de análise de código estático para localizar vulnerabilidades de injecção de SQL em código ASP.

Mais Informação

A ferramenta Microsoft Source Code Analyzer for SQL Injection é uma ferramenta de análise de código estático que ajuda a localizar vulnerabilidades de injecção de SQL em código ASP (Active Server Pages). Este artigo descreve como utilizar a ferramenta, os avisos que são gerados pela ferramenta e as limitações da ferramenta. Consulte o documento Readme da ferramenta para mais informações.

Pré-requisitos

Esta ferramenta da linha de comandos requer o seguinte software:
  • .NET Framework 3.0

Problemas de injecção de SQL em código ASP

Se os dados fornecidos pelo utilizador a partir das colecções Request.Form ou Request.Querystring em código ASP forem utilizados para construir instruções de SQL dinâmicas sem validação de dados, um atacante poderá injectar comandos de SQL numa instrução de SQL e utilizá-la indevidamente. Esta situação é conhecida geralmente como uma Vulnerabilidade de injecção de SQL de Primeira Ordem.

Se as entradas do utilizador forem armazenadas numa base de dados utilizando uma página ASP e, em seguida, forem recuperadas da base de dados e utilizadas para construir instruções de SQL dinâmicas numa página ASP diferente, um atacante conseguirá injectar comandos de SQL numa instrução de SQL e utilizá-la indevidamente. Esta situação é conhecida geralmente como uma Vulnerabilidade de injecção de SQL de Segunda Ordem.

Para reduzir estas vulnerabilidades, recomendamos que utilize consultas SQL parametrizadas. Para mais informações sobre vulnerabilidades de injecção de SQL em ASP e sobre métodos para reduzir estas vulnerabilidades, visite o seguinte Web site da Microsoft:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
A ferramenta Microsoft Source Code Analyzer for SQL Injection ajuda a localizar alguns destes problemas automaticamente.

Utilização

Esta secção descreve como utilizar a ferramenta.

Sintaxe

A ferramenta utiliza a seguinte sintaxe:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

Descrição

A ferramenta analisa código ASP para detectar vulnerabilidades de injecção de SQL.

Lista de parâmetros

Reduzir esta tabelaExpandir esta tabela
Parâmetro Opção Descrição
/GlobalAsaPathpathApresenta o caminho do ficheiro Global.asa.
/IncludePathspathsApresenta caminhos separados por ponto e vírgula para resolução de ficheiros incluídos utilizando caminhos virtuais.
/inputasp fileApresenta o caminho absoluto do ficheiro ASP que tem de ser analisado.
/suppress warnings Os avisos não são reportados.
/nologo O logótipo da ferramenta não é apresentado.
/quietOs erros de análise não são apresentados. Quando utiliza os parâmetros /nologo e /quiet, só são apresentadas as mensagens de aviso.

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"

Análise do resultado

A ferramenta gera os seguintes avisos:
Reduzir esta tabelaExpandir esta tabela
AvisoDescrição
80400Possível vulnerabilidade de injecção de SQL através de dados lidos a partir do objecto Request sem qualquer validação de entradas. Estes avisos muito provavelmente representam erros que têm de ser corrigidos.
80406Possível vulnerabilidade de injecção de SQL através de dados lidos a partir do objecto Request pelo qual passou a entrada através de algumas chamadas de função desconhecidas que poderão efectuar a validação de dados. Caso não seja efectuada a validação de dados na chamada de função, é muito provável que estes sejam erros. Caso contrário, serão falsos positivos.
80403Possível vulnerabilidade de injecção de SQL através de dados provenientes de um servidor de back-end. Se os dados forem controlados por um utilizador final através de outro Web site, é muito provável que estes sejam erros. No entanto, caso os dados sejam fidedignos, poderão não ser erros. É sempre conveniente parametrizar estas consultas como parte de uma estratégia de defesa intensa.
80407Possível vulnerabilidade de injecção de SQL através de dados provenientes de um servidor de back-end e que passam por algumas chamadas de função desconhecidas. Se os dados forem controlados por um utilizador final através de outros Web sites, e se não for efectuada qualquer validação destes dados, é muito provável que estes sejam erros.
80420Possível vulnerabilidade de injecção de SQL através de parâmetros de função. Estes avisos são gerados no âmbito da função. Por conseguinte, se os valores de parâmetros de funções forem provenientes de origens fidedignas, estes serão falsos positivos. Se os valores de parâmetros forem controlados por utilizadores finais, é muito provável que sejam erros. Pode utilizar a anotação __sql_pre_validated nos parâmetros de funções para detectar se os utilizadores finais conseguem obter este código.
80421Possível vulnerabilidade de injecção de SQL através de parâmetros de função que passam através de algumas chamadas de função desconhecidas que poderão efectuar a validação de dados. Pode utilizar a anotação __sql_pre_validated nos parâmetros de função e __sql_validate na função de validação para detectar se os utilizadores finais conseguem obter este código.
De todos os avisos gerados pela ferramenta, o aviso 80400 é o que tem maior probabilidade de indicar erros reais. Os programadores Web de ASP têm de corrigir estes erros utilizando consultas parametrizadas. Para mais informações sobre como utilizar consultas SQL parametrizadas em código ASP, visite o seguinte Web site da Microsoft:
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Limitações

A ferramenta tem as seguintes limitações conhecidas:
  • A ferramenta só reconhece código ASP escrito em VBScript. Actualmente não analisa código do lado do servidor escrito em qualquer outra linguagem, como Jscript.
  • Foi desenvolvido um novo analisador ASP como parte do processo de desenvolvimento desta ferramenta. No entanto, este analisador poderá não abranger todas as construções ASP. Por conseguinte, poderá verificar alguns erros de análise.

Referências

Para transferir a ferramenta Microsoft Source Code Analyzer for SQL Injection, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Para mais informações sobre documentação de vários procedimentos recomendados, visite o seguinte Web site da Microsoft:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Para mais informações sobre como impedir injecções de SQL em ASP, visite o seguinte Web site da Microsoft:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Para mais informações sobre ataques de injecção de SQL, visite o seguinte Web site da Microsoft:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Para mais informações sobre a ferramenta, visite o seguinte Web site da Microsoft:
http://blogs.msdn.com/sqlsecurity
Visite o seguinte Web site da Microsoft para debater a ferramenta no fórum sobre Segurança de SQL da MSDN:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Propriedades

Artigo: 954476 - Última revisão: 27 de junho de 2008 - Revisão: 1.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

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com