상세 컨텐츠

본문 제목

[新정보처리기사 실기] 소프트웨어 개발 보안 구축 (1/2)

카테고리 없음

by 주관적인 2020. 7. 18. 02:19

본문

1. 소프트웨어 개발 보안

2. SECURE SDLC

3. 세션 통제

4. 입력 데이터 검증 및 보안

5. 보안 기능

6. 시간 및 상태

7. 에러처리

8. 코드 오류

9. 캡슐화

10.  api 오용

11. 암호 알고리즘

 

 

1. 소프트웨어 개발 보안

 

a) 소프트웨어 개발 보안의 개요

 - 소프트웨어 개발 보안은 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 

안전한 소프트웨어를 개발하기 위한 일련의 보안 활동이다.

 o 소프트웨어 개발 보안은 데이터의 기밀성,무결성,가용성 유지가 목표

 o 소프트웨어 보안 취약점이 발생하는 경우

  1) 보안 요구사항이 정의되지 않는 경우

  2) 소프트웨어 설계시 논리적 오류가 포함된 경우

  3) 기술 취약점을 갖고 있는 코딩 규칙을 적용한 경우

  4) 소프트웨어의 배치가 적절하지 않는 경우

  5) 보안 취약점 발견시 적절하게 대응하지 못한 경우

 

o 안전한 소프트웨어 개발을 위한 수행 작업

  1) 충분한 보안 교육 실시

  2) 소프트웨어 개발 생명주기의 각 단계마다 보안 활동을 수행

  3) 소프트웨어 개발 보안을 위한 표준을 확립

  4) 재사용 가능한 모듈을 만들어, 유사한 소프트웨어 개발시 사용

  5) 보안 통제의 효과를 검증한다.

 

b) 소프트웨어 개발 보안 기관

활동 주체 역할
행정안전부 o 소프트웨어 개발 보안 정책을 총괄한다.
o 소포트웨어 개발 보안 관련 법규,지침,제도를 정비한다.
o 소프트웨어 보안 약점을 진단하는 사람의 양성 및 관련 업무를 수행한다
한국인터넷진흥원 o 소프트웨어 개발 보안 정책 및 가이드를 개발한다.
o 소프트웨어 개발 보안에 대한 기술을 지원하고, 교육과정 및 자격제도를 운영한다.
발주기관 o 소프트웨어 개발 보안의 계획을 수립한다.
o 소프트웨어 개발 보안 사업자 및 감리법인을 선정한다.
o 소프트웨어 개발 보안의 준수 여부를 점검한다.
사업자 o 소프트웨어 개발 보안 관련 기술 수준 및 적용 계획을 명시한다.
o 소프트웨어 개발 보안 관련 인력을 대상으로 교육한다.
o 자체적으로 보안 약점을 진단하고 제거한다.
o 소프트웨어 개발 보안 가이드를 참고하여 개발한다.
o 소프트웨어 개발 보안 약점과 관련된 시정 요구사항을 이행한다.
감리법인 o 감리 계획을 수립하고 협의한다.
o 소프트웨어 보안 약점의 제거 여부 및 조치 결과를 확인한다.

 

c) 소프트웨어 개발 보안 활동 관련 법령

 - 개인정보 보호법= 개인정보의 처리 및 보호에 관한 사항을 정함으로써 개인의 자유와 권리를 보호한다.

 - 정보통신망 이용촉진 및 정보보호 등에 관한 법률= 정보통신망의 이용 촉진 및 정보통신 서비스를 이용하는

이용자들의 개인정보를 보호한다.

 - 신용정보의 이용 및 보호에 관한 법률= 개인 신용정보의 효율적 이용과 체계적인 관리를 통해 정보의 오남용을 방지한다.

- 위치정보의 보호 및 이용 등에 관한 법률= 개인 위치정보의 안전한 이용 환경을 조성하여 정보의 유출이나 오남용을 방지한다.

- 표준 개인정보 보호 지침= 개인정보의 처리에 관한 기준, 개인정보 침해의 유형 및 예방조치 등에 관한 세부사항을 규정한다.

- 개인정보의 안전성 확보 조치 기준= 개인정보 처리자가 개인정보를 처리하는데 있어 개인정보가 분실,도난 유출,위조,변조,훼손되지 않도록 안전성 확보에 필요한 기술적,관리적,물리적 안전조치에 관한 최소한의 기준을 규정한다.

- 개인정보 영향평가에 관한 고시= 개인정보 영향평가를 위한 평가기관의 지정,영향평가의 절차 등에 관한 세부기준을 규정한다.

 

d) 소프트웨어 개발 보안 활동 관련 기타 규정

- RFID 프라이버시 보호 가이드라인= RFID 시스템의 이용자들의 프라이버시를 보호하고, 안전한 RFID 이용환 경을 조성하기 위한 가이드라인

- 위치정보의 보호 및 이용 등에 관한 법률=개인 위치정보의 안전한 이용 환경을 조성하여 정보의 유출이나 오남용을 방지하기 위한 법률

-위치정보의 관리적 , 기술적 보호조치 권고 해설서= 개인 위치정보의 누출,변조,훼손 등을 방지하기 위해 위치정보 사업자 및 위치기반 서비스 사업자가 준수해야 하는 관리적,기술적 보호조치의 구체적인 기준

-바이오정보 보호 가이드라인=개인 바이오정보의 보호와 안전한 활용을 위한 원칙 및 조치사항

-뉴미디어 서비스 개인정보 보호 가이드라인= 뉴미디어 서비스 이용 및 제공 시 개인 정보의 침해사고를 예방하기 위한

준수 사항

 

 

2. SECURE SDLC

 

a) Secure SDLC의 개요

-Secure SDLC는 보안상 안전한 소프트웨어 개발하기 위해 SDLC에 보안강화를 위한 프로세스를 포함한 것을 의미한다.

 *SDLC=소프트웨어 개발 생명주기

- secure SDLC의 대표적인 방법론에는 시큐어 소프트웨어 CLASP,마이크로소프트 SDL 이 있다.

 

b) 요구사항 분석 단계에서 보안 활동

 - 보안 항목에 해당하는 요구사항을 식별하는 작업 수행

 - 전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류한다

 - 보안 정책항목들의 출처,요구 수준,세부 내용 등을 문서화 한다.

 *보안 요소=기밀성,무결성,가용성,인증,부인 방지  

 

c) 설계 단계에서의 보안 활동

 - 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성한다.

 - 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책,소요예산,사고 발생시 영향 범위 및 대응책을 수립

  *위협= 불법적인 유출,위조,변조,삭제 파손등 소프트웨어에서 발생할 수 있는 재산상의 손해

 - 환경에 대한 보안통제 기준을 수립

   o 네트워크 = 외부의 사이버 공격으로부터 보호하기 위해 네트워크 분리 /방화벽 설치

   o 서버= 보안이 뛰어난 운영체제 사용 , 보안 업데이트 ,외부 접속에 대한 접근통제

   o 물리적 보안 = 출입통제,개발 공간 제한,폐쇄회로 등 감시 설비 설치

   o 개발 프로그램 = 허가되지 않는 프로그램 통제, 지속적인 데이터 무결성 검사

 

d) 구현 단계에서의 보안 활동

- 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항을 구현한다.

* 표준 코딩 정의서= 개발에 있어 네이밍 규칙,주석 첨부 방식을 정의해둔 문서

- 지속적인 단위 테스트를 통해 보안 취약점 최소화

- 소스 코드의 안전성을 확보

- 시큐어 코딩 사용 = 보안 취약점을 최소화 하기 위해 보안 요소를 고려하여 코딩하는 것

- 시큐어 코딩 가이드를 작성하고 개발 참여자에게 시큐어 코딩 교육을 실시 한다.

 

e) 테스트 단계에서의 보안 활동

 - 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검한다.

 - 정적 분석,동적 분석 ,모의 테스트를 통해 설계 단계에서 식별된 위협들의 해결여부를 검증

 - 설계 단계에서 식별된 위협들 외에도 취약점을 점검할 수 있도록 테스트 계획을 수립

 - 테스트 단계에서 수행한 모든 결과는 문서화하여 보존

 

f) 유지보수 단계에서의 보안 활동

 - 지속적인 보안사고들 식별 및 해결

 

 

3. 세션 통제

 

a) 세션 통제의 개요

 -세션이란 서버와 클라이언트의 연결을 의미하고, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리

 o 요구사항 분석 및 설계 단계에서 진단 해야 하는 보안 점검 내용

 o 불충한 세션 관리 , 잘못된 세션의 의한 정보노출이 보안 약점임.

 

b) 불충분한 세션 관리

 - 일정한 규칙이 존재하는 세션id가 발급되거나 타임아웃이 너무 길게 설정되어 생기는 보안 약점

 - 세션 하이재킹공격에 당할 우려가 있음

  * 세션 하이재킹= 서버에 접속하고 있는 클라이언트들의 세션정보를 가로채는 공격

 

c) 잘못된 세션에 의한 정보 노출

 - 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

  *다중 스레드= 시스템 자원을 할당받아 실행하는 프로그램의 단위가 2개 이상일 경우

  o 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나,멤버 변수가 노출될수도있음

   * 레이스 컨디션= 두개 이상의 프로세스가 공용 자원을 얻기 위해 경쟁하는 상태

  o 멤버 변수보다 지역 변수를 활용하여 방지 할수 있음

 

d) 세션 설계시 고려 사항

 - 시스템의 모든 페이지에서 로그아웃이 간으하도록 ui를 구성

 - 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 한다.

 - 세션 타임아웃은 중요도에 따라 2~30분만 사용

 - 이전 세션이 종료되야만 생성되도록 설계

 

e) 세션 id의 관리 방법

 - 세션 ID는 안전한 서버에서 최소 128비트의 길이 사용

 - 세션 ID는 예측이 불가능하도록 안전한 난수 알고리즘 사용

 - URL Rewrite 기능은 사용하지 않는 방향으로 설계

  * URl rewrite =url 에 세션id를 포함시키는 것

 - 로그인 시 로그인 전의 세션ID를 삭제하고 재 할당한다.

 

 

4. 입력 데이터 검증 및 보안

 

a) 입력 데이터 검증 및 표현의 개요

 -입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야하는 보안 점검 항목

  o 소프트웨어 개발의 구현단계에서 유효성 검증 체계를 갖춰야함

  1) 검증되지 않는 데이터를 처리

  2) 입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인

  3) 일관된 언어셋을 사용함.

 

b) 입력 데이터 검증 및 표현의 보안 약점

SQL 삽입 o 입력란에 SQL을 삽입하여 무단으로 DB조회 및 조작하는 보안 약점
o 동적 쿼리에 예약어 특수문자가 되지않도록 필터링
경로 조작 및 자원삽입 o 데이터 입출력 경로를 조작하여 서버 자원을 수정,삭제할 수 있는 보안 약점
o 사용자 입력값을 식별자로 사용하는 경우,경로 순회 공격을 막는 필터를 사용하여 막음.
*경로 순회= 경로를 탐색할때 사용되는 정규표현식을 악용하여 접근하는 것
크로스사이트 스크립팅(xss) o 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 시스템 장애를 유발하는 보안 약점
o html 태그의 사용 제한, 스크립트에 삽입 되지 않도록 특수문자를 치환하여 방지
운영체제 명령어 삽입 o 외부 입력값을 통해 시스템 명령어 실행을 유도함으로서 , 권한을 탈취하거나 시스템 장애를 입힘
o 웹 인터페이스를 통해 시스템 명령어가 전달 되지 않도록하고, 검증 없이 내부 명렁어 사용 못하도록 막음
위험한 형식 파일 업로드 o 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로서, 시스템에 손상 및 장애 줌
o 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹 사이트와 파일 서버의 경로 분리
,실행 속성을 제거
신뢰되지 않는 URL 주소로 자동접속 연결 o 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 피싱사이트로 유도
o 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지

 

 

5. 보안 기능

 

a) 보안 기능의 개요

 - 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증,접근제어,기밀성,암호화 등을 올바르게 구현하기 위한 

 보안 점검 항목들이다.

 

b) 보안 기능의 보안 약점

적절한 인증 없이 중요기능 허용 o 보안검사를 우회하여 인증 과정없이 중요한 정보 또는 기능에 접근 및 변경
o 재인증을 통해 방지 가능
부적절한 인가 o 접근제어 기능이 없는 실행결로를 통해 정보 또는 권한 탈취
o 모든 경로에서 접근제어 + 사용자에게 반드시 필요한 기능만 부여하여 방지
중요한 자원에 대한
잘못된 권한 설정
o 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용
o 소프트웨어 관리자만 자원들을 읽고 쓸수있게 하고, 인가된 사용자들은 접근 여부를 검사
취약한 암호화
알고리즘 사용
o 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요한 정보 탈취
o 안전한 암호화 알고리즘을 이용하고, it보안인증사무국이 안전성을 확인한 모듈을 이용
중요정보 평문 저장 및 전송 o 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보 흭득
o 반드시 암호화 하도록 하고 https ,ssl 같은 보안 채널 사용
하드코드 된 비밀번호 o 소스 코드 유출시 관리자 권한을 탈취
o 패스워드는 암호화하여 파일에 저장하고 디폴트 패스워나 디폴트 키는 사용방지

 

댓글 영역