Выпущено средство анализа исходного кода на наличие внедрений кода SQL (Майкрософт), которое позволяет обнаружить уязвимости кода ASP для атак путем внедрения кода SQL

Переводы статьи Переводы статьи
Код статьи: 954476 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

ВВЕДЕНИЕ

В этой статье описывается средство анализа исходного кода на наличие внедрений кода SQL (Майкрософт). Его можно использовать для обнаружения уязвимостей кода ASP для атак путем внедрения кода SQL.

Дополнительная информация

Средство анализа исходного кода на наличие внедрений кода SQL (Майкрософт) представляет собой средство для анализа статического кода, которое позволяет обнаружить уязвимости в коде ASP для атак путем внедрения кода SQL. В статье описываются использование средства, создаваемые им предупреждения и ограничения по применению. Дополнительные сведения см. в файле сведений о средстве.

Необходимые условия

Ниже указано программное обеспечение, необходимое для работы этой программы командной строки.
  • Microsoft .NET Framework 3.0

Проблемы, связанные с внедрением кода SQL в код ASP

Если введенные пользователем данные из коллекций Request.Form и Request.Querystring в коде ASP используются для создания динамических инструкций SQL без выполнения проверки, злоумышленник может внедрить команды SQL в инструкцию SQL, а затем воспользоваться ими в своих целях. Это называется уязвимость для атак путем внедрения кода SQL первого порядка.

Если введенные пользователем данные хранятся в базе данных на одной странице ASP, а затем извлекаются и используются для создания динамических инструкций SQL на другой странице ASP, злоумышленник может внедрить команды SQL в инструкцию SQL, а затем воспользоваться ими в своих целях. Обычно это называется уязвимость для атак путем внедрения кода SQL второго порядка.

Чтобы снизить риск возникновения этих уязвимостей, рекомендуется использовать параметризированные SQL-запросы. Дополнительные сведения об уязвимостях кода ASP для атак путем внедрения кода SQL и способах снижения риска возникновения таких уязвимостей см. на веб-узле корпорации Майкрософт по адресу:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Средство анализа исходного кода на наличие внедрений кода SQL (Майкрософт) позволяет автоматически обнаруживать некоторые из этих уязвимостей.

Применение

В этом разделе описывается использование средства.

Синтаксис

Ниже указан синтаксис, используемый этим средством.
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

Описание

Средство анализирует код ASP на наличие уязвимостей для атак путем внедрения кода SQL.

Список параметров

Свернуть эту таблицуРазвернуть эту таблицу
Параметр Параметр Описание
/GlobalAsaPathпутьОтображает путь к файлу Global.asa.
/IncludePathsпутиОтображает пути, разделенные точками с запятой, для разрешения файлов, которые включены с использованием виртуальных путей.
/inputASP-файлОтображает абсолютный путь к анализируемому ASP-файлу.
/suppress warnings Отменяет вывод предупреждений.
/nologo Отменяет отображение эмблемы средства.
/quietОтменяет вывод ошибок синтаксического анализа. При использовании параметров /nologo и /quiet будут выводиться только предупреждающие сообщения.

Примеры

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"

Просмотр полученных данных

Ниже перечислены создаваемые средством предупреждения.
Свернуть эту таблицуРазвернуть эту таблицу
ПредупреждениеОписание
80400В данных, которые считываются из объекта Request без проверки входных данных, существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Вероятно, такие предупреждения являются ошибками, которые необходимо исправить.
80406В данных, считываемых из объекта Request, в котором входные данные обрабатываются неизвестными вызовами функции, которые могут выполнять проверку данных, существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Если внутри вызова функции проверка данных не выполняется, вероятнее всего это ошибки. В противном случае это ложные срабатывания.
80403В данных, получаемых от фонового сервера, существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Если данные управляются конечным пользователем через другой веб-узел, вероятнее всего это ошибки. Однако если данные являются надежными, возможно, это не ошибки. Для повышения общего уровня защиты рекомендуется параметризировать такие запросы.
80407В данных, получаемых от фонового сервера и обрабатываемых неизвестными вызовами функции, существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Если данные управляются конечным пользователем через другие веб-узлы и проверка этих данных не выполняется, вероятнее всего это ошибки.
80420В параметрах функции существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Эти предупреждения создаются в пределах области видимости функции. Соответственно, если значения параметров функции исходят от надежных источников, это ложные срабатывания. Если значения параметров управляются конечными пользователями, вероятнее всего это ошибки. Чтобы определить возможность доступа конечных пользователей к коду, можно воспользоваться заметкой __sql_pre_validated для параметров функции.
80421В параметрах функции и при обработке параметров функции неизвестными вызовами функции, которые могут выполнять проверку данных, существует вероятность наличия уязвимости для атак путем внедрения кода SQL. Чтобы определить возможность доступа конечных пользователей к коду, можно воспользоваться заметкой __sql_pre_validated для параметров функции и проверкой функции __sql_validate.
Из всех предупреждений, создаваемых средством, предупреждение 80400 вероятнее всего указывает на наличие фактических ошибок. Веб-разработчикам ASP необходимо исправить эти ошибки путем использования параметризированных запросов. Дополнительные сведения об использовании параметризированных SQL-запросов в коде ASP см. на веб-узле корпорации Майкрософт по адресу:
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Ограничения

Ниже перечислены известные ограничения по применению средства.
  • Средство можно использовать только для работы с кодом ASP, который написан на языке VBScript. В настоящее время средство не поддерживает анализ серверного программного кода, написанного на других языках, например Jscript.
  • В ходе разработки этого средства было создано средство синтаксического анализа кода ASP. Однако оно может не поддерживать все конструкции ASP. В связи с этим могут возникать некоторые ошибки синтаксического разбора.

Ссылки

Загрузить средство анализа исходного кода на наличие внедрений кода SQL (Майкрософт) можно на веб-узле корпорации Майкрософт по адресу:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Дополнительные сведения о документации, посвященной советам и рекомендациям, см. на веб-узле корпорации Майкрософт по адресу:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Дополнительные сведения о предотвращении внедрения кода SQL в код ASP см. на веб-узле корпорации Майкрософт по адресу:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Дополнительные сведения об атаках путем внедрения кода SQL см. на веб-узле корпорации Майкрософт по адресу:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Дополнительные сведения об этом средстве см. на веб-узле корпорации Майкрософт по адресу:
http://blogs.msdn.com/sqlsecurity
Обсуждение этого средства на форуме, посвященном безопасности SQL, см. на веб-узле MSDN корпорации Майкрософт по адресу:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Свойства

Код статьи: 954476 - Последний отзыв: 27 июня 2008 г. - Revision: 1.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft ASP.NET 2.0
Ключевые слова: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476

Отправить отзыв

 

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