본문 바로가기

자격증/정보처리기사 - 실기

소프트웨어 개발 보안 구축

728x90

< SW 개발 보안 >

데이터의 기밀성, 무결성, 가용성 유지 목표

● 보안 취약점이 발생하는 경우

- 보안 요구사항이 정의되지 않은 경우   - SW 설계 시 논리적 오류가 포함된 경우

- 취약점을 가진 코딩 규칙 적용할 경우

● 활동 주체별 개발 보안 역할

- 행정안전부 : SW 개발 보안 정책 총괄, 법규/지침/제도 정비

- KISA : 보안 정책/가이드 개발, 보안에 대한 기술 지원

- 발주기관 : 보안 계획 수립, 보안 준수 여부 점검

- 사업자 : 보안 가이드를 참조하여 개발, 보안 약점 진단 후 제거, 보안 약점과 관련된 시정 요구사항 이행

- 감리법인 : 감리 계획 수립, 보안 약점의 제거 여부/결과 확인

● 보안 활동 법령

- 개인정보 보호법 : 개인의 자유와 권리 보호

- 개인정보의 안전성 확보 조치 기준 : 개인정보가 분실, 도난, 위조, 변조 되지 않도록 하는 최소한의 기준 규정

 

< Secure SDLC >

● 보안 이슈를 해결하기 위해 소요되는 비용을 최소화

● SDLC 전 단계에 걸쳐 수행할 보안 활동 제시

1. 분석 : 보안 수준을 보안 요소별로 등급을 구분하여 분류

2. 설계 : 보안대책, 소요예산, 사고 발생 시 영향 범위 수립

3. 구현 : SW 개발 보안 가이드/표준 코딩 정의서 준수

( 시큐어 코딩 : 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하며 코딩 )

● 보안 요소 : 기밀성, 무결성, 가용성, 인증

 

< 세션 통제 >

세션간 연결로 발생하는 정보 관리

● 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션 ID, 타임아웃이 너무 길게 설정된 경우

● 세션 설계 시 고려사항 : 로그아웃 시 할당된 세션이 완전히 제거되도록, 모든 페이지에서 로그아웃 구현

● 다중 스레드 환경에서의 보안 약점 -> 지역 변수 활용

 

< 입력 데이터 검증 >

- SQL 삽입 : 입력란에 SQL을 삽입하여 DB 조회/조작 -> 특수문자 입력되지 않게

- 경로 조작 및 자원 삽입 : 데이터 입/출력 경로를 조작하여 서버 자원을 수정/삭제 -> 경로 순회 공격 막는 필터 사용

- 크로스사이트 스크립팅 : 웹페이지에 악의적인 스크립트 삽입하여 방문자들의 정보 탈취 -> HTML 태그 사용 제한

- 위험한 형식 파일 업로드 : 악의적인 명령어가 포함된 스크립트 파일을 업로드하여 시스템에 손상 줌 -> 파일명 암호화

 

< 보안 기능 >

- 적절한 인증 없이 중요기능 허용 : 보안검사 우회하여 중요한 정보/기능에 접근 -> 재인증 기능 수행

- 부적절한 인가 : 접근제어 기능이 없는 실행경로를 통해 정보/권한 탈취 -> 모든 실행경로에 접근제어 검사 수행

- 취약한 암호화 알고리즘 : 파일을 해독하여 비밀번호 등 중요정보 탈취 -> 안전한 암호화 알고리즘 이용

- 중요정보 평문 저장 및 전송 : 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보 획득 -> HTTPS 등 보안 채널 이용

- 하드코드된 비밀번호 : 소스코드 유출 시 하드코드된 PW를 이용하여 관리자 권한 탈취 -> PW는 별도 파일저장

 

< 시간/상태 >

- TOCTOU 경쟁조건 : 검사 시점과 사용 시점을 고려하지 않고 코딩 시 -> 코드 내 동기화 구문 사용

- 종료되지 않는 반복문, 재귀함수 : 서비스/시스템이 자원고갈로 정지/종료 -> 재귀함수 수행 횟수 제한

 

< 에러처리 >

- 스택 트레이스 : 오류가 발생한 위치를 추적하기 위해 SW가 실행 중 호출한 메소드의 리스트를 기록

- 예외처리

 

< 코드오류 >

- NULL 포인트 역참조 : 포인터에 NULL이 저장되어 있을 때 발생 -> NULL 이 될수 있는 포인터 이용 전 NULL 값 검사

- 부적절한 자원 해제 : 자원 반환 코드 누락으로 자원 부족 발생 -> 함수가 중간종료 되었을 때 예외처리에 관계없이 자원 반환되도록 코딩

- 해제된 자원 사용 : 이미 종료되어 반환된 메모리를 참조 시 의도치 않은 결과 발생 -> 포인터 초기화

- 초기화되지 않은 변수 사용 : 변수 선언 후 부여되지 않은 변수 사용으로 외부에 정보 노출 -> 변수 선언시 초기화

 

< 캡슐화 >

정보 은닉

- 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 발생, 동기화 오류가 발생 -> 변수 범위 제한

- 제거되지 않고 남은 디버그 코드 : 디버그 코드로 인해 정보 노출 -> 디버그 코드 삭제

- Public 메소드로부터 반환된 Private 배열 : 배열의 주소가 외부로 공개되어 외부에서 접근 가능 -> Private 배열을 별도 메소드를 통해 조작

- Private 배열에 Public 데이터 할당 : Private 배열을 외부에서 접근 가능 -> Public으로 선언된 데이터를 Private 배열에 저장 시 값을 직접 입력

 

< 암호 알고리즘 >

● 개인키 암호화 기법 : 동일한 키로 암호화/복호화

● 공개키 암호화 기법 : 암호화에 사용되는 공개키는 사용자에게 공개, 복호화에 사용되는 비밀키는 관리자가 관리

● 양방향 알고리즘

- SEED : 블록 크기는 128Bit, KISA에서 개발

- ARIA : 블록 크기는 128Bit, 국가정보원과 산학연협회가 개발

- DES : NBS에서 발표한 개인키 암호화 알고리즘

- AES : NIST에서 발표, 블록 크기는 128Bit

- RSA : 큰 숫자는 소인수분해하기 어렵다에 기반

● 해시 : 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환

'자격증 > 정보처리기사 - 실기' 카테고리의 다른 글

정처기 용어 정리  (0) 2020.10.17
응용 SW 기초 기술 활용  (0) 2020.10.03
SQL 응용  (0) 2020.10.02
애플리케이션 테스트 관리  (0) 2020.10.01
화면 설계  (0) 2020.10.01