"코드 감사"의 두 판 사이의 차이

17 바이트 제거됨 ,  5년 전
잔글
봇: 틀 이름 및 스타일 정리
잔글
잔글 (봇: 틀 이름 및 스타일 정리)
 
== 가이드라인 ==
소프트웨어를 감사할 때, 모든 핵심 요소들은 각자 그리고 전체 프로그램과 함께 감사되어야 한다. 이것은 고위험의 취약점들을 먼저 찾고, 저위험의 취약점들을 찾아 내려가는 좋은 방식이다. 고위험의 취약점이나 저위험의 취약점 모두 일반적으로 그 상황과 어떻게 사용되는지에 따라 달려있다. 애플리케이션 침투 테스트는 소프트웨어의 취약점들을 인식하기 위하여 애플리케이션을 공격하기 위한 모든 가능한, 알려진 기법들을 시도한다.<ref name="source-code-audit-faq">{{틀:웹 인용|title = Source Code Audit - FAQ|url = http://www.ouncelabs.com/resources/code-audit-faq.asp}}</ref> 이것은 일반적인 감사 기법이며 어떠한 구체적인 취약점들도 찾아낼 수 있지만 소스 코드의 어디에 위치하는지는 알 수 없다. 몇몇은 사이클 종료 감사 기법이 개발자들을 압도하며, 궁극적으로 팀에게 알려진 문제들의 긴 리스트를 남겨주지만, 실질적인 개선은 되지 않는다고 주장한다. 이러한 경우에, 인라인 감사 접근법이 대체제로 추천된다.
 
=== 고위험 취약점 ===
몇몇 고위험 취약점들은 다음과 같은 것들의 사용으로 인해 생길 수 있다.
* 경계를 체크하지 않는 함수들은 (예를들면, [[String.h|strcpy]], sprintf, vsprintf, 그리고 sscanf) [[버퍼 오버플로]] 취약점을 유발할 수 있다.<ref name="guidelines-for-c-source-code-auditing">{{틀:웹 인용|title = Guidelines for C source code auditing|url = http://mixter.void.ru/vulns.html}}</ref>
* 버퍼들의 포인터 조작은 이후의 경계 체크를 위협할 수 있다. 예를들면 <code>if ((bytesread = net_read(buf,len)) > 0) buf += bytesread;</code> <ref name="guidelines-for-c-source-code-auditing">{{틀:웹 인용|title = Guidelines for C source code auditing|url = http://mixter.void.ru/vulns.html}}</ref>
* 특히 비 정적인 인자들과 함께 호출된 execve() 같은 호출, 실행 파이프, system() 등 <ref name="guidelines-for-c-source-code-auditing">{{틀:웹 인용|title = Guidelines for C source code auditing|url = http://mixter.void.ru/vulns.html}}</ref>
* 입력 확인, 예를들면 (SQL에서): <code>statement := "SELECT * FROM users WHERE name = '" + userName + "';"</code> 은 [[SQL 삽입]] 취약점의 한 예이다.
* 파일 포함 함수 (예를들면 (PHP): <code>include($page . '.php');</code> )는 [[원격 파일 포함]] 취약점의 한 예이다.
 
== 각주 ==
{{Reflist각주}}
 
[[분류:정보 기술 감사]]

편집

1,781,641