소프트웨어 보안 취약점(7가지)

라이언양 위키
둘러보기로 가기 검색하러 가기

1 소개

행정장치부와 한국인터넷진흥원(KISA)에서 발간한 소프트웨어 개발 보안 가이드(링크)에 소스코드 보안 취약점 47가지가 7개 종류로 구분하여 설명됨. 그 목록은 아래와 같음.

2 소스코드 보안 취약점

소스코드 보안 취약점은 7개로 분류하며 총 47개가 존재한다.

  1. 입력데이터 검증 및 표현(15개)
  2. 보안기능(16개)
  3. 시간 및 상태(2개)
  4. 에러처리(3개)
  5. 코드오류(4개)
  6. 캡슐화(5개)
  7. API 오용(2개)

2.1 입력데이터 검증 및 표현

프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식지정으로 인해 발생할 수 있는 보안약점으로 총 15개가 존재한다.

  1. SQL 삽입
  2. 크로스사이트 스크립트(Cross Site Scripting, XSS)
  3. 크로스사이트 요청 위조(Cross Site Request Forgery, CSRF)
  4. Format String Bug
  5. Integer Buffer Overflow
  6. Memory Buffer Overflow
  7. 위험한 형식 파일 업로드 (이하 생략)

2.2 보안기능

보안기능(인증, 접근제어, 기밀성, 암호화, 권한 관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점을 뜻하며 총 16개가 존재한다.

  1. 중요정보 평문저장
  2. 중요정보 평문전송
  3. 하드코드된 비밀번호
  4. 하드코드된 암호화 키
  5. 충분하지 않은 키 길이 사용 (이하 생략)

2.3 시간 및 상태

동시 또는 거의 수행을 지원하는 병렬 시스템 하나 이상의 프로세스가 동작되는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안약점으로 총 2개가 존재한다.

  1. 경쟁 조건(Race Condition): 검사 시점과 사용 시점(TOCTOU) 차이 이용하여 해킹
  2. 종료되지 않는 반복문 또는 재귀 함수

2.4 에러처리

에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보(시스템 등)가 포함될 때 발생할 수 있는 보안약점으로 총 3개가 존재한다.

  1. 오류 메시지를 통한 정보 노출
  2. 오류 상황 대응 부재
  3. 부적절한 예외 처리

2.5 코드오류

타입변환 오류, 자원(메모리 등)의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩오류로 인해 유발되는 보안약점으로 총 4개가 존재한다.

  1. Null Pointer 역참조
  2. 부적절한 자원 해제
  3. 해제된 자원 사용
  4. 초기화되지 않은 변수 사용

2.6 캡슐화

중요한 데이터 또는 기능성을 불충분하게 캡슐화 하였을 때, 인가되지 않은 사용자에게 데이터 누출이 가능해지는 보안약점으로 총 5개가 존재한다.

  1. 잘못된 세션에 의한 데이터 정보 노출
  2. 제거되지 않고 남은 디버그 코드
  3. 시스템 데이터 정보노출
  4. Public 메소드로부터 반환된 Private 배열
  5. Private 배열에 Public 데이터 할당

2.7 API 오용

의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안약점으로 총 2개가 존재한다.

  1. DNS lookup에 의존한 보안결정
  2. 취약한 API 사용