티스토리 뷰
가. 취약점 개요
- 스택이나 힙에 할당되는 메모리에 문자열 등의 최초 정의된 메모리 크기를 초과하여 경계갑을 넘는 데이터 또는 메모리를 읽는 취약점
→ 버퍼 오버플로우
- 외부입력값에 포멧 문자열을 삽입하여 메모리 내용을 읽거나 쓰기를 통해 프로세스 권한을 취득하여 임의의 코드를 실행하는 취약점
→ 포멧스트링 삽입
나. 요구사항
1. 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계설정 및 검사를 수행
2. 메모리 버퍼오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 통제
다. 요구사항 별 고려사항
1. 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계설정 및 검사를 수행
- 구현단계에 안전한 함수 사용법의 설명을 작성
- 메모리 사용 시 경계값을 검사 후 사용
2. 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 통제
- 메모리 버퍼 오버플로우에 취약한 함수를 식별
- 메모리 버퍼 오버플로우에 취약한 함수를 사용하지 않도록 가이드 작성
라. 요구사항 별 진단기준 및 방법
0. 공통내용
- 요구사항 정의서에 보안요구항목에 대한 대책이 수립
- 아키텍쳐 설계서에 보안요구항목 적용계획이 수립
- 요구사항 추적표를 통해 요구사항 추적가능 여부
1. 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계설정 및 검사를 수행
- 리눅스 환경 시 메모리 보호 설정(ASLR, StackGuard 등)을 사용하는지 확인
- 배열 복사 시 데이터 길이를 검사 후 사용하는지 확인
2. 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 통제
- 메모리 버퍼 오버플로우를 발생시킬 수 있는 API를 정의하였는지 확인
- 메모리 버퍼 오버플로우가 발생하지 않는 API를 정의하였는지 확인
-
마. 진단기준
1. 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 경계설정 및 검사를 수행
- 메모리를 관리하는 플랫폼일 경우, 메모리 버퍼 오버플로우가 발생하지 않도록 보안설계 되었는지 확인
- 메모리 버퍼 오버플로우를 점검하는 테스트 계획 확인
2. 메모리 버퍼 오버플로우를 발생시킬 수 있는 취약한 API를 사용하지 않도록 통제
- 메모리 버퍼 오버플로우 방지를 위한 안전한 API 목록이 정의되었는지 확인
- 메모리 버퍼 오버플로우를 점검하는 테스트 계획 확인
바. 안전한 보안설계 예
No | 요구사항 명 | 해결방안 | 검수기준 | |
1 | 메모리 버퍼 경계 설정 및 검사 | 메모리 버퍼를 사용하는 경우, 적절한 크기의 버퍼를 설정하고, 설정된 범위 내에서 읽고 쓸 수 있도록 통제 | 메모리 버퍼 오버플로우가 발생하지 않는다. | |
2 | 취약한 API 사용통제 | 취약한 API를 문서화하여 사용을 금지하고, 소스코드 리뷰를 통해 사용여부를 주기적으로 확인 | 취약한 API를 사용하지 않는다. |
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[설계보안] 입력데이터 검증 및 표현 10 - 업로드/다운로드 파일 검증 (0) | 2019.09.23 |
---|---|
[설계보안] 입력데이터 검증 및 표현 09 - 보안기능 동작에 사용되는 입력값 검증 (0) | 2019.09.23 |
[설계보안] 입력데이터 검증 및 표현 07 - HTTP 프로토콜 유효성 검증 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 06 - 웹 기반 중요기능 수행요청 유효성 검증 (0) | 2019.09.22 |
[설계보안] 입력데이터 검증 및 표현 05 - 웹 서비스 요청 및 결과 검증 (0) | 2019.09.22 |
- Total
- Today
- Yesterday