주 메뉴 열기

바뀜

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

3,348 바이트 추가됨, 2019년 11월 6일 (수) 04:59
새 문서: == 소개 == 행정장치부와 한국인터넷진흥원(KISA)에서 발간한 http://www.kisa.or.kr/uploadfile/201702/201702140920275581.pdf|소프트웨어 개발 보안 가이...
== 소개 ==

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

== 소스코드 보안 취약점 ==

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

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

=== 입력데이터 검증 및 표현 ===

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

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

=== 보안기능 ===

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

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

=== 시간 및 상태 ===

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

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

=== 에러처리 ===

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

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

=== 코드오류 ===

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

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

=== 캡슐화 ===

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

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

=== API 오용 ===

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

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

[[분류:보안]]
[[분류:정보보안기사]]
[[분류:소스코드]]
[[분류:개발]]