Database/MS-Sql Lecture

SQL Injection 분석 프로그램

현이빈이 2010. 9. 9. 09:54
반응형

ASP 코드상에 Injection 관련 취약점을 분석해 주는 프로그램입니다.

취약점이 발견된다면 코드를 수정하시는게 도움이 됩니다.


Microsoft Source Code Analyzer for SQL Injection


 

사용법

msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

매개 변수 목록

표 축소표 확대
매개 변수 옵션 설명
/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 웹 사이트를 참조하십시오.
반응형