소프트웨어 개발단계에서 사이버침해사고의 주요 원인인 소스코드 보안약점을 진단하여 제거하면 사이버침해사고를 효과적으로 예방할 수 있다. 최근 소프트웨어 보안성 강화를 위해 소프트웨어 개발단계에서 보안약점을 제거하기 위한 정적분석 기반의 도구를 많이 활용하고 있다. 국내의 경우, 소프트웨어 개발보안 적용이 의무화되어 소스코드 보안약점을 제거하는 것이 필수사항이 되었다. 효과적으로 보안약점을 진단하여 제거하기 위해서는 신뢰된 소스코드 보안약점 진단도구의 도움이 필요하다. 최적의 진단도구를 선택하기 위해서는 도구 평가기준과 도구가 보유한 보안약점 규칙 및 분석기능이 중요한 요소가 된다. 그러나, 진단도구 평가 관련 기존 연구들은 대부분 SQL 삽입, 크로스사이트스크립트(XSS) 등과 같은 특정 보안약점 중심의 진단도구 평가기준 및 방법에 대한 연구로 SQL 삽입, XSS를 포함하여 47개 보안약점에 대한 요구사항 등 소프트웨어 개발보안 적용이 의무화된 국내 환경에 적용하는데 한계가 있다. 또한, 소스코드 보안약점 진단규칙 관련 기존 연구들은 프로그래밍 언어별 특정 보안약점(예, SQL 삽입, XSS, 버퍼오버플로우)에 대해서만 수행되었다. 2011년부터 2012년까지 국내 주요 정보화사업으로 개발된 소프트웨어에서 발견된 상위 5개의 보안약점은 연도별 상위 10개 보안약점의 76%에 해당된다. 소프트웨어 개발시 상위 5개의 보안약점만 적절히 조치하여도 소프트웨어 보안성이 많이 개선될 수 있다. 따라서, 본 논문은 국내환경에 적합한 진단도구 기능 요구사항과 진단도구의 신뢰성을 보증할 수 있는 평가방법론을 제안한다. 그리고 제안된 평가체계의 효과를 분석하기 위한 모의 평가결과 및 절차를 설명한다. 또한, 본 논문은 많이 활용되고 있는 공개용 진단도구인 PMD를 대상으로 주요 보안약점에 대한 진단규칙과 이에 대한 성능시험 결과를 제시한다.
If the software weaknesses, which are the main cause of cyber breaches, are analyzed and removed in the software development stages, the cyber breaches can be prevented effectively. Recently, to enhance the security of software, static analysis tools for removing weaknesses, the cause of vulnerability, have been used a lot in the software development stage. In case of Domestic, removing source code weaknesses by applying Secure SDLC(Software Development Life Cycle) has become mandatory. In order to analyze and remove the weaknesses effectively, reliable source code weakness diagnostic tools are required. In order to select the optimal static analysis tool, both the evaluation criteria for the diagnostic tools, the weaknesses rules and analysis capabilities of the tool are important factors. But, the most existing researches about the evaluation methodology for the weakness diagnostic tools have been done for the evaluation criteria and methodology of the diagnostic tools about the specific weaknesses such as SQL injection, Cross-site scripting(XSS) etc.. So, the results of the existing researches are limited to apply to the domestic environment which the secure SDLC, such as the requirements for 47 weaknesses etc., has been mandated. In addition, the existing researches about the diagnosis rules for the source code weaknesses has been done for a few weaknesses depending the programing language (eg, SQL injection, XSS, buffer overflow). Top 5 weaknesses found in the software developed by major domestic information projects from 2011 to 2012 is 76% of top 10 weaknesses per year. Software security can be improved a lot if top 5 weaknesses just are removed properly in software development. In this dissertation, therefore, we propose the functional requirements of diagnostic tool which is suitable for the domestic environment and the evaluation methodology which can assure the reliability of the diagnostic tools. Then, to analyze the effectiveness of the proposed evaluation framework, both demonstration results and process are presented. Also, in this dissertation, we propose the PMD’s rules for diagnosing the major weaknesses and present the results of its performance test.
목차
제 1 장 서론 11.1 연구배경 및 목적 11.2 연구의 필요성 및 범위 5제 2 장 관련 연구 및 동향 72.1 소스코드 보안약점 관련 연구 72.2 진단도구 평가 관련 연구 92.3 진단도구 시험코드 개발 관련 연구 122.3.1 NIST SATE 132.3.2 Juliet 코드 142.4 보안약점 진단기술 관련 연구 152.5 보안약점 진단도구 개발 동향 162.5.1 PMD 172.6 국내 SW 개발보안 관련 동향 18제 3 장 진단도구 신뢰성 보증을 위한 평가 방법론 연구 223.1 진단도구의 보안약점 진단범위 223.1.1 입력데이터 검증 및 표현 223.1.2 보안기능 253.1.3 시간 및 상태 등 5개 유형의 보안약점 273.2 진단도구 최소 기능 요구사항 293.3 진단도구 평가기준 및 방법론 313.4 진단도구 평가환경 구축 333.4.1 시험코드 개발 및 구성 333.4.2 입력데이터 검증 및 표현 353.4.3 보안기능 393.4.4 시간 및 상태 등 5개 유형의 보안약점 42제 4 장 소스코드 보안약점 진단도구 진단규칙 연구 454.1 최근 발견된 주요 보안약점 454.2 주요 보안약점 분석 및 진단규칙 개발 474.2.1 XSS 474.2.2 정보노출 514.2.3 SQL 삽입 564.2.4 Public 메소드부터 반환된 Private 배열 60제 5 장 진단도구 평가기준 모의적용 및 진단규칙 성능평가 625.1 시험환경 625.2 진단도구 평가기준 모의적용 결과 645.3 진단도구 진단규칙 성능평가 결과 70제 6 장 결론 및 향후 연구과제 73참고문헌 74부록 78ABSTRACT 94