본문 바로가기
정보처리기사/정보 시스템 구축 관리

시큐어 코딩 가이드 2

by jhwannabe 2023. 8. 19.

시간 및 상태

시간 및 상태의 개념

  • 동시 수행을 지원하는 병렬 시스템이나 여러 개의 프로세스가 동작되는 멀티 프로세스 환경에서 시간 및 상태를 부적절하게 사용하여 여러 가지 보안 약점이 발생할 수 있음

보안 약점의 종류

경쟁 조건 : 검사 시점과 사용 시점(TOCTOU)

  • 자원을 검사하는 시점(TOC : Time Of Check)과 사용하는 시점(TOU : Time Of Use)이 달라서 발생하는 보안 약점
  • 여러 프로세스가 공유 자원 접근 시 동기화 구문으로 한 번에 하나의 프로세스만 접근하게 함으로써 방지할 수 있음

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

  • 종료 조건이 없는 반복문이나 재귀 함수를 사용하여 무한 반복하며 자원 고갈이 발생하는 보안 약점
  • 재귀 호출 횟수를 제한함으로써 방지할 수 있음

 

에러 처리

에러 처리의 개념

  • 발생한 에러를 처리하지 않거나 완전하게 처리하지 않아 에러 정보에 중요 정보가 포함되어 여러 가지 보안 약점이 발생할 수 있음

보안 약점의 종류

  • 에러 메시지를 통한 정보 노출 : 에러 메시지에 실행 환경이나 사용자 관련 등 민감한 정보가 포함되어 외부에 노출되는 보안 약점
  • 에러 상황 대응 부재 : 에러가 발생할 수 있는 에러 상황에 대해 예외 처리를 하지 않아 프로그램이 동작하지 않거나 제대로 동작하지 않는 보안 약점
  • 부적절한 예외 처리 : 프로그램 수행 중에 함수의 결과값에 대해 적절하게 처리하지 않거나 예외 상황에 대해 조건을 적절하게 검사하지 않아 발생하는 보안 약점

 

코드 오류

코드 오류의 개념

  • 개발자가 흔히 실수하는 프로그램 오류들로 인해 여러 가지 보안 약점이 발생할 수 있음

보안 약점의 종류

  • Null Pointer(널 포인터) 역참조 : 일반적으로 객체가 Null이 될 수 없다는 가정을 위합ㄴ하여 공격자가 의도적으로 Null Pointer 역참조를 발생시켜 공격에 사용하는 보안 약점
  • 부적절한 자원 해제 : 오픈 파일 디스크립터, 힙 메모리, 소켓 등의 유한한 자원을 할당받아 사용한 후 프로그램 에러로 반환하지 않아 발생하는 보안 약점
  • 해제된 자원 사용 : 해제된 자원을 참조하여 의도하지 않은 값이나 코드를 실행하게 됨으로써 의도하지 않은 결과가 발생하는 보안 약점
  • 초기화되지 않은 변수 사용 : 초기화되지 않은 변수를 사용하면 임의의 값이 사용되어 의도하지 않은 결과가 발생하는 보안 약점

 

캡슐화

캡슐화의 개념

  • 중요한 데이터나 기능성을 잘못 캡슐화하거나 잘못 사용하면 여러 가지 보안 약점이 발생할 수 있음

보안 약점의 종류

잘못된 세션에 의한 데이터 정보 노출

  • 다중 스레드 환경에서 정보를 저장하는 멤버 변수가 포함되어 서로 다른 세션에서 데이터를 공유하여 발생하는 보안 약점
  • 싱글톤(Singleton) 패턴 사용 시 변수 범위를 제한하여 방지할 수 있음

제거되지 않고 남은 디버그 코드

  • 개발 완료 후에 디버그 코드가 제거되지 않은 채로 배포되어 발생하는 보안 약점
  • 소프트웨어가 배포되기 전에 디버그 코드를 삭제해 방지할 수 있음

시스템 데이터 정보 노출

  • 시스템, 관리자, DB 정보 등의 시스템 데이터 정보가 공개되어 발생하는 보안 약점
  • 예외 상황 발생 시 시스템 메시지 등의 시스템 데이터 정보가 화면에 출력되지 않게 함으로써 방지할 수 있음

public 메소드로부터 반환된 private 배열

  • private 선언된 배열을 public 선언된 메소드를 통해 반환하여 그 배열의 레퍼런스가 외부에 공개되어 발생하는 보안 약점
  • private 선언된 배열을 public 선언된 메소드를 통해 반환하지 않게 함으로써 방지할 수 있음

private 배열에 public 데이터 할당

  • public 선언된 메소드의 인자가 private 선언된 배열에 저장되어 극 배열을 외부에서 접근할 수 있게 되는 보안 약점
  • public 선언된 메소드의 인자를 private 선언된 배열에 저장되지 않도록 함으로써 방지할 수 있음

 

API 오용

API 오용의 개념

  • 서비스에서 제공되는 사용법에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용하여 여러 가지 보안 약점이 발생할 수 있음

보안 약점의 종류

DNS lookup에 의존한 보안 결정

  • 도메인명에 의존하여 인증이나 접근 통제 등의 보안 결정을 하면 공격자가 DNS 엔트리를 속여 동일 도메인에 속한 서버인 것처럼 위장하는 보안 약점
  • 보안 결정 시 도메인명을 이용한 DNS lookup에 의존하지 않도록 함으로써 방지할 수 있음

취약한 API 사용

  • 보안 문제로 금지된 함수 또는 오용될 가능성이 있는 API 등의 취약한 API를 사용하여 발생하는 보안 약점
  • 보안 문제로 금지된 함수는 안전한 대체 함수를 사용함으로써 방지할 수 있음
728x90
반응형