- 3 - 소프트웨어 개발 보안 구축
1. Secure SDLC
1) 개요
Secure SDLC는 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것
소프트웨어 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장
소프트웨어 개발의 모든 과정에서 보안 위협 요소들을 고려하는 프로세스(절차)를 의미
방법론 : Secure Software 사의 CLASP, Microsoft 사의 SDL
보안활동 : 요구사항 분석, 설계, 구현, 테스트, 유지 보수
2) 요구사항 분석 단계의 보안활동
분석 단계에서는 보안 항목에 해당하는 요구사항을 식별하는 작업 수행
전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류
소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준, 세부 내용을 문서화
보안요소
기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
가용성 : 인가받은 사용자는 언제라도 사용 가능
인증 : 합법적인 사용자인지를 확인하는 행위
부인 방지 : 송수신한 사실을 부인할 수 없도록 증거를 제공
* 위 5가지의 보안요소가 기초입니다! 꼭 숙지하세요!
3) 설계 단계에서의 보안 활동
식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고 보안 설계서 작성
발생할 수 있는 위협을 식별해 보안대책, 소요예산, 사고발생 시 영향범위와 대응책을 수립
네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립해 설계에 반영
4) 구현 단계에서의 보안 활동
표준 코딩 정의서 및 소프트웨어 개발 보안가이드를 준수해 설계서에 따라 보안 요구사항들을 구현
지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화
코드 점검 및 소스코드 진단 작업을 통해 소스 코드의 안정성 확보
*시큐어 코딩 : 소프트웨어의 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안요소를 고려하며 코딩하는 것
5) 테스트 단계에서의 보안 활동
설계 단계에서 작성한 보안설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작하는지 점검
6) 유지보수 단계에서의 보안 활동
이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생시 이를 해결하고 보안패치를 실시
2. 세션 통제
1) 개요
세션은 서버와 클라이언트의 연결을 의미하고 세션 통제는 세션 연결과 연결로 인해 발생하는 정보를 관리하는 것이다.
세션 통제는 소프트웨어 개발 과정 중 요구사항 분석 및 설계단계에서 진단해야하는 보안 점검 내용이다.
보안 약점
불충분한 세션관리 : 일정한 규칙이 존재하는 세션 ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안 약점. 세션 관리가 충분하지 않으면 침입자는 세션 하이재킹(세션 가로채기)과 같은 공격을 통해 중요한 정보에 접근할 수 있음.
잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점. 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있음. 멤버 변수보다 지역변수 활용할 것.
*레이스 컨디션 : 두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태
2) 세션 설계시 고려 사항
시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성
중복 로그인을 허용하지 않은 경우 클라이언트의 중복 접근에 대한 세션 관리 정책을 수립
패스워드 변경시 활성화된 세션을 삭제하고 재할당
3) 세션ID 관리방법
세션 ID가 노출되지 않도록 URL Rewrite 기능(쿠키를 사용할 수 없는 환경에서 세션 ID전달을 위해 Url에 세션 ID를 포함시키는 것)을 사용하지 않는 방향으로 설계
3. 입력 데이터 검증 및 표현
1) 개요
입력데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야하는 보안 점검 항목들
입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인하고, 일관된 언어 셋을 사용하도록 코딩한다.
2) 입력 데이터 검증 및 표현의 보안 약점
SQL 삽입 | 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 |
경로 조작 및 자원 삽입 | 사용자 입력값을 식별자로 사용하는 경우 경로 순회 공격을 막는 필터를 사용해 방지 |
크로스사이트 스크립팅(XSS) | HTML 태그 사용 제한, ‘<’, ‘>’, ‘&’ 등의 문자가 스크립트에 삽입되지 않도록 다른 문자로 치환 |
운영체제 명령어 삽입 | 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로 방지 |
위험한 형식 파일 업로드 | 업로드 되는 파일의 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버의 경로 분리 등으로 방지 |
신뢰되지 않는 Url 주소로 자동접속 연결 | 연결되는 외부 사이트의 주소를 화이트 리스트로 관리 |
4. 보안 기능
1) 개요
소프트웨어 개발 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
보안 기능들은 서비스 환경이나 취급데이터에 맞게 처리되도록 구현
사용자별로 중요도를 구분, 차별화된 인증방안 적용
개별적으로 접근 권한을 부여해 인가되지 않은 기능과 데이터로의 접근을 차단
개인정보나 인증정보의 변조, 삭제, 오남용을 방지하기 위해 안전한 암호화 기술 적용
2) 보안기능의 보안 약점
적절한 인증 없이 중요기능 허용 | 재인증 기능 수행 |
부적절한 인가 | 모든 실행경로에 접근 제어 검사 수행. 사용자에게는 반드시 필요한 접근 권한만을 부여 |
중요한 자원에 대한 잘못된 권한 설정 | 소프트웨어 관리자만 자원들을 읽고 쓸수 있도록 설정. 중요 자원에 대한 접근 여부를 검사 |
취약한 암호화 알고리즘 사용 | IT보안인증사무국이 안정성을 확인한 암호모듈 이용 |
중요정보 평문 저장 및 전송 | HTTPS 또는 SSL과 같은 보안 채널을 이용 |
하드코드된 비밀번호 | 디폴트 패스워드나 디폴드 키의 사용을 피함 |
'2020 정보처리기사 필기 > 5과목 - 정보시스템 구축 관리' 카테고리의 다른 글
[2020 정보처리기사 필기 요약] 5과목 - 정보시스템 구축 관리(시스템 보안 구축) (0) | 2020.08.20 |
---|---|
[2020 정보처리기사 필기 요약] 5과목 - 정보시스템 구축 관리(소프트웨어 개발 보안 구축_2) (0) | 2020.08.20 |
[2020 정보처리기사 필기 요약] 5과목 - 정보시스템 구축 관리(IT프로젝트 정보시스템 구축 관리_5) (0) | 2020.08.20 |
[2020 정보처리기사 필기 요약] 5과목 - 정보시스템 구축 관리(IT프로젝트 정보시스템 구축 관리_4) (0) | 2020.08.20 |
[2020 정보처리기사 필기 요약] 5과목 - 정보시스템 구축 관리(IT프로젝트 정보시스템 구축 관리_3) (0) | 2020.08.16 |