[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.2) 보안 기능, 에러처리, 코드 오류

728x90

[정처기 필기] 5」 | 소프트웨어 개발 보안 구축 - (3.2) 보안 기능, 에러처리, 코드 오류

「1」 소프트웨어 설계

「2」 소프트웨어 개발

「3」 데이터베이스 구축

「4」  프로그래밍 언어 활용

> 「5」  정보시스템 구축 관리

- 소프트웨어 개발 방법론 활용, IT프로젝트 정보 시스템 구축 관리, > 소프트웨어 개발 보안 구축, 시스템 보안 구축

 

1 Secure SDLC

2 세션 통제

3 입력 데이터 검증 / 표현

> 4 보안 기능

> 5 에러처리

> 6 코드 오류

7 캡슐화

8 암호 알고리즘

4. 보안 기능

보안 기능의 개요

 

인증, 접근제어, 기밀성, 암호화 등 올바르게 구현하기 위한 보안 점검 항목

 

- 서비스 환경, 취급 데이터에 맞게 처리되도록 구현해야 함

- 소프트웨어 기능, 데이터에 접근하려는 사용자별로 중요도 구분하고, 차별화된 인증 방안 적용

- 개별적으로 접근 권한 부여하여 인가되지 않은 기능, 데이터로의 접근을 차단

- 개인정보, 인증정보 같은 정보의 변조 / 삭제 / 오남용 등 방지하기 위해 안전한 암호화 기술 적용

 

보안 기능의 보안 약점

 

적절한 인증 없이 중요 기능 허용

: 보안 검사를 우회하여 인증과정 없이 중요정보, 기능에 접근 / 변경 가능

: 중요정보, 기능을 수행하는 페이지에서 재인증 기능 수행하도록 하여 방지

 

부적절한 인가

: 접근제어 기능이 없는 실행경로정보, 권한 탈취

: 모든 실행경로에 대해 접근제어 검사 수행, 사용자에게 필요한 접근 권한만 부여하여 방지

 

중요 자원에 대한 잘못된 권한 설정

: 권한 설정이 잘못된 자원에 접근하여 해당 자원 임의로 사용

: 소프트웨어 관리자만 자원들을 읽고 쓰도록 설정, 인가되지 않은 사용자의 중요 자원에 대한 접근 여부 검사하여 방지

 

취약한 암호화 알고리즘 사용

: 암호화된 환경설정 파일을 해독하여 비밀번호 등 중요정보 탈취

: 안전한 암호화 알고리즘 이용, 업무내용이나 개인정보 등 IT 보안인증사무국이 안정성을 확인한 암호모듈 이용하여 방지

 

중요정보 평문 저장 / 전송

: 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득

: 중요 정보 저장 / 전송 시 암호화 과정 거치도록 하고, HTTPS / SSL 같은 보안 채널 이용하여 방지

 

하드코드된 비밀번호

: 소스코드 유출 시 내부에 하드코드(데이터를 코드 내부에 직접 입력하여 프로그래밍)된 패스워드를 이용하여 관리자 권한 탈취

: 패스워드는 암호화하여 별도 파일에 저장, 디폴트 패스워드나 디폴트 키 사용을 지양하여 방지

5. 에러처리

에러처리의 개요

 

오류를 사전에 정의하여 문제를 예방하기 위한 보안 점검 항목

 

- 예외처리 구문을 통해 오류에 대한 사항을 정의

- 중요 정보를 노출시키거나, 소프트웨어 실행 중단

- 오류 메시지를 통한 정보노출, 오류 상황 대응 부재, 부적절한 예외처리

 

오류 메시지를 통한 정보노출

 

오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등 중요 정보를 소프트웨어가 메시지로 외부에 노출

 

- 오류 메시지를 통해 노출되는 경로 / 디버깅 정보는 해커의 악의적 행위를 도움

- 예외처리 구문에 예외 이름, 스택 트레이드를 출력하도록 코딩한 경우, 해커가 소프트웨어 내부구조를 쉽게 파악 가능

- 오류 발생 시 내부에서만 처리, 메시지 출력 시 최소한의 정보와 사전에 준비된 메시지만 출력하여 방지

 

오류 상황 대응 부재

 

예외처리 하지 않았거나, 미비로 인해 발생

 

- 소프트웨어 실행 중단, 의도를 벗어난 동작 유도

- 예외처리 구문 작성, 제어문 활용하여 오류가 악용되지 않도록 코딩하여 방지

 

부적절한 예외처리

 

함수의 반환값, 오류를 세분화하여 처리하지 않고 광범위하게 묶어 한번에 처리, 누락된 예외가 존재 시 발생

 

- 예상했던 결과와 다른 값 반환하여 예외로 처리되지 않은 경우

- 모든 함수의 반환값이 의도대로 출력되는지 확인, 세분화된 예외처리를 수행하여 방지

6. 코드 오류

코드 오류의 개요

 

개발자들이 실수하기 쉬운 형(Type) 변환, 자원 반환 등 오류를 예방하기 위한 보안 점검 항목

 

- 널 포인터 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지 않은 변수 사용

 

널 포인터 역참조

 

널 포인터가 가리키는 메모리에 어떤 값을 저장할 때 발생

 

- 오류 발생 시 널 값 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생

- 널 포인터는 메모리의 첫 주소를 가리키며, 해당 주소를 참조할 경우 소프트웨어가 비정상적으로 종료

- 공격자가 널 포인터 역참조로 발생하는 예외상황을 악용

- 널이 될 수 있는 포인터를 이용하기 전 널 값을 가지는지 검사하여 방지

 

>스택 가드(Stack Guard)<

 

- 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나

- 메모리 상 프로그램의 복귀 주소, 변수 사이 특정 값 저장변경되었을 때 오버플로우 상태로 판단하여 프로그램 실행을 중단하여 잘못된 복귀 주소의 호출을 막는 기술

 

부적절한 자원 해제

 

자원을 반환하는 코드를 누락, 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생

 

- 힙 메모리, 소켓유한한 시스템 자원이 계속 점유되면 자원 부족으로 새로운 입력 처리 불가

- 자원 반환 코드가 누락되었는지 확인, 오류로 인해 함수가 중간에 종료되었을 때 예외처리에 관계없이 자원이 반환되도록 코딩하여 방지

 

해제된 자원 사용

 

이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생

 

- 예상치 못한 값, 코드를 수행하여 의도하지 않은 결과 발생

- 반환된 메모리에 접근할 수 없도록 주소를 저장하는 포인터를 초기화하여 방지

 

초기화되지 않은 변수 사용

 

변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생

 

- 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전의 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요 정보 악용 가능

- 변수 선언 시 할당된 메모리 초기화하여 방지

 

 

 

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90