예전에는 구현단계 즉 최종 개발완료된 산출물에 대해서 시큐어코딩의 적용여부를 검사했지만
지금은 분석/설계단계부터 개발보안 가이드를 기준으로 시큐어코딩의 적용여부를 체크하도록
되어 있다.
SW보안약점진단원 준비할려면 열심히 외워야 하는 부분이 더 늘어난 셈이다. ㅠㅠ
이번장에서는 소프트웨어 개발보안 가이드 중 '분석/설계' 단계에서의 진단항목에 대해서
알아보고자 한다.
분석/설계 단계에서의 개발보안 항목은 크게 4가지로 분류를 한다.
SR1. 입력데이터 검증 및 표현 | 사용자가 입력하는 값에 대한 유효성체크를 주로 다룬다. |
SR2. 보안기능 | 중요정보에 대한 인증,전송,접근통제,저장 등을 주로 체크한다. |
SR3. 에러처리 | 에러메시지에 대한 과도한 정보노출 등에 대해서 다룬다. |
SR4. 세션통제 | 세션에 대한 해킹 방지를 위한 설계가 되어 있는지 확인한다. |
각 세션별로 점검항목이 무엇이 있는지 간략하게 설명하면 다음과 같다
SR1. 입력데이터 검증 및 표현
번호 | 항목명 | 설명 | 비고 |
SR1-1 | DBMS 조회 및 결과 검증 | DBMS 조회를 위한 질의문(SQL) 생성시 사용되는 입력값 과 조회결과에 대한 검증방법 (예, 필터링) 설계 및 유효 하지 않은 값에 대한 처리방법설계 |
입.출력값 검증 |
SR1-2 | XML 조회 및 결과 검증 | XML조회를 위한 질의문 (XPath, XQuery) 생성 시 사용 되는 입력값과 조회결과값에 대한 검증방법 설계 및 유효하지 않은 값에 대한 처리 방법 설계 |
|
SR1-3 | 디렉터리 서비스 조회 및 결과 검증 |
디렉터리 서비스 조회 (LDAP) 시 사용되는 입력값과 조회결과에 대한 검증방법 설계 및 유효하지 않은 값에 대한 처리 방법 설계 |
|
SR1-4 | 시스템 자원 접근 및 명령어 수행 입력값 검증 |
시스템 자원 접근 및 명령어 수행을 위해 사용되는 입력값 에 대한 유효성 검증방법과 유효하지 않은 값에 대한 처리 방법 설계 |
|
SR1-5 | 웹서비스 요청결과 및 검증 |
웹서비스(게시판 등) 요청 (스크립트 게시) 과 응답결과 (스크립트 포함 웹페이지 등) 에 대한 검증방법과 적절하지 않은 데이터에 대한 처리방법 설계 |
|
SR1-6 | 웹기반 중요기능 수행요청 유효성 검증 |
사용자 권한 확인(인증 등) 이 필요한 중요기능 (결제) 에 대한 웹서비스 요청에 대한 유효성 검증방법과 유효 하지 않은 값에 대한 처리 방법 설계 |
|
SR1-7 | HTTP 프로토콜 유효성 검증 |
비정상적인 HTTP 헤더, 자동연결 URL링크 등 사용자가 원하지 않는 결과를 생성할 수 있는 HTTP헤더 및 응답 결과에 대한 유효성 검증방법과 유효하지 않은 값에 대한 처리 방법 설계 |
|
SR1-8 | 허용된 범위내 메모리 접근 |
허용된 범위의 메모리 버퍼에만 접근하여 저장 또는 읽기가 수행되어 버퍼오버플로우가 발생하지 않도록 처리방법 설계 |
|
SR1-9 | 보안기능 동작에 사용되는 입력값 검증 |
보안기능 (인증,인가,권한부여 등) 등 프로그램 동작을 위해 사용되는 입력값과 함수 (또는 메소드) 의 외부입력값 및 수행결과에 대한 처리 방법 설계 |
|
SR1-10 | 업로드.다운로드 파일 검증 |
업로드.다운로드 파일의 무결성,실행권한 등에 관한 유효 성 검사 방법을 설계하고, 검사 실패시 대응방안 설계 |
파일관리 |
SR2. 보안기능
번호 | 항목 | 설명 | 비고 |
SR2-1 | 인증 대상 및 방식 | 중요정보.기능과 인증방식을 정의 정의된 중요정보 접근 및 중요기능 수행허용을 위해 인증기능이 우회되지 않고 수행될 수 있도록 설계 |
인증관리 |
SR2-2 | 인증 수행 제한 | 인증 반복시도 제한 및 인증실패 등에 대한 인증제한 기능 설계 |
|
SR2-3 | 비밀번호 관리 | 안전한 비밀번호 조합규칙 - 비밀번호 길이 - 허용문자 조합 등 을 설정하고 주기적으로 변경하도록 설계 (하드코딩 금지) |
|
SR2-4 | 중요자원 접근통제 | 중요자원 (프로그램 설정, 민감한 사용자 데이터 등) 을 정의하고 정의된 중요자원에 대한 접근통제하는 신뢰할수 있는 방법 및 접근통제 실패시 대응방안 설계 |
권한관리 |
SR2-5 | 암호키 관리 | 암호키 생성,분배,접근,파기 등 안전하게 암호키 생명주기 를 관리할 수 있는 방법 설계 |
암호화 |
SR2-6 | 암호연산 | 국제표준 또는 검증필 프로토콜로 등재된 안전한 암호 알고리즘을 선정하여 충분한 암호키 길이, 솔트, 충분한 난수값을 기반으로 암호연산 수행방법 설계 |
|
SR2-7 | 중요정보 저장 | 중요정보 (비밀번호, 개인정보 등) 저장시 안전한 저장 및 관리방법 설계 |
중요정보 처리 |
SR2-8 | 중요정보 전송 | 중요정보 (비밀번호, 개인정보 등) 전송시 안전한 전송 방법 설계 |
SR3. 에러처리
번호 | 항목명 | 설명 | 비고 |
SR3-1 | 예외처리 | 오류메시지에 중요정보 (개인정보, 시스템정보, 민감정보) 가 포함되어 출력되거나, 에러 및 오류가 부적절하게 처리 되어 의도치 않은 상황이 발생하는 것을 막기 위한 안전한 방안 설계 |
SR4. 세션통제
번호 | 항목명 | 설명 | 비고 |
SR4-1 | 세션통제 | - 다른 세션간 데이터 공유금지 - 세션ID 노출금지 - (재)로그인시 세션ID 변경 - 세션종료 (비활성화, 유효기간 등) 처리 등 세션을 안전하게 관리할 수 있는 방안 설계 |
위에서 설명한 "분석/설계" 단계에서의 개발보안 항목은 결국 "구현"단계에서의 개발보안 항목과
연결이 되어 질수 밖에 없다.
구현단계에 대해서는 다음 편에서 소개를 하고 여기서는 간단하게 두 단계간의 매핑구조만 설명한다.
구분 | 분석/설계 항목 | 구현단계 보안약점 |
입력 데이터 검증 및 표현 |
DBMS 조회 및 결과 검증 | SQL 삽입 |
XML 조회 및 결과 검증 | XQuery 삽입 XPath 삽입 |
|
디렉터리 서비스 조회 및 결과 검증 |
LDAP 삽입 | |
시스템 자원 접근 및 명령어 수행 입력값 검증 |
경로조작 및 자원삽입 운영체제 명령어 삽입 |
|
웹서비스 요청결과 및 검증 |
크로스사이트 스크립트 (XSS) | |
웹기반 중요기능 수행요청 유효성 검증 |
크로스사이트 요청위조 | |
HTTP 프로토콜 유효성 검증 |
신뢰되지 않은 URL 주소로 자동접속 연결 HTTP 응답분할 |
|
허용된 범위내 메모리 접근 |
포맷스트링삽입, 메모리 버퍼 오버플로우 | |
보안기능 동작에 사용되는 입력값 검증 |
보안기능 결정에 사용되는 부적절한 입력값 정수형 오버플로우 Null Pointer 역참조 |
|
업로드.다운로드 파일 검증 |
위험한 형식 파일 업로드 무결성 검사 없는 코드 다운로드 |
|
보안기능 | 인증 대상 및 방식 | 적절한 인증 없는 중요기능 허용 DNS Lookup 에 의존한 보안 결정 |
인증 수행 제한 | 반복된 인증시도 제한 기능 부재 | |
비밀번호 관리 | 하드코드된 비밀번호 취약한 비밀번호 허용 |
|
중요자원 접근통제 | 부적절한 인가 중요한 자원에 대한 잘못된 권한 설정 |
|
암호키 관리 | 하드코드 된 암호화 키 주석문 안에 포함된 시스템 주요 정보 |
|
암호연산 | 취약한 암호 알고리즘 사용 충분하지 않은 키 길이 사용 적절하지 않은 난수값 사용 솔트 없이 일방향 해시함수 사용 |
|
중요정보 저장 | 중요정보 평문저장 하용자 하드디스크에 저장되는 쿠키를 통한 정보노출 |
|
중요정보 전송 | 중요정보 평문전송 | |
에러처리 | 예외처리 | 오류메시지를 통한 정보노출 시스템 데이터 정보노출 |
세션통제 | 세션통제 | 잘못된 세션에 의한 데이터 정보 노출 |
[출처 : 전자정부 SW개발.운영자를 위한 소프트웨어 개발보안 가이드]
[출처 : 2018년도 SW보안약번점진단원 교육 자료]
'정보보안' 카테고리의 다른 글
SW보안약점진단원 : 분석/설계단계 - 보안기능 (0) | 2019.11.20 |
---|---|
SW보안약점진단원 : 분석/설계단계 - 입력 데이터 검증 및 표현 (1) | 2019.11.19 |
소프트웨어 개발 보안 (0) | 2019.11.17 |
해시값(Hash Value)과 해시함수(Hash Function) (0) | 2019.11.09 |
블록체인 도입시 보안이슈 (금융편) (0) | 2019.11.06 |