반응형
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 주석을 사용하여 최종 사용자가 이 코드에 접근할 수 있는지 여부를 확인할 수 있습니다. |
반응형