[정보처리기사] 실기 정리 - 9과목 (2)

peach·2020년 10월 8일
4

정보처리기사

목록 보기
25/34
post-thumbnail

🧀 SW 개발 보안 구현


1. 시큐어 코딩 가이드

설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법


2. 입력 데이터 검증 및 표현

프로그램 입력값에 대한 검증 누락, 부적절한 검증, 데이터의 잘못된 형식 지정 등으로 인해 발생하는 보안 약점

(1) SQL 삽입

웹 애플리케이션에서 입력 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력창 및 URL에 SQL문을 삽입하여 DB로부터 정보를 열람 및 조작할 수 있는 공격 기법

매개변수를 받는 preparedStatement 객체를 상수 문자열로 생성하고 파라미터 부분을 setString 메서드로 설정하여 외부 입력이 쿼리문의 구조를 바꾸는 것을 방지해야 함

(2) 크로스 사이트 스크립트(XSS) 공격

웹 페이지에 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도하는 공격 기법

  • reflected XSS - request.getParameter()에서 발생
  • stored XSS - ${파라미터}에서 발생
  • DOM XSS - document.write()에서 발생

외부 입출력값에 스크립트가 삽입되지 못하도록 & < > " ' / ( ) 등에 대해 문자열 치환 함수를 구현해야 함

(3) 경로 조작 및 자원 삽입

(4) 운영체제 명령어 삽입


3. 보안 기능

보안 기능을 부적절하게 구현하는 경우 발생할 수 있는 보안 약점

(1) 인증 관련 보안 약점

  • 적절한 인증 없는 중요 기능 허용
  • 반복된 인증 시도 제한 기능의 부재
  • 취약 패스워드 허용

(2) 권한 관리 보안 약점

  • 중요 자원에 대한 잘못된 권한 설명
  • 부적절한 인가

(3) 암호화 보안 약점

  • 취약 암호화 알고리즘 사용
  • 충분하지 않은 키 길이 사용
  • 하드코딩된 비밀번호
  • 부적절한 난수 사용
  • 솔트 없는 일방향 해시 함수 사용

(4) 중요 정보 처리 시 보안 약점

  • 중요 정보 평문 저장
  • 중요 정보 평문 전송

4. 시간 및 상태

동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점

(1) 경쟁 조건

동일 자원에 대한 검사 시점과 사용 시점이 상이하여 동기화 오류, 교착 상태를 유발

synchronized , mutex를 사용해 한 번에 하나의 프로세스만 접근 가능하도록 해야 함

(2) 종료되지 않는 반복문 또는 재귀 함수

종료 조건이 없어 무한 루프에 빠져 자원 고갈을 유발

재귀 함수의 종료 조건을 정의하고 반복문의 흐름 검증을 수행해야 함


5. 에러 처리

에러를 처리하지 않거나 불충분하게 처리하여 에러 정보에 중요 정보가 포함될 때 발생할 수 있는 보안 약점

(1) 오류 메시지 정보 노출

응용 프로그램의 민감 정보가 오류 메시지를 통해 노출됨

오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함해야 함

(2) 오류 상황 대응 부재

예외 처리를 구현하지 않음

if문이나 switch문, try-catch문을 사용해야 함

(3) 부적절한 예외 처리

프로그램 수행 중 발생한 예외 조건을 적절히 검사하지 않음

함수 결과값의 적정성 검증 및 구체적인 예외 처리를 수행해야 함


6. 코드 오류

개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점

(1) 널 포인터 역참조

널 값을 고려하지 않은 코드에서 발생

값을 참조하기 전에 널 값인지 검사해야 함

(2) 부적절한 자원 해제

자원을 할당받아 사용한 뒤 반환하기 않는 코드에서 발생

자원을 사용한 뒤에는 반드시 해제해야 함

(3) 해제된 자원 사용

해제한 메모리를 참조하는 코드에서 발생

메모리 할당 해제 후에 포인터에 널 값을 저장해야 함

(4) 초기화되지 않은 변수 사용

지역변수를 초기화하지 않고 사용하는 코드에서 발생

모든 변수는 사용하기 전에 초기값을 할당해야 함


7. 캡슐화

중요한 데이터 또는 기능성을 불충분하게 캡슐화하거나 잘못 사용해 발생하는 보안 약점

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

멀티 스레드 환경에서 서로 다른 세션 간 데이터가 공유될 수 있음

싱글톤 패턴 사용 시 변수 적용 범위에 주의해야 함

(2) 제거되지 않은 디버그 코드

배포 단계에 디버그 코드가 남아 있는 경우 민감 정보가 노출될 수 있음

배포 전 디버그 코드를 확인하고 삭제해야 함

(3) 시스템 정보 노출

시스템 내부 데이터가 노출될 수 있음

예외 상황 발생 시 시스템 내부 정보가 화면에 노출되지 않도록 해야 함


8. API 오용

의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점

(1) DNS에 의존한 보안 결정

공격자가 DNS 정보를 변조하여 보안 결정을 우회 가능함

DNS로 확인된 정보 대신 IP 주소를 사용해야 함

(2) 취약한 API 사용

금지되거나 안전하지 않은 함수를 사용함

안전한 함수를 사용해야 함



🧀 SW 개발 보안 테스트


1. 개념

소프트웨어 보안 요구 사항이 반영되어 있음을 보증하고, 취약점을 발견 및 개선하여 안전한 소프트웨어를 개발하기 위한 활동


2. 유형

(1) 화이트박스 테스트

프로그램 내부 로직을 보면서 수행하는 테스트
정적 분석, 구조 테스트, 개발 단계

(2) 블랙박스 테스트

프로그램 외부 사용자의 요구 사항 명세를 보면서 수행하는 테스트
동적 분석, 기능 테스트, 시험 단계


3. 절차

(1) 준비 단계

대상 선정, 일정 수립

(2) 실행 단계

테스트 수행

(3) 개선 단계

보고서 발행, 지적사항 해결

(4) 관리 단계

결함 해결 사항 보고, 점검된 소스코드 관리

(5) 종료 단계

보안 상황 보고




🐭 참고문헌

  • NCS 정보처리기술사 연구회. (2020). 수제비 정보처리기사 실기 (2판). 건기원.

0개의 댓글