Study/정보처리기사

Ch9_02 소프트웨어 개발 보안 구현

Bonseong 2020. 10. 22. 00:08

1. SW 개발 보안 구현

 

1. 시큐어 코딩 가이드

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

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

    ii. 보안 기능

    iii. 시간 및 상태

    iv. 에러 처리

    v. 코드 오류

    vi. 캡슐화

    vii. API 오용

 

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

  A. SQL 삽입 : 사용자의 입력 값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격

    i. PreparedStatement 객체 이용, DB에 컴파일된 쿼리문을 전달

  B. 크로스 사이트 스크립트 (XSS) : 검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드 실행

    i. 입출력 값에 문자열 치환 함수를 사용

  C. 경로 조작 및 자원 삽입 : 외부 입력된 값의 사전 검증이 없거나 잘못 처리될 경우

  D. 운영체제 명령어 삽입 : 운영체제 명령어 파라미터 입력값이 적절한 사전 검증을 거치지 않고 사용될 때 공격자가 운영체제 명령어 조작

 

3. 보안 기능

  A. 인증 관련 보안 약점

    i. 적절한 인증 없는 중요기능 허용

    ii. 반복된 인증시도 제한 기능 부재

    iii. 취약 패스워드 허용

 

  B. 권한 관리 보안 약점

    i. 중요자원에 대한 잘못된 권한 설명

    ii. 부적절한 인가

  C. 암호화 보안 약점

    i. 취약 암호화 알고리즘 사용

    ii. 충분하지 않은 키 길이 사용

    iii. 하드코딩된 비밀번호

    iv. 부적절한 난수 사용

    v. 솔트 없는 일방향 해시 함수 사용

  D. 중요 처리 시 보안 약점

    i. 중요정보 평문 저장

    ii. 중요정보 평문 전송

      1. 스니핑을 통해 민감 데이터 노출

 

4. 시간 및 상태

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

  B. 유형

    i. 경쟁조건 : 동일 자원에 대한 검사 시점과 사용 시점이 상이, 동기화 구문 사용, mutex 사용

    ii. 종료되지 않은 반복문 또는 재귀함수

  C. 시간 및 상태 보안 약점의 시큐어 코딩 구현

 

5. 에러 처리

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

  B. 유형

    i. 오류 메시지 정보 노출 : 응용 프로그램의 민감 정보가 오류 메시지를 통해 노출되는 보안 약점

    ii. 오류 상황 대응 부재

    iii. 부적절한 예외처리

  C. 에러처리 보안 약점의 시큐어 코딩 구현

 

6. 코드 오류 : 타입 변환 오류, 메모리의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩오류로 인해 유발되는 보안 약점

  A. 유형

    i. 널 포인트 역참조 : 널 값을 고려하지 않는 코드에서 발생하는 보안 약점

    ii. 부적절한 자원 해제

    iii. 해제된 자원 사용

    iv. 초기화되지 않은 변수 사용

 

7. 캡슐화 : 중요한 데이터 또는 기능성을 불충분하게 캡슐화하거나 잘못 사용해 발생하는 보안 약점, 정보노출, 권한문제 발생

  A. 유형

    i. 잘못된 세션에 의한 정보 노출

    ii. 제거되지 않은 디버그 코드

    iii. 시스템 정보 노출

 

8. API 오용

  A. 의도된 사용에 반하는 방법으로 API 사용, 보안에 취약한 API 사용

  B. 유형'

    i. DNS에 의존한 보안 결정

    ii. 취약한 API 사용

 

2. SW개발 보안 테스트와 결함 관리

 

1. 소프트웨어 개발 보안 테스트 : SW 보안 요구사항이 반영되어 있음을 보증, 취약점 발견, 개선

 

2. 유형

  A. 정적 분석

  B. 동적 분석

 

3. 소프트웨어 개발 보안테스트 절차

  A. 준비

  B. 실행

  C. 개선

  D. 관리

  E. 종료

댓글수0