분류: 입력데이터 검증 및 표현 / 메모리 버퍼 오버플로우, 포맷 스트링 삽입
가. 항목명
허용된 범위 내 메모리 접근
나. 취약점 설명
버퍼 오버플로우: 스택이나 힙에 할당되는 메모리에 문자열 등이 저장될 때 정의된 메모리 크기를 초과하여 문자열을 저장하는 경우 버퍼 오버플로우가 발생하는 취약점
포맷스트링: 공격자가 외부입력값에 포맷 문자열을 삽입하여 취약한 프로세스를 공격하거나 매모리 내용을 읽기/쓰기 권한을 취득하여 임의의 코드를 실행하는 취약점
다. 보안대책
① 메모리를 사용하는 플랫폼에서 메모리 버퍼의 경계값을 넘어서 메모리를 읽거나 저장하지 않도록 설계
② 메모리 버퍼오버플로우가 발생시킬 수 있는 취약한 API를 사용하지 않도록 설계
라. 설계시 고려사항
① 메모리 관리하는 플랫폼에서 메모리 버퍼의 경계값을 넘어서 읽기/쓰기 여부를 검사
- 메모비리 보호 정책(예, Non-executable Stack, 랜덤스택(ASLR), 스택가드(StackGuard)) 적용
- 메모리 사용 시 경계 값을 검사하고 사용
② 메모리 버퍼 오버플로우를 발생시키는 취약한 API를 사용하지 않도록 설계
마. 진단기준 및 세부사항
① 메모리 버퍼 경계값을 검사
- 리눅스 환경의 경우 ASLR, StackGuard와 같은 메모리 보호를 위한 설정 확인
- 배열의 값을 다른 배열로 복사하는 경우 데이터의 길이를 검사
- 할당된 메모리보다 더 큰 입력 값을 사용하여 버퍼오버플로우 검사(테스트 입력값: 충분히 큰 문자열)
② 취약한 API 사용 통제
- 메모리 버퍼 오버플로우를 발생시키는 API를 정의하고 코딩규칙 적용 확인
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |
'보안 > SW보안약점 진단원' 카테고리의 다른 글
[설계보안] 보안기능-업로드/다운로드 파일검증 (0) | 2022.06.24 |
---|---|
[설계보안] 보안기능-입력값 검증 (0) | 2022.06.24 |
[설계보안]HTTP 프로토콜 유효성 검증 (0) | 2022.06.24 |
[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증 (0) | 2022.06.23 |
[설계보안] 웹 서비스 요청 및 결과 검증 (0) | 2022.06.22 |