5월-방지호1-1.indd

Similar documents
문서의 제목 나눔고딕B, 54pt

Microsoft PowerPoint - file

2007 상반기 실적회의 - DRM Extension

2015 년 SW 개발보안교육과정안내

Observational Determinism for Concurrent Program Security

2017 년 SW 개발보안교육과정안내 행정자치부와한국인터넷진흥원은행정기관등의정보시스템담당공무원및개 발자를대상으로 SW 개발보안에대한이해증진및전문역량강화를위해아래와 같은교육을실시하오니, 관심있으신분들의많은참여부탁드립니다 년 SW 개발보안기본과정 o 교육대상 :

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

1. 제품 개요 AhnLab Policy Center 4.6 for Windows(이하 TOE)는 관리대상 클라이언트 시스템에 설치된 안랩의 안티바이러스 제품인 V3 제품군에 대해 보안정책 설정 및 모니터링 등의 기능을 제공하여 관리대상 클라이언트 시스템에 설치된 V3

암호내지

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

2018 년 SW 개발보안교육과정안내 행정안전부와한국인터넷진흥원은행정기관등의정보시스템담당공무원및 개발자를대상으로 SW 개발보안에대한이해증진및전문역량강화를위해아래와 같은교육을실시하오니, 관심있으신분들의많은참여부탁드립니다 년 SW 개발보안일반과정 교육대상 : 전

12 성능모니터링 allmon Apache License v 성능모니터링 nmon GPL v3 분산되어있는시스템에대한자원상태체크, 사용현황, 성능등을수집

Microsoft PowerPoint - CSharp-10-예외처리

슬라이드 1

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks


Secure Programming Lecture1 : Introduction

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

08~15_º¸°ÇÀÇ·áºÐ¾ßODAÆò°¡

Microsoft PowerPoint - chap01-C언어개요.pptx


Frama-C/JESSIS 사용법 소개

untitled

소프트웨어 검증 및 설계

PowerPoint Presentation

1. 제품 개요 WeGuardia WIPS V2.0(이하 TOE)은 특정 조직에서 운영되는 무선랜에 대한 지속적인 모니터을 통해 내 외부로부터 발생할 수 있는 각종 침입을 탐지 및 차단하여 내부의 네트워크를 보호하는 무선침입방지시스템이다. TOE의 세부 식별자 및 배포

슬라이드 1

게시판 스팸 실시간 차단 시스템

4장.문장

TTA Journal No.157_서체변경.indd

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

untitled

PowerPoint 프레젠테이션

소니 아크 CONTENTS + 소니에릭슨의 엑스페리아 아크(XPERIA arc)는 SK텔레콤 전용으로 4월에 출시됐다. vol 엑스페리아 아크는 안드로이드 진저브레드 OS 4.2인치 디스플레이 야간 촬영 카메 라 센서 등의 사양을 갖추고 있으며, 3월 24일 일본에서

품질검증분야공개 SW 솔루션목록 ( ) 순번분류솔루션명라이선스기술지원홈페이지제품개요 1 BTS Bugzilla MPL community 웹기반의 bug tracking 및테스트도구 2 BTS Fossil 2-c

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

ThisJava ..

쉽게 풀어쓴 C 프로그래밊

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

PowerPoint 프레젠테이션

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

서현수

제목 레이아웃

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint 프레젠테이션

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

PowerPoint Template

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

F1-1(수정).ppt

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JVM 메모리구조

목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 2 5. 약어 3 6. 사용자인증 3 7. 전송채널

Spring Boot/JDBC JdbcTemplate/CRUD 예제

mytalk

화해와나눔-여름호(본문)수정

화해와나눔-가을호(본문)

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

최종_백서 표지

DBMS & SQL Server Installation Database Laboratory

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Slide 1

본 해설서는 정보통신망 이용촉진 및 정보보호 등에 관한 법률 (이하 법 이라 한다) 제28조제1항과 같은 법 시행령 제15조제6항에 근거한 개인정보의 기술적 관리적 보호조치 기준 이 개정 고시( )됨에 따라 - 동 기준의 각 조항별 주안점과 구체적인 사례를

PowerPoint Template

PowerPoint 프레젠테이션

SW

1 SW

1. 배경 업무 내용이나 개인정보가 담긴 청구서 등을 메일로 전달 시 중요한 정보가 유출되는 경우가 발생하고 있으며, 이에 따른 메일 암호화 솔루션을 도입하고 있으나 기존 ActiveX를 기반으로 한 플러그인 방식은 여러 가지 제약으로 인해 사용성이 저하되고, 고객 대

IPv6 보안취약점동향 인터넷주소산업팀 정유경선임연구원, 김웅상책임연구원, 임준형팀장 2014년 9월, 국내 IPv6 상용서비스의개시와함께 IPv6 도입및전환이시작되었다. 국내외적으로 IPv6로의전환에따른관련통계자료들이증가추세를보이며실제환경속으로 IPv6주소가들어오고있

제11장 프로세스와 쓰레드

JUNIT 실습및발표

PowerPoint 프레젠테이션

PowerPoint Presentation

< C0CEC5CDB3DDB1A4B0EDBBEABEF7C0C7C7A5C1F62D322E6A7067>

<4D F736F F F696E74202D C0A5BCADB9F620BAB8BEC8BCB3C1A420B0A1C0CCB5E52E707074>

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

PowerPoint Template

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

AhnLab_template

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

Secure Programming Lecture1 : Introduction

PowerPoint Presentation

1. Eclipse 2. JUnit 3. STATIC ANALYSIS 4. PMD 5. Eclipse TPTP 6. FIND BUGS INDEX 2

Contents I. 취약점점검소개 II. III. IV. 점검프로세스분석 취약점점검방법 기타

170

006- 5¿ùc03ÖÁ¾T300çÃâ

[Brochure] KOR_TunA

C++ Programming

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

월간 CONTENTS 3 EXPERT COLUMN 영화 점퍼 와 트로이목마 4 SPECIAL REPORT 패치 관리의 한계와 AhnLab Patch Management 핵심은 패치 관리, 왜? 8 HOT ISSUE 2016년에 챙겨봐야 할 개인정보보호

?

BMP 파일 처리

4S 1차년도 평가 발표자료


Chap 6: Graphs

Microsoft PowerPoint - ch07 - 포인터 pm0415

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

Transcription:

F O C U S 3 공개용소스코드보안약점분석도구개발동향 방지호 * 현재국가정보화사업으로개발되는정보시스템소프트웨어는개발단계부터보안약점 ( 보안취약점의원인 ) 이배제되도록개발하는 소프트웨어개발보안 적용이의무화되었다. 소프트웨어개발보안을적용하여안전한소프트웨어를개발및구현하기위해정적분석도구등다양한자동화도구가개발및활용되고있다. 국가정보화사업에대한감리시감리법인이보안약점을진단하기위해정적분석기반의자동화도구인소스코드보안약점분석도구를사용하는경우 정보보호시스템평가 인증지침 에따라평가 인증받은제품을사용하는것이의무화되어, 현재 (2014년 5월기준 ) 관련유형의제품에대한평가가진행중이며, 인증된제품도최근 2 종이출시되었다. 본기고에서는상용제품이외에손쉽게접할수있는오픈소스로공개된정적분석기반의보안약점분석도구를대상으로보안약점분석성능을분석하고자한다. 보안약점성능분석결과는중소기업등영세한민간기업에서소프트웨어개발시참고하여활용할수있는공개용분석도구에대한정보를제공하여소프트웨어개발안전성향상에기여할수있을것으로기대한다. Ⅰ. 서론 Ⅱ. 본론 1. 국내 외개발보안동향 2. 공개용소스코드보안약점분석도구유형및시험기준 3. 공개용소스코드보안약점분석도구성능분석 Ⅲ. 결론 ** 한국인터넷진흥원보안평가팀책임연구원 (jhbang@kisa.or.kr) 46 INTERNET & SECURITY FOCUS May 2014

Ⅰ. 서론 현재국가정보화사업으로개발되는정보시스템소프트웨어 ( 이하, SW) 는개발단계부터 FOCUS 보안취약점 (Vulnerability) 의원인인보안약점 (Weakness) 1 을배제하도록개발하는 SW 개발보안 적용이의무화되었다. SW 개발보안단계는요구사항분석단계, 설계단계, 구현단계, 시험단계, 릴리즈단계, 운영단계로구분되며다음과같이수행된다. 요구사항분석단계 는개발대상 SW가다루는정보 ( 및데이터 ) 와 SW가제공하는서비스를대상으로보안위협을도출하여, 도출된보안위협을대응 ( 제거, 완화, 회피등 ) 하기위한보안요구사항을도출하는단계이다. 설계단계 는보안위협을기반으로도출된보안요구사항이 SW 기능으로구현되도록보안구조및인터페이스, 알고리즘등을설계하는단계이다. 구현단계 는보안요구사항에대한설계내용을프로그래밍언어 ( 예, JAVA, C 등 ) 로보안약점이내재되지않도록안전하게구현하는단계로, 현재국내에서의무화가적용된단계이다. 시험단계 는보안요구사항에따른보안기능등이적절하게동작하는지를단위모듈 서비스시험, 통합모듈 서비스시험등을통해확인하는단계이다. 릴리즈단계 는시험단계를통해보안요구사항이적정하게구현된것을확인된경우, SW 컴파일등을통한배포본을제작하는단계이다. 운영단계 는 SW 배포본을설치하여정상적인 IT 서비스를제공하는단계로주기적인보안취약점을점검하여안전한서비스를제공해야한다. 보안취약점이발생하는경우관련보안패치를적용하여안전한서비스를제공해야한다. 안전한 SW 개발을위해 SW 개발단계별로다양한자동화도구가개발되고있는데, 국내에의무화된구현단계의경우소스코드를대상으로 SW 에러, 버그등보안약점을분석해주는정적분석도구가대표적이다. 최근안전한 SW 개발을위해보안약점을분석할수있는정적분석도구가많이활용되고있는데, 국내국가정보화사업에대한감리시감리법인이보안약점을진단하기위해정적분석기반의자동화도구인 소스코드보안약점분석도구 를사용하는경우 정보보호시스템평가 인증지침 에따라평가 인증받은제품 (CC인증제 1 보안약점 (Weakness) 은잠재적인보안취약점 (Potential Vulnerability) 으로해킹등사이버공격을유발할수있는 SW 결함, 오류등으로, 관련보안약점목록은 MITRE 社 (http://cwe.mitre.org) 에서제공하고있음 47

품 ) 을사용하는것이의무화 2 되었다. 본기고에서는손쉽게접할수있는오픈소스로공개된정적분석기반의보안약점분석도구를대상으로보안약점분석성능을분석하고자한다. 보안약점성능분석결과는중소기업등영세한민간기업에서 SW 개발시참고하여활용할수있는공개용분석도구에대한정보를제공하여소프트웨어개발안전성향상에기여할수있을것으로기대한다. 본기고는국내외개발보안동향과공개용소스코드보안약점분석도구시험기준을기반으로성능시험결과를분석하고, 결론을맺는다. Ⅱ. 본론 1. 국내 외개발보안동향 1) 국외개발보안동향 미국국토안보부 ( 이하, DHS) 는국방부 ( 이하, DoD) 및국립표준기술연구소 ( 이하, NIST) 와함께 SW 보증을위한다양한방법론을연구하고있다. NIST의경우, DHS의지원을받아 2004년부터 SW 보증을통한 SW 보안성을향상시키기위한다양한연구를수행하는 SAMATE(Software Assurance Metrics And Tool Evaluation) 프로젝트를수행하고있다. SAMATE 프로젝트는 SW 보안성을지원하는도구평가방법, 도구와개발보안기법의차이및효과분석등을수행하고있는데, 소스코드보안약점분석도구와관련하여분석도구성능평가방법론및테스트베드를제공하고있다. 성능평가기준으로소스코드보안약점분석도구가탐지해야하는최소보안약점기준항목을 JAVA 언어는 9개, C/C++ 언어는 19개로정의하고있다. 성능평가를위한테스트베드로 CWE를기반으로소스코드에다양한보안약점이포함되도록구현한 JAVA 및 C/C++ 개발언어기반의 Juliet 코드 3 등을제공하고있다. SAMATE 프로젝트는정적분석기반의상용분석도구를대상으로 2008년부터매년상용분 2 현재 (2014년 5월기준 ) 관련유형의제품에대한평가가진행중이며, 인증제품도출시되었음 3 ( 참조사이트 : Juilet 코드등다양한예제코드제공 ) http://samate.nist.gov/sard/testsuite.php 48 INTERNET & SECURITY FOCUS May 2014

석도구개발업체의참여하에 SATE(Static Analysis Tool Exposition) 를개최하고있다. SATE 는참여를희망하는상용분석도구개발업체를대상으로 NIST 에서제시하는공개용오 픈소스를시험코드로하여각진단도구특징및분석성능을시험한다. 2010 년에는공개용오 FOCUS 픈소스외에 CVE에서리포팅한정보를기반으로취약한공개용오픈소스와보안패치된공개용오픈소스를한쌍의시험코드로사용하였다. 2012년에는단순공개용오픈소스는시험코드에서제외하고, 대신 Juliet 코드를시험코드에포함하였다. 2012년이전까지는분석도구의성능보다 SATE에참여한진단도구의특성분석및비교에초점을두었으나, 2012년에는 3차례의 SATE 진행경험을토대로 SATE에참여한분석도구의성능 ( 정탐, 오탐등 ) 관점으로 SATE 진행결과를리포트하였다. 정보보안관련연구기관인 MITRE 社의경우, DHS의지원을받아 SW의보안약점목록인 CWE(Common Weakness Enumeration) 정보를제공하고있다. CWE의보안약점정보는정보보호제품을포함한 IT 제품에서발견되는보안취약점정보를제공하는 CVE(Common Vulnerabilities and Exposures) 등을기반으로도출된보안취약점의원인을기반으로추가및갱신되고있다. 2008년 9월 CWE 버전 1.0을시작으로 2012년 10월에 CWE 버전 2.3을발표하여총 909개의항목을제공하고있으며, SANS 社와함께 SW를위험하게만드는 25개의 CWE 항목을매년발표하여 SW 개발시참고하도록하고있다. 그리고웹어플리케이션에대한보안을연구하여공유하고있는 OWASP(The Open Web Application Security Project) 는매년전문가의견을수렴하여가장위험한 10개의보안위험, 즉웹어플리케이션에특화된주요보안약점을발표하고있다. 2) 국내개발보안동향안전행정부는한국인터넷진흥원 ( 이하, KISA) 와함께 2009 년부터 SW 개발보안제도도입및정착을위해 SW 개발보안관련가이드를개발하여배포하고있으며, 정보화사업담당공무원및개발자등을대상으로 SW 개발보안교육과정을운영하고있다. 또한, 전자정부지원사업으로개발되는 SW를대상으로 KISA 가자체개발한 SW 보안약점분석도구를기반으로 SW 보안약점시범진단서비스를제공하였는데 SW 라인수는평균 87만라인으로 2010년도의경우평균 2,400 개의보안약점을, 2011 년도의경우평균 1,328 개의보안약점을진단하여조치하도록하였다. 안전행정부와 KISA의지속적인 SW 개발보안관련정책추진에따라, 2012년 6월 정보시스템구축 운영지침 이개정 고시되어정보시스템감리대상전자정부 SW는개발보안을 FOCUS 3 공개용소스코드보안약점분석도구개발동향 49

적용하여안전하게개발하도록의무화되었다. 이에따라, 전자정부 SW를개발하는행정기관은자체적으로분석도구및관련전문가등을활용하여 SW 보안약점존재여부를진단하여조치해야한다. 보안약점진단시, 이를효과적으로지원할수있는분석도구개발을위해최소기능요구사항도출과신뢰할수있는분석도구선택을위한평가기준이필요하다. 관련지침에서 SW 보안약점진단을위해분석도구를사용하는경우국가정보원장이정보보호시스템보안성평가 인증 (Common Criteria, 공통평가기준 ) 한분석도구를사용 (2014년 1월이후 ) 하도록의무화하여, 현재 (2014년 5월기준 ) 인증된분석도구 2종이출시되었다. 최근 2013년 8월해당지침이일부개정되어 행정기관및공공기관정보시스템구축 운영지침 4 이고시되면서안전한 SW 개발을위해필수진단하여제거해야하는 SW 보안약점기준이개정되어 43개항목에서 47개항목으로조정되었다. 2. 공개용소스코드보안약점분석도구유형및시험기준 행정기관및공공기관정보시스템구축 운영지침 에따라, 정보시스템감리시사용하는소스코드보안약점분석도구는 CC인증제품사용이의무화되었으나 SW 개발이나자체보안약점진단을위해사용하는경우 CC인증제품사용에대한제약이없다. 따라서, 본기고에서는국가정보화사업 SW 개발시많이사용되는프로그래밍언어인 JAVA 언어기반의분석도구를대상으로손쉽게접할수있는공개용분석도구개발현황및국내기준부합수준을분석하여개발자등에관련정보를제공하고자한다. NIST SAMATE 프로젝트는 SW의품질및보안성개선을위해정적분석기반의보안약점분석도구 ( 상용 공개용 ) 를포함하여 SW 개발단계별사용할수있는다양한도구목록을제공하다. 소스코드보안약점분석도구중공개용분석도구는 < 표 1> 과같으며, JAVA 언어로구현된소스코드의보안약점을분석할수있는공개용분석도구는 FindBugs,, JLint, LAPSE+, PMD, Yasca 등 6종이다. 또한, NIST SAMATE 프로젝트는 JAVA 기반의보안약점분석도구의성능을측정할수있는시험코드인 Juliet 코드를제공하고있는데국내에서의무화한 47개보안약점중 24개보안약점에대한시험코드가포함되어있다. 4 행정기관및공공기관정보시스템구축 운영지침 ( 안전행정부고시제 2013-36 호, 2013.8.27.) 50 INTERNET & SECURITY FOCUS May 2014

도구명 < 표 1> 국외공개용소스코드보안약점분석도구현황 분석대상언어 JAVA C C++ 기타 1 ABASH - - - Bash 2 BOON - O - - 3 Clang Static Analyzer - O - Objective-C 4 Closure Compiler - - - JavaScript 5 Cppcheck - O O - 6 CQual - O - - 7 Csur - O - - 8 FindBugs O - - Groovy, Scala 9 O - - Groovy, Scala 10 Flawfinder O O - 11 Jlint O - - - 12 LAPSEO - - - 13 PHP-Sat - - - PHP 14 Pixy - - - PHP 15 PMD O - - - 16 pylint - - - Python 17 RATS (Rough Auditing Tool for Security) [ O : 해당사항있음, : 해당사항없음 ] - O O Perl, PHP, Python 18 Smatch - O - - 19 Splint - O - - 20 UNO - O - - 21 Yasca O O O JavaScript, ASP, ColdFusion, PHP, COBOL,.NET 등 FOCUS 출처 : NIST SAMATE, <http://http://samate.nist.gov/index.php/source_code_security_analyzers.html> 분석도구성능분석을위한성능결과판정기준은다음 < 표 2> 에서술한기준을기반으로보안약점이내포된 Bad 코드에서취약한함수 ( 또는메소드 ) 등의위치를정확하게탐지한경우 정탐 (True Positive) 으로판정하며그렇지못한경우 미탐 (False Negative) 으로판정한다. 또한, 보안약점이해결되어보안약점이존재하지않는 Good 코드에서보안약점이존재한다고진단하는경우 오탐 (False Positive) 으로판정한다. 정탐 과 미탐 은서로역 ( 逆 ) 관계에있기때문에본기고에서는 정탐 과 오탐 에대해서만논하기로한다. FOCUS 3 공개용소스코드보안약점분석도구개발동향 51

< 표 2> 시험코드기반분석결과판정기준 구분 코드유형 판정기준 정탐 Bad 보안약점이내재된함수등의위치를정확하게탐지한경우 오탐 Good 보안약점이해결된함수등을탐지하는경우 미탐 Bad 보안약점이내재된함수등을탐지못하는경우 3. 공개용소스코드보안약점분석도구성능분석 본절에서는 JAVA 프로그래밍언어기반의공개용분석도구 6 종 (< 표 3> 참조 ) 을대상으로 2 절의분석기준을적용한성능분석결과를설명한다. < 표 3> JAVA 프로그래밍언어기반의공개용분석도구 구분 버전 진단대상 설치 운영 FindBugs[27] 2.0.2 바이트코드 Eclipse 플러그인 [28] 1.1,0 바이트코드 FindBugs 모듈 JLint[29] 3.0 바이트코드 CLI LAPSE+[30] 2.8.1 자바코드 Eclipse 플러그인 PMD[26] 4.0.2 자바코드 Eclipse 플러그인 Yasca[31] 2.1 자바코드 CLI Juliet 코드는다양한유형을고려하여개발되었기때문에보안약점별여러종류의세부시험코드가존재한다. 따라서, 분석도구가보안약점별세부시험코드중한개라도보안약점을정탐하는경우다양한유형의진단규칙보유가미흡하나해당보안약점을점검할수있는메커니즘은보유하고있다고할수있기때문에점검가능하다고판정 ( 표시 ) 하였다. 만약한개의정탐도없는경우점검할수없다고판정 ( 표시 ) 하였으며, 보안약점이포함된소스코드를탐지하였어도분석도구탐지규칙에적합하지않는경우오탐으로판정 ( 표시 ) 하였다. 해당보안약점에대한 Juliet 코드가존재하지않는경우분석대상에서제외 (- 표시 ) 하였다. 1) 입력데이터검증및표현 JAVA 언어기반 Juliet 코드는입력데이터검증및표현유형에대해 10 개보안약점 (SQL 삽입, 경로조작및자원삽입, 크로스사이트스크립트 (XSS), 운영체제명령어삽입, 신뢰되 52 INTERNET & SECURITY FOCUS May 2014

지않는 URL 주소로자동접속연결, XPath 삽입, LDAP 삽입, HTTP 응답분할, 정수형오 버플로우, 포맷스트링삽입 ) 에대한시험코드를제공하고있다. 6 개의분석도구중 PMD 를 제외한 5 종의분석도구는 입력데이터검증및표현 유형중 1~6 개의보안약점을탐지하였 FOCUS 다. FindBugs,, LAPSE+ 의경우, HTTP Response Splitting 진단규칙으로 신뢰되지않은 URL 주소로자동접속연결 보안약점을식별하여오탐으로처리하였다. Yasca의경우, Process Control 진단규칙으로 OS 명령어삽입 보안약점을식별하였으나해당진단규칙은절대경로지정없이임의의라이브러리를로드하였을때발생할수있는보안약점이기때문에오탐으로처리하였다. < 표 4> 분석도구성능분석 : 입력데이터검증및표현 보안약점 CWE FindBugs SQL 삽입 89 O O O O 경로조작및자원삽입 22/99 O O O 크로스사이트스크립트 80 O O O 운영체제명령어삽입 78 O O 위험한형식파일업로드 434 - - - - - - 신뢰되지않는 URL 주소로자동접속연결 601 XQuery 삽입 652 - - - - - - XPath 삽입 643 O LDAP 삽입 90 크로스사이트요청위조 352 - - - - - - HTTP 응답분할 113 O O O 정수형오버플로우 190 O 보안기능결정에사용되는부적절한입력값 807 - - - - - - 메모리버퍼오버플로우 119 - - - - - - 포맷스트링삽입 134 2) 보안기능 JAVA 언어기반 Juliet 코드는보안기능유형에대해 7개보안약점 ( 취약한암호화알고리즘사용, 중요정보평문전송, 하드코드된비밀번호, 적절하지않은난수값사용, 하드코드된암호화키, 주석문안에포함된패스워드등시스템주요정보, 솔트없이일방향해쉬함수사용 ) 에대한시험코드를제공하고있다. 6개의분석도구중 FindBugs,, Yasca 는 보안기능 유형중 1~2개의보안약점을탐지하였다. FindBugs, 는 FOCUS 3 공개용소스코드보안약점분석도구개발동향 53

Hardcoded constant database password 진단규칙으로 사용자중요정보평문저장및전 송 보안약점을식별하여오탐으로처리하였다. < 표 5> 분석도구성능분석 : 보안기능 보안약점 CWE FindBugs 적절한인증없는중요기능허용 306 - - - - - - 부적절한인가 285 - - - - - - 중요한자원에대한잘못된권한설정 732 - - - - - - 취약한암호화알고리즘사용 327 O O 중요정보평문저장 312 - - - - - - 중요정보평문전송 319 하드코드된비밀번호 259 O O 충분하지않은키길이사용 310 - - - - - - 적절하지않은난수값사용 330 O 하드코드된암호화키 321 취약한비밀번호허용 521 - - - - - - 사용자하드디스크에저장되는쿠키를통한정보노출 539 - - - - - - 주석문안에포함된시스템주요정보 615 솔트없이일방향해쉬함수사용 759 무결성검사없는코드다운로드 494 - - - - - - 반복된인증시도제한기능부재 307 - - - - - - 3) 시간및상태 JAVA 언어기반 Juliet 코드는시간및상태유형에대해 1개보안약점 ( 종료되지않는반복문또는재귀함수 ) 에대한시험코드를제공하고있다. 6개의분석도구중 FindBugs, 는 An apparent infinite recursive loop 진단규칙으로 제어문을사용하지않는재귀함수 보안약점을탐지하였다. 54 INTERNET & SECURITY FOCUS May 2014

< 표 6> 분석도구성능분석 : 시간및상태 보안약점 CWE FindBugs 경쟁조건 : 검사시점과사용시점 (TOCTOU) 종료되지않는반복문또는재귀함수 367 - - - - - - 674/835 O O FOCUS 4) 에러처리 JAVA 언어기반 Juliet 코드는에러처리유형에대해 2개보안약점 ( 오류메시지를통한정보노출, 오류상황대응부재 ) 에대한시험코드를제공하고있다. 6개의분석도구중PMD만 EmptyCatchBlock 및 AvoidPrintStackTrace 진단규칙으로 2개의 에러처리 유형보안약점을탐지하였다. 보안약점 CWE FindBugs 오류메시지를통한정보노출 < 표 7> 분석도구성능분석 : 에러처리 209 O 오류상황대응부재 390 O 부적절한예외처리 754 - - - - - - 5) 코드오류 JAVA 언어기반 Juliet 코드는코드오류유형에대해 2개보안약점 (Null Pointer 역참조, 부적절한자원해제 ) 에대한시험코드를제공하고있다. 6개의분석도구중 FindBugs, 는 Null pointer dereference 진단규칙으로, JLint는 Data Flow 진단규칙으로 널포인터역참조 보안약점을탐지하였다. < 표 8> 분석도구성능분석 : 코드오류 보안약점 CWE FindBugs Null Pointer 역참조 476 O O O 부적절한자원해제 404 해제된자원사용 416 - - - - - - 초기화되지않은변수사용 457 - - - - - - FOCUS 3 공개용소스코드보안약점분석도구개발동향 55

6) 캡슐화 JAVA 언어기반 Juliet 코드는캡슐화유형에대해 2개보안약점 ( 제거되지않고남은디버그코드, 시스템데이터정보노출 ) 에대한시험코드를제공하고있다. 6개의분석도구중 Yasca만 Authorization: Debug Parameter Found 진단규칙으로 제거되지않고남은디버그코드 보안약점을탐지하였다. 보안약점 CWE FindBugs 잘못된세션에의한데이터정보노출제거되지않고남은디버그코드 < 표 9> 분석도구성능분석 : 캡슐화 488 - - - - - - 489 O 시스템데이터정보노출 497 Public 메소드부터반환된 Private 배열 Private 배열에 Public 데이터할당 495 - - - - - - 496 - - - - - - 7) API오용 JAVA 언어기반 Juliet 코드는 API 오용유형의보안약점 (DNS lookup에의존한보안결정, 취약한 API 사용 ) 에대한시험코드를제공하고있지않기때문에해당보안약점에대한분석은생략한다. 보안약점 CWE FindBugs DNS lookup 에의존한보안결정 < 표 10> 분석도구성능분석 : API 오용 247/350 - - - - - - 취약한 API 사용 676 - - - - - - Ⅲ. 결론 본기고에서는소스코드보안약점 47 개항목중 Juliet 코드를통해시험할수있는 24 개 보안약점을대상으로공개용분석도구 6 종에대한진단규칙보유관점의성능시험을수행하 56 INTERNET & SECURITY FOCUS May 2014

였다. 성능분석결과 (< 표 11> 참조 ), 모든보안약점을분석할수있는규칙및성능을보유한 분석도구는존재하지않았다. 따라서, 소스코드보안약점을분석하기위해서는 정보보호시 스템평가 인증지침 에따라인증된분석도구를사용하는것이필요하며, 공개용분석도구 FOCUS 를사용해야하는경우본기고의분석결과를기반으로여러개의도구를같이사용하여분석범위를넓히고분석도구가분석하지못하는보안약점에대한규칙을추가하는것이필요하다. 또한, 국가정보화사업등과같이대규모의 SW 분석시분석도구의메모리용량등이중요하므로공개용분석도구사용시힙메모리를충분히설정하여분석하는것이필요하다. 본기고의분석도구성능분석결과는중소기업등영세한민간기업에서소프트웨어개발시참고하여활용할수있는공개용분석도구에대한정보를제공하여소프트웨어개발안전성향상에기여할수있을것으로기대한다. 본기고에서분석도구성능분석을위해사용된 Juliet 코드는인위적으로개발된예제코드로실제적용결과와차이가존재할수있기때문에향후에는오픈소스 SW 등다양한코드를대상으로성능분석을수행할예정이다. 또한, C 프로그래밍언어기반의공개용소스코드보안약점분석도구에대한성능분석을수행하고, 퍼징도구와같은동적분석도구로성능분석영역을확장할예정이다. < 표 11> 분석도구성능분석결과 보안약점유형 분석대상 FindBugs 입력데이터검증및표현 (15 개 ) 10 4 5 1 6-1 보안기능 (16 개 ) 7 1 3 - - - 1 시간및상태 (2 개 ) 1 1 1 - - - 에러처리 (3 개 ) 2 - - - - 1 - 코드오류 (4 개 ) 2 1 1 1 - - 캡슐화 (5 개 ) 2 - - - - - 1 API 오용 (2 개 ) - - - - - - - 계 (47 개 ) 24 7 10 2 6 1 3 FOCUS 3 공개용소스코드보안약점분석도구개발동향 57

참고문헌 미래창조과학부 (2013). 정보보호시스템평가인증지침 ( 미래창조과학부고시제2013-52 호 ). 방지호, 하란 (2013). 소프트웨어보안약점기반의오픈소스보안약점진단도구분석, 한국정보과학회 2013 한국컴퓨터종합학술대회 : 753-755. 안전행정부 (2013). 소프트웨어개발보안가이드. 안전행정부 (2013). 행정기관및공공기관정보시스템구축 운영지침 ( 안전행정부고시제2013-36 호 ). 행정안전부 (2012). 소프트웨어보안약점진단가이드. DHS, Build Security In(BSI), <https://buildsecurityin.us-cert.gov> FindBugs, <http://findbugs.sourceforge.net>, <http://h3xstream.github.io/find-sec-bugs> JLint, < http://sourceforge.net/projects/jlint> LAPSE+, <https://www.owasp.org/index.php/category:owasp_lapse_project> MITRE, Common Vulnerabilities and Exposures, Retrieved June, 20, 2012, from http://cve. mitre.org. MITRE, Comon Weakness Enumeration V2.4, Retrieved Feb., 21, 2013, from http://cwe. mitre.org. NIST SAMATE, <http://samate.nist.gov> OWASP, OWASP Top Ten 2013 rc1, <http://www.owasp.org.> PMD, <http://pmd.sourceforge.net> V. Okun 외, Report on the Static Analysis Tool Exposition(SATE) IV(NIST Special Publication 500-297), 2013.1. Yasca, <http://www.yasca.org> 58 INTERNET & SECURITY FOCUS May 2014