코드 감사
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
코드 감사는 소프트웨어의 잠재적인 취약점을 식별하기 위해 소스 코드를 검토하는 과정이다. 코드 감사는 모든 핵심 구성 요소를 개별적으로, 그리고 전체 프로그램과 함께 진행하며, 고위험 취약점을 먼저 검색하는 것이 효율적이다. 고위험 취약점으로는 버퍼 오버플로우, SQL 삽입, 원격 파일 포함 등이 있으며, 저위험 취약점으로는 클라이언트 사이드 코드 취약점, 디렉터리 순회 등이 있다. 코드 감사 도구는 일반적인 취약점을 찾고 특정 프로그래밍 언어에 특화되어 있으며, 자동화 도구는 시간 절약에 도움이 되지만 심층적인 감사에는 한계가 있다. 감사의 강도는 애플리케이션의 사용 방식과 프로그램의 특성에 따라 달라지며, 악성코드와 연결될 수 있는 라이브러리나 외부 입력을 받는 프로그램은 더욱 엄격한 요구 사항을 적용해야 한다.
더 읽어볼만한 페이지
| 코드 감사 |
|---|
2. 가이드라인
소프트웨어 감사에서는 핵심 구성 요소를 개별적으로, 그리고 전체 프로그램과 함께 감사해야 한다. 고위험 취약점을 먼저 찾고, 저위험 취약점으로 범위를 좁혀가는 것이 효율적이다. 애플리케이션 침투 테스트는 알려진 공격 기법을 사용하여 취약점을 찾지만, 소스 코드 내 위치는 알 수 없다.[5][1] 주기 종료 감사 방식은 개발자에게 부담을 줄 수 있으므로, 인라인 감사 방식이 대안이 될 수 있다. GooApps와 같이 개발 프로세스 초기에 취약점을 완화하는 사전 예방적 접근 방식도 유용하다.[2]
2. 1. 고위험 취약점
다음은 코드 감사 시 주의해야 할 고위험 취약점들이다.- strcpy, sprintf, vsprintf, 그리고 sscanf와 같이 경계 검사를 수행하지 않는 함수들은 버퍼 오버플로우 취약점으로 이어질 수 있다.[6][3]
- 후속 경계 검사를 방해할 수 있는 버퍼의 포인터 조작. 예:
if ((bytesread = net_read(buf,len)) > 0) buf += bytesread;[7][3] - execve(), 실행 파이프, system() 및 유사한 기능 호출 (특히 비정적 인수를 사용하여 호출되는 경우)[8][3]
- 입력 유효성 검사. 예: (SQL에서)
statement := "SELECT * FROM users WHERE name = '" + userName + "';"는 SQL 삽입 취약성의 예이다. - 파일 포함 함수. 예: (PHP에서)
include($page . '.php');는 원격 파일 포함 취약성의 예이다. - 악성 코드로 연결될 수 있는 라이브러리의 경우 내부 변경 가능한 데이터 구조(레코드, 배열)에 대한 참조를 반환한다. 악성 코드는 구조를 수정하거나 참조를 유지하여 향후 변경 사항을 관찰하려고 시도할 수 있다.
2. 2. 저위험 취약점
다음은 상대적으로 낮은 위험을 가지지만, 코드 감사 시 발견해야 할 취약점들이다.- 서버 측에 영향을 미치지 않는 클라이언트 측 코드 취약점 (예를 들면 사이트간 스크립팅)
- 사용자 이름 계산
- 웹 애플리케이션에서의 디렉터리 순회
- 민감한 API 키
3. 감사 도구
소스 코드 감사 도구는 일반적으로 흔한 취약점을 찾는 데 유용하며, 특정 프로그래밍 언어에 특화되어 있다. 이러한 자동화 도구는 시간을 절약할 수 있지만, 심층적인 감사에는 한계가 있으므로, 정책 기반 접근 방식의 일부로 활용해야 한다.[9][4]
4. 요구사항에 따른 감사
낮은 임계값으로 설정하면 대부분의 소프트웨어 감사 도구는 많은 취약점을 탐지하며, 특히 이전에 감사되지 않은 코드의 경우 더욱 그렇다. 그러나 이러한 경고의 실제 중요성은 애플리케이션 사용 방식에 따라 달라진다. 악성 코드와 연결될 수 있는 라이브러리는 매우 엄격한 요구사항을 갖는다. 악성 입력에만 노출될 수 있는 프로그램(예: 웹 서버 백엔드)은 먼저 입력 값 검증(버퍼 오버런, SQL 삽입 등)에 주의해야 한다. 반면, 권한 있는 사용자가 보호된 인프라 내에서 내부적으로만 사용하는 프로그램에서는 이러한 공격이 발생하지 않을 수 있다.[1]
참조
[1]
웹사이트
Source Code Audit - FAQ
http://www.ouncelabs[...]
2008-02-12
[2]
웹사이트
Free Code Audit for Apps: Ensuring the Success of Your Mobile Application
https://gooapps.net/[...]
2024-06-12
[3]
웹사이트
Guidelines for C source code auditing
http://mixter.void.r[...]
2008-02-12
[4]
뉴스
Static analysis at the end of the SDLC doesn't work
http://searchsoftwar[...]
SearchSoftwareQuality.com
2008-09-22
[5]
웹인용
Source Code Audit - FAQ
http://www.ouncelabs[...]
2015-11-04
[6]
웹인용
Guidelines for C source code auditing
http://mixter.void.r[...]
2015-11-04
[7]
웹인용
Guidelines for C source code auditing
http://mixter.void.r[...]
2015-11-04
[8]
웹인용
Guidelines for C source code auditing
http://mixter.void.r[...]
2015-11-04
[9]
뉴스
Static analysis at the end of the SDLC doesn't work
http://searchsoftwar[...]
SearchSoftwareQuality.com
2008-09-22
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com