http://support.microsoft.com/default.aspx/kb/954476

Microsoft Source Code Analyzer for SQL Injection 도구를 사용하여 ASP 코드에서 SQL 삽입 공격 취약점을 찾을 수 있다

기술 자료 ID : 954476
마지막 검토 : 2008년 6월 27일 금요일
수정 : 1.0

소개

이 문서에서는 Microsoft Source Code Analyzer for SQL Injection 도구에 대해 설명합니다. 이 정적 코드 분석 도구를 사용하여 ASP 코드에서 SQL 삽입 공격 취약점을 찾을 수 있습니다.

위로 가기

추가 정보

Microsoft Source Code Analyzer for SQL Injection 도구는 ASP(Active Server Pages) 코드에서 SQL 삽입 공격 취약점을 찾도록 도와주는 정적 코드 분석 도구입니다. 이 문서에서는 이 도구를 사용하는 방법, 도구에서 생성되는 경고 및 도구의 제한 사항에 대해 설명합니다. 자세한 내용은 도구 추가 정보 문서를 참조하십시오.

위로 가기

전제 조건

이 명령줄 도구를 사용하려면 다음 소프트웨어가 필요합니다.
.NET Framework 3.0

위로 가기

ASP 코드의 SQL 삽입 공격 문제

ASP 코드의 Request.Form 또는 Request.Querystring 컬렉션에서 사용자가 제공한 데이터가 데이터 유효성 검사 없이 동적 SQL 문을 만드는 데 사용되는 경우 공격자가 SQL 명령을 SQL 문에 삽입하고 악용할 수 있습니다. 이를 일반적으로 1차 SQL 삽입 공격 취약점이라고 합니다.

한 ASP 페이지를 사용하여 데이터베이스에 저장된 사용자 입력이 데이터베이스에서 검색된 다음 다른 ASP 페이지에서 동적 SQL 문을 만드는 데 사용되는 경우 공격자가 SQL 명령을 SQL 문에 삽입하고 악용할 수 있습니다. 이를 일반적으로 2차 SQL 삽입 공격 취약점이라고 합니다.

이러한 취약점을 줄이려면 매개 변수가 있는 SQL 쿼리를 사용하는 것이 가장 좋습니다. ASP의 SQL 삽입 공격 취약점과 이러한 취약점을 줄이는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)(영문)
Microsoft Source Code Analyzer for SQL Injection 도구는 이러한 문제 중 일부를 자동으로 찾는 데 도움이 됩니다.

위로 가기

사용법

이 절에서는 이 도구를 사용하는 방법에 대해 설명합니다.

구문

이 도구는 다음 구문을 사용합니다.
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

설명

이 도구는 ASP 코드를 분석하여 SQL 삽입 공격 취약점을 찾습니다.

매개 변수 목록

매개 변수 옵션 설명
/GlobalAsaPath 경로 Global.asa 파일의 경로를 표시합니다.
/IncludePaths 경로 가상 경로를 사용하여 포함된 파일을 확인하기 위한 세미콜론으로 구분된 경로를 표시합니다.
/input ASP 파일 분석해야 하는 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 삽입 공격 취약점이 생성될 수 있습니다. 이러한 경고는 함수 호출 내에서 데이터 유효성 검사가 수행되지 않으면 버그일 가능성이 크며, 그렇지 않으면 가양성(false positives)입니다.
80403 백 엔드 서버에서 제공되는 데이터를 통해 SQL 삽입 공격 취약점이 생성될 수 있습니다. 최종 사용자가 다른 웹 사이트를 통해 데이터를 제어하는 경우 이러한 경고는 버그일 가능성이 큽니다. 그러나 데이터를 신뢰할 수 있는 경우 이러한 경고는 버그가 아닙니다. 심층 방어(defense-in-depth) 전략의 일환으로 이러한 쿼리를 매개 변수화하는 것이 좋습니다.
80407 백 엔드 서버에서 제공되고 알 수 없는 함수 호출을 통해 전달되는 데이터를 통해 SQL 삽입 공격 취약점이 생성될 수 있습니다. 최종 사용자가 다른 웹 사이트를 통해 데이터를 제어하고 이 데이터에 대한 유효성 검사가 수행되지 않는 경우 이러한 경고는 버그일 가능성이 큽니다.
80420 함수 매개 변수를 통해 SQL 삽입 공격 취약점이 생성될 수 있습니다. 이러한 경고는 함수 범위에서 생성되므로 함수 매개 변수 값이 신뢰할 수 있는 곳에서 제공되는 경우 이러한 경고는 가양성(false positives)입니다. 최종 사용자가 매개 변수 값을 제어하는 경우 이러한 경고는 버그일 가능성이 큽니다. 함수 매개 변수에서 __sql_pre_validated 주석을 사용하여 최종 사용자가 이 코드에 접근할 수 있는지 여부를 확인할 수 있습니다.
80421 데이터 유효성 검사를 수행할 수 있는 알 수 없는 함수 호출을 통해 전달되는 함수 매개 변수를 통해 SQL 삽입 공격 취약점이 생성될 수 있습니다. 함수 매개 변수에서 __sql_pre_validated 주석을 사용하고 유효성 검사 함수에서 __sql_validate 주석을 사용하여 최종 사용자가 이 코드에 접근할 수 있는지 여부를 확인할 수 있습니다.
도구에서 생성되는 모든 경고 중에서 80400 경고가 실제 버그를 나타낼 가능성이 가장 큽니다. ASP 웹 개발자는 매개 변수가 있는 쿼리를 사용하여 이러한 버그를 해결해야 합니다. ASP 코드에서 매개 변수가 있는 SQL 쿼리를 사용하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)(영문)

제한 사항

이 도구에는 다음과 같은 알려진 제한 사항이 있습니다.
이 도구는 VBScript로 작성된 ASP 코드만 인식하고 Jscript 등의 다른 언어로 작성된 서버 쪽 코드를 분석하지 않습니다.
새로운 ASP 파서가 이 도구 개발 프로세스의 일환으로 개발되었습니다. 그러나 이 파서는 모든 ASP 구문을 처리하지 못할 수 있으므로 구문 분석 오류가 발생할 수 있습니다.

위로 가기

참조

Microsoft Source Code Analyzer for SQL Injection 도구를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오.
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)(영문)
다양한 모범 사례 설명서에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
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)(영문)
ASP에서 SQL 삽입 공격을 방지하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn.microsoft.com/en-us/library/cc676512.aspx (http://msdn.microsoft.com/en-us/library/cc676512.aspx)(영문)
SQL 삽입 공격에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
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)(영문)
이 도구에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://blogs.msdn.com/sqlsecurity (http://blogs.msdn.com/sqlsecurity)(영문)
MSDN SQL 보안 포럼에서 도구에 대해 논의하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1 (http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1)(영문)

위로 가기


'Infrastructure' 카테고리의 다른 글

URLScan 도구를 구성하는 방법  (0) 2008.11.07
IIS IrlScan  (0) 2008.10.28
URLScan 도구를 구성하는 방법  (0) 2008.10.28
MS OutLook Express 오류 메시지 분석  (0) 2008.09.25
outlook 리턴메일 오류 메세지 모음  (0) 2008.09.25

+ Recent posts