본문 바로가기
Database/MS-Sql Lecture

SQL Injection 분석 프로그램

by 현이빈이 2010. 9. 9.
반응형

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 웹 사이트를 참조하십시오.
반응형