[시큐어코딩] 자바(JAVA) 시큐어코딩

류명운

·

2017. 1. 29. 17:27

반응형

[시큐어코딩] 자바(JAVA) 시큐어코딩

회사에서 행안부(행정안전부)에서 제공하는 시큐어코딩 가이드 문서에 따라 개발을 진행해야 하는 상황이다. 물론 시큐어코딩 관련 솔루션을 이용하여 개발한 프로젝트에 대한 이슈 체크, 해당 이슈에 따른 가이드를 제공해주어 따로 공부할 필요없이 해결이 가능하지만, 공부해두면 재밌을거 같아서 '시큐어코딩' 이라는 카테고리를 만들었다.

앞으로 시간이 날때마다 정부에서 제공하는 공식 가이드 문서를 보고 공부한 내용을 포스팅 남기도록 하겠다.

우선 첫 포스팅은 시큐어코딩의 개념 이해와, 앞으로 공부에 참고할 가이드 문서에 대한 간략한 설명을 남기겠다.


1. 시큐어코딩(secure coding) 이란?

소프트웨어(SW)를 개발함에 있어 개발자의 실수, 논리적 오류 등으로 인해 SW에 내포될 수 있는 보안취약점(vulnerability)을 배제하기 위한 코딩 기법을 뜻 한다. 


2. 시큐어코딩의 국내ㆍ외 배경

SW 개발보안의 중요성을 인식한 미국의 경우, 국토안보부(DHS)를 중심으로 시큐어코딩을 포함한 SW 개발 전과정(설계ㆍ구현ㆍ시험 등)에 대한 보안활동 연구를 활발히 진행하고 있다. 국내의 경우 2009년부터 전자정부서비스 개발단계에서 SW 보안약점을 진단하여 제거하는 시큐어코딩 관련 연구를 진행하면서, 2012년까지 전자정부지원사업 등을 대상으로 SW 보안약점 시범진단을 수행하였다. 또한, 2012년 년 6월부터는 행정안전부 '정보시스템 구축ㆍ운영 지침(행안부고시 제2012-25호)'이 개정ㆍ고시 됨에 따라 전자정부서비스 개발시 적용토록 의무화 되었다.


3. 앞으로 공부에 참고할 가이드 문서 및 구성

JAVA 시큐어코딩 가이드(3판) / 행정안전부(KISA) / 2012.09

* 행정안전부(KISA)에서 전자정부서비스(공공서비스) 개발시 가장 많이 사용되는 개발 언어인 Java 기반의 시큐어코딩 기법을 예제 위주로 제시함으로써, 개발 실무에 활용도를 높이도록 작성된 문서

가이드 문서 활용

  • (개발자) Java 기반 시큐어코딩을 적용한 SW 개발시 참조

  • (발주자) SW 보안약점 진단ㆍ제거 요구사항 도출시 참고

  • (기타) Java 기반 보안약점 및 대응기법 등 전반에 대한 이해

가이드 문서 구성

Java 기반으로 정보시스템 개발시, 고려해야할 보안약점(83개) 설명과 보안대책 이해를 위한 코딩 예제(Bad/Good)를 제시

# 정보시시스템 구축ㆍ운영 지침의 진단시 필수 포함해야 하는 보안약점 43개 포함 #

  • [입력데이터 검증 및 표현] 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식지정으로 인해 발생할 수 있는 보안약점 -* SQL 삽입, 자원 삽입, 크로스사이트 스크립트 등 26개
  • [보안기능] 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 적절하지 않게 구현시 발생할 수 있는 보안약점 -* 부적절한 인가, 중요정보 평문 저장(또는 전송) 등 24개
  • [시간 및 상태] 동시 또는 거의 동시 수행을 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안약점 -* 경쟁조건, 제어문을 사용하지 않는 재귀함수 등 7개
  • [에러 처리] 에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보(시스템 등)가 포함될 때 발생할 수 있는 보안약점 -* 취약한 패스워드 요구조건, 오류메시지를 통한 정보노출 등 4개
  • [코드오류] 타입변환 오류, 자원(메모리 등)의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩오류로 인해 유발되는 보안약점 -* 널 포인터 역참조, 부적절한 자원 해제 등 7개
  • [캡슐화] 중요한 데이터 또는 기능성을 불충분하게 캡슐화하였을 때, 인가되지 않는 사용자에게 데이터 누출이 가능해지는 보안약점 -* 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보노출 등 8개
  • [API 오용] 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안약점 -* DNS Lookup에 의존한 보안결정, 널 매개변수 미조사 등 7개


* 참고 : 행정안전부, "시큐어코딩가이드(Java)", 2014-05-27



반응형