[Fortify] 소스코드 보안취약점은 기본 분류

출처: https://vulncat.fortify.com/ko

1.입력데이터 검증 및 표현 (Input Validation and Representation)
  프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식 지정으로 인해 발생할 수 있는 보안취약점.

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


2.API 오용 (API Abuse)
  의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안취약점.

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


3.보안 기능 (Security Features)
  보안기능(인증, 접근제어, 기밀성, 암호화, 권한 관리 등)을 부적절하게 구현 시 발생할 수 있는 보안취약점.

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


4.시간 및 상태 (Time and State)
  동시 또는 거의 동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안취약점

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


5.에러 처리 (Errors)
  에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보(시스템 정보 등)가 포함될 때 발생할 수 있는 보안취약점.

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


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

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


7.캡슐화 (Encapsulation)
  중요한 데이터 또는 기능성을 불충분하게 캡슐화 하였을 때, 인가되지 않은 사용자에게 데이터 누출이 가능해지는 보안취약점.

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


*그 외. 환경 설정 (Environment)
위로 스크롤