[정처기 필기] 「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 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「5」 | 시스템 보안 구축 - (4.1) 서비스 공격 유형 (1) | 2024.02.25 |
---|---|
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.3) 캡슐화, 암호 알고리즘 (1) | 2024.02.25 |
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.1) Secure SDLC, 세션 통제, 입력 데이터 검증 / 표현 (0) | 2024.02.24 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.5) 회복 / 병행제어, 교착상태 (0) | 2024.02.24 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.4) Secure OS, DB 관련 신기술 (0) | 2024.02.23 |