< 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 |