소프트웨어개발보안 2015.05 김현철
2
목차 1. 소프트웨어중요성 2. 소프트웨어개발보안 3. 소프트웨어개발보안제도 4. SW 보안약점및정적진단의한계 5. 맺음말
1. 소프트웨어중요성
1. 소프트웨어중요성 CES 2014/2015 주요키워드 : SMART! 5
1. 소프트웨어중요성 SMART Generation : Software World! 6
1. 소프트웨어중요성 Why Software is Eating the World? - Marc Andreessen - 2011.Aug. Wall Street Journal 비즈니스리더의 81 % 는기술이비즈니스모델의기본요소 6 억개이상의 Tablet 과 1 억 7 천만이상의스마트폰이직장에서사용됨 ( 12 년기준 ) 7 Global 2000 개기업의 99% 는 mission-critical application 에 Open Source 소프트웨어가사용될것 (2016 년 )
1. 소프트웨어중요성 소프트웨어의사소한결함이인류를파멸로이끌수있다! 8
1. 소프트웨어중요성 소프트웨어의사소한결함이당신의목숨을빼앗아갈수도있다! ( 09.8) Lexus Pedal Gate 일가족넷을태운 2009 년형렉서스 ES 350 이 125 마일 (195km/h) 의속도로질주하다고속도로진출입로가드레일을넘어추락, 일가족 4 명사망 출처 http://www.youtube.com/watch?v=03m7fmnho0i 12~24V 전압이생산되어야하나, 7~30V 불안정한전압으로소프트웨어의오류가발생하여엔진스로틀밸브가과다하게개폐되고통제할수없는상황으로사고가발생한것이었으나, 운전석바닥에깔린매트가액셀러레이터에걸려자동차가통제를잃고가속을하는것으로가장해서발표 ( 14.2) 프리우스소프트웨어결함 하이브리드시스템내전력제어장치를관장하는소프트웨어결함으로주행중차량이정지하는문제 9
2. 소프트웨어개발보안
2. 소프트웨어개발보안 소프트웨어개발보안이란? 안전한 SW 개발을위해보안을고려하여기능을설계 구현하고 SW 등에존재할수있는 잠재적인보안취약점 ( 보안약점 ) 을제거하는등의 SW 개발과정에서의일련의보안활동 요구사항분석설계및디자인구현테스트유지보수 현재는 SW 개발과정중소스코드구현및개발단계를중심으로 SW 개발보안적용 11
2. 소프트웨어개발보안 12
2. 소프트웨어개발보안 1 요구사항 2 설계및디자인 3 시공 4 준공검사 5 완공 13
2. 소프트웨어개발보안 소프트웨어개발프로세스 계획문서 요구사항표준서 시스템요구사항 요구사항분석 요구사항검토회의 SW 요구사항 기본설계 설계표준서 기본설계검토회의 SW 아키텍처 상세설계 상세설계검토회의 코딩룰분석도구 SW 설계명세 구현표준서 구현 단위구현물 통합 시험착수준비검토회의 단위통합시험자동화도구 시험운영후서비스개시 선진국 한국 요구사항검토체크리스트 설계검토체크리스트 정적분석도구 추적성검토 ( 자동화도구이용 ) 코드검토체크리스트 1 년 6 개월 3 개월 3 개월 2 개월 1 년 10 개월 14
2. 소프트웨어개발보안 소프트웨어의난개발은가독성, 유지보수성, 안정성등을위협 15
[ 참고 ] 시스템계층에따른침해사고발생빈도 방화벽 IDS/IPS 웹방화벽 개발서버 AV 웹서버 데이터베이스 Internet DDoS 잘알려진웹서버이슈 잘알려진애플리케이션레벨의공격 Back-End 서버 / 시스템 SSL 포트스캔 패턴기반의공격 애플리케이션서버 침해사고발생빈도 0.5% 3% 10% 75% 16
[ 참고 ] 침해사고사례 1 접근제어기능이취약한 해커의컴퓨터 웹애플리케이션이취약한서버 1 취약한홈페이지로그인 2 요금명세서조회 3 로그인한사용자의고객번호 (123456789) 4 Paros 에서위조된고객번호 (5678901234) 조회요청 6 5678901234 조회결과전송 조회애플리케이션 5 DB 조회요청처리 7 5678901234 조회결과전송 Paros 고객정보 DB 17
18
[ 참고 ] 침해사고사례 2 파일업로드취약점 계정관리미흡, 암호화되지않은 42 만명의이름, 주민등록번호, 이메일, 전화번호등 해킹 1 만 3 천명의프라임론패스, 비밀번호, 신용등급등 해킹 보조서버 제 3 의관련회사서버 공격당한 A 사의메인서버 침투 침투 해커컴퓨터 해커일당 필리핀 브라질등의해외서버 19
20
2. 소프트웨어개발보안방법론 SSDL(Secure Software Development Lifecycle) SDL 단계마다필수적인보안과무결성을보증하는소프트웨어개발방법론 SDL 단계별로적절한보안조치를통하여, 소프트웨어에대한안정성향상이목적대표적으로 Microsoft의 MS-SDL, 美 DHS 7 Touch Point가있음 21
[ 참고 ] 소프트웨어개발보안방법론사례 (MS-SDL) 마이크로소프트사는 SDL 을 (Secure Develop Lifecycle) 통한소프트웨어개발프로세스를 개선함으로써시스템취약점을획기적으로줄일수있었음 (Training) (Requirement) (Design) (Implementation) 소프트웨어개발보안교육 (Core training) 소프트웨어의질과버그경계정의 (Define quality gates / bug bar) 보안과프라이버시위험분석 (Analyze security and privacy risk) 공격영역분석 (Attack surface analysis) 위협모델링 (Threat modeling) 도구명세 (Specify tool) 금지된함수사용제한 (Enforce banned functions) 정적분석 (Static analysis) (Response) (Release) (Verification) 사고대응수행 (Response execution) 사고대응계획 (Response Plan) 동적 / 퍼징테스팅 (Dynamic/Fuzztesting) 최종보안검토 (Final security review) 기록보관 (Release archive) 공격영역 / 위협모델검증 (Verify threat models /attack surface) 22
[ 참고 ] 소프트웨어개발보안방법론사례 (MS-SDL) 성공사례인하나인 MS-SDL 출처 : http://www.microsoft.com/security/sdl 출처 : The Economic Impacts of Inadequate Infrastructure for SW Testing(2002.5, NIST) 사전점검을통해 SW 개발보안이이루어지면취약점조치비용절약 ( 설계단계대비최대 30 배의취약점수정비용절약 ) 23
[ 참고 ] SW 개발보안지원을위한우리의활동은? 가이드개발, 교육과정운영, 보안약점진단, 최신동향분석등 개발자 ( 심화교육 ),
3. 소프트웨어개발보안제도
3. 소프트웨어개발보안제도 보안약점 (Weakness) VS 취약점 (Vulnerability) 보안약점 (SW weakness) 해킹등실제보안사고에악용될수있는보안취약점의근본원인 보안취약점 (SW Vulnerability) 소프트웨어실행시점에보안약점이원인이되어발생하는실제적인위협 보안약점 보안취약점보안취약점예방정책 : 보안약점제거 software 26
3. 소프트웨어개발보안제도 정보시스템개발단계에서 SW( 소스코드 ) 보안약점제거조치의무화 근거 : 행정기관및공공기관정보시스템구축 운영지침 ( 행정자치부고시제 2014-1 호, 14.11.25) 구분내용비고 대상 행정기관및공공기관의정보시스템감리대상정보화사업 ('12.12 월 ) 40 억이상 ('14.1 월 ) 20 억이상 ('15.1 월 ) 감리대상전체 단계적확대 범위 소스코드 ( 신규개발전체또는유지보수로변경된부분 ) 단, 상용 SW 제외 SW 보안약점기준 (SQL 삽입등 47 개항목 ) 행정기관및공공기관정보시스템구축 운영지침 ' 별표 3' 진단기준 기준 및 기타 감리법인이진단도구사용시, 국정원장이인증한도구를사용 진단도구 : 소스코드상의 SW 보안약점을찾기위하여사용하는분석도구 감리법인이 SW 보안약점진단시, 진단원을우선적으로배치하도록권고 SW 보안약점진단원 : SW 결함, 오류등으로사이버공격을유발할가능성이있는 SW 보안약점에대한진단을수행하는자 27 '14.1 월부터적용 진단원활용
3. 소프트웨어개발보안제도 구분내용비고 행정자치부 국정원과협의하여지침고시, 가이드배포, 보안약점진단원자격부여등 행정기관등 개발업체 감리법인 제안요청서에 SW 개발보안적용 명시 개발보안을위한소프트웨어진단도구사용여부, 개발절차와방법의적절성, 교육계획의적정성을평가에반영할수있음 SW 보안약점진단 제거결과확인 감리법인 ( 감리대상사업 ) 또는자체적 ( 감리대상外사업 ) 으로수행 개발인력대상 SW 개발보안관련교육실시 SW 개발보안가이드를참조하여개발 자체적으로 SW 보안약점진단및제거 SW 보안약점제거여부진단및조치결과확인 SW 보안약점진단시, 진단원우선배치 CC 인증 ( 국정원 ) 된진단도구사용 ('14.1월부터적용 ) ( 감리법인은진단도구가진단항목을진단하는지여부를확인해야함 ] 28 발주자 ( 공무원 ) 사업자 ( 개발자 ) 감리원 ( 진단원 )
[ 참고 ] 모바일개발보안제도 행정기관및공공기관의모바일대민서비스구축시개발보안적용의무화 근거 : 모바일전자정부서비스관리지침 ( 행정자치부고시제 2014-1 호, 14.11.25) 지원기관정책기관검증기관 정책지원 정책지원 앱현황관리 기준준수권고 배포 신청기관 소스코드검증신청 소스코드검증수행 사용자 [ 모바일대국민전자정부서비스앱소스코드검증체계 ]
[ 참고 ] 모바일개발보안제도 ( 소스코드보안성검증 ) 검증단계 준비및신청 보안성보안성검증검증 배포보안성배포및및서비스검증서비스 01 제출물준비보안명세서, 실행앱, 소스코드 검증신청공문, 신청서, 제출물 02 소스코드기능보안성점검 보완조치및조치내역확인 03 각기관에서앱스토어를통한자율배포 검증수요에따라검증대기가능 최초 : 1주, 조치확인 : 1주이내 지원센터 : 2주 ( 필요시, 2주추가소요 ) 검증신청준비물 제출처 공문 검증신청서 보안명세서 소스코드, 실행파일 우편 : 서울시송파구중대로 135 IT벤처타워서관 6층보안평가인증팀 연락처 : 02-405-5377 kisaappverify@kisa.or.kr
4. SW 보안약점및정적진단의한계
4-1. 소프트웨어보안약점 입력데이터검증및표현등 7 개분류 47 개항목으로구성 유형 입력데이터검증및표현 주요내용 프로그램입력값에대한부적절한검증등으로인해발생할수있는보안약점 ( 예 ) SQL 삽입, 자원삽입, 크로스사이트스크립트등 개수 ( 총 47 개 ) 15 개 보안기능 시간및상태 인증, 접근제어, 권한관리등을적절하지않게구현시발생할수있는보안약점 ( 예 ) 부적절한인가, 중요정보평문저장, 하드코드된패스워드등 멀티프로세스동작환경에서부적절한시간및상태관리로발생할수있는보안약점 ( 예 ) 경쟁조건 (TOCTOU), 제어문을사용하지않는재귀함수등 16 개 2 개 에러처리 불충분한에러처리로중요정보가에러정보에포함되어발생할수있는보안약점 ( 예 ) 오류상황대응부재, 오류메시지를통한정보노출등 3 개 코드오류 개발자가범할수있는코딩오류로인해유발되는보안약점 ( 예 ) 널포인터역참조, 부적절한자원해제등 4 개 캡슐화 불충분한캡슐화로인가되지않은사용자에게데이터가노출될수있는보안약점 ( 예 ) 제거되지않고남은디버그코드, 시스템데이터정보노출등 5 개 API 오용 부적절하거나, 보안에취약한 API 사용으로발생할수있는보안약점 ( 예 ) DNS lookup 에의존한보안결정등 2 개 32
4-1. 소프트웨어보안약점 행정자치부 21 개웹취약점표준점검항목, OWASP, CWE 등반영 SQL 삽입 경로조작및자원삽입 크로스사이트스크립트 운영체제명령어삽입 위험한형식파일업로드 신뢰되지않은 URL 주소로자동접속연결 입력데이터검증및표현 XQuery 삽입 XPath 삽입 LDAP 삽입 크로스사이트요청위조 HTTP 응답분할 정수형오버플로우 보안기능결정에사용되는부적절한입력값 메모리버퍼오버플로우 포맷스트링삽입 적절한인증없는중요기능허용 부적절한인가 주요한자원에대한잘못된권한설정 취약한암호화알고리즘사용 중요정보평문저장 중요정보평문전송 보안기능 하드코드된비밀번호 충분하지않은키길이사용 적절하지않은난수값사용 하드코드된암호화키취약한비밀번호허용 사용자하드디스크에저장되는쿠키를통한정보노출 주석만안네포함된시스템주요정보 솔트없이일방향해쉬함수사용 무결성검사없는코드다운로드 반복된인증시도제한기능부재 시간및상태 검사시점과사용시점 종료되지않은반복문재귀함수 에러처리 오류메시지를통한정보노출 오류상황대응부재 부적절한예외처리 코드오류 Null Pointer 역참조부적절한자원해제해제된자원사용 초기화되지않은변수사용 캡슐화 잘못된세션에의한데이터정보노출 제거되지않고남은디버그코드 시스템데이터정보노출 Public 메소드부터반환된 Private 배열 Private 배열에 Public 데이터할당 API 오용 DNS Lookup 에의존한보안결정 취약한 API 사용 33
[ 참고 ] 소프트웨어개발보안관련가이드 KISA 대표홈페이지자료실 -> 안내서 / 해설서다운로드가능 http://www.kisa.or.kr/public/laws/laws3.jsp 개발보안가이드 시큐어코딩가이드 (Java) 시큐어코딩가이드 (C 언어 ) 모바일구축가이드 시큐어코딩가이드 (A-Java) 진단가이드 (2012 년 ) 진단가이드 (2013 년 ) 모바일취약점점검가이드 34
[ 참고 ] 소프트웨어개발보안관련가이드 소프트웨어개발보안가이드 35
4-2. 소스코드정적진단의한계 비정형화된패턴의소스코드보안약점은어떻게할것인가? 소프트웨어가실행되는시점에사용되는정보에대한진단은어떻게 할것인가? 사람에의해판단이필요한부분에대한진단은어떻게할것인가? 36
4-2. 소스코드정적진단의한계 SQL-INJECTION 36: <tr><td height=5 colspan=2></td></tr> 37: <? 38: $sql=" select * from poll_s_table where apm_id=$apm_id order by aps_id "; 39: $result = mysql_query($sql); 40: while($row=mysql_fetch_array($result)) { 41:?> 42: <tr> apm_id 매개변수에 SQL 구문삽입시 Mysql 오류 37
4-2. 소스코드정적진단의한계 하드코드된중요정보 http://www.xxx.xxx.xxx.xxx.go.kr/count/dbcountconn.php 1: <? 2: $dbconn = mysql_connect("localhost", A", A"); 3: mysql_select_db( A_DB",$dbconn); 4: //mysql_query("set names euckr"); 5:?> 38
4-2. 소스코드정적진단의한계 파일업로드취약점 57. var ImageFile = document.myform.filename.value; 58. var extfile = ImageFile.split("\\"); 59. var ImgInfo = extfile[extfile.length-1]; 60. var ext = ImgInfo.split("."); 61. if (ext[1].touppercase() == "JPG" ext[1].touppercase() == "GIF"){.JPG.GIF 등파일업로드가능. 첫번째확장자만검사 39
4-2. 소스코드정적진단의한계 진단기법에따른보안약점 TOP 10(2014 년진단결과 ) 크로스사이트스크립트 42.23% 크로스사이트스크립트 35.38% 부적절한예외처리 19.04% 반복된인증시도제한기능부재 12.31% 오류메시지를통한정보 15.13% 하드코드된비밀번호 10.77% 오류상황대응부재 10.22% 오류메시지를통한정보 9.23% SQL 삽입 5.26% 위험한형식파일업로드 7.69% 부적절한자원해제 1.50% 취약한비밀번호허용 4.62% 경로조작및자원삽입 1.47% Null Pointer 역참조 4.62% 잘못된세션에의한데이터정보노출 1.20% 오류상황대응부재 3.08% Null Pointer 역참조 0.68% SQL 삽입 3.08% 취약한암호화알고리즘사용 0.65% 중요정보평문전송 3.08% 40
4-2. 소스코드정적진단의한계 진단기법에따른보안약점분류 정적진단항목 22개항목 (47%) 정수형오버플로우, 부적절한자원해제 정적 + 동적진단항목 19개항목 (40.43%), 취약한암호화알고리즘사용등 SQL 삽입, 크로스사이트스크립트, 취약한비밀번호허용등 동적진단항목 6개항목 (12.77%) 적절한인증없는중요기능허용, 부적절한인가, 중요정보평문전송등 시간및상태, API 오용유형 100% 캡슐화, 코드오류 75% 이상 입력데이터검증및표현, 보안기능, 에러처리는 43.75% 이하 소스코드내용파악이필요한보안약점으로동적진단불가 부적절한자원해제, 메모리버퍼오버플로우등동적진단으로공격할지점을찾기어려움 입력데이터검증및표현, 에러처리는 66.67% 보안기능, 코드오류, 캡슐화는 31.25% 이하 시간및상태, API 오용은 0% 입력과출력이명확한항목이진단가능 에러에의해오류메시지가표현되는유형진단가능 41 보안기능은 25% 입력데이터검증및표현은 13.33% 적절한인증없는중요기능허용, 부적절한인가등의적절하지않은행위에대해소스코드로표현되는구체적인기준이없음 중요정보평문전송, 저장등의기능에대해자주사용되는패턴이없음
4-3. 효과적인소스코드진단방법 소프트웨어에대한효과적인진단방법은? 42
4-3. 효과적인소스코드진단방법 소스코드에대한정적진단과실행소프트웨어에대한동적진단병행 소스코드준비 소스코드보안약점 ( 정적분석 ) 1 차진단 화이트박스블랙박스 모의해킹 ( 동적분석 ) 1차진단 소스코드수정 소스코드보안약점 ( 정적분석 ) 2 차진단 블랙박스 모의해킹 ( 동적분석 ) 2 차진단 검증종료 43
4-3. 효과적인소스코드진단방법 IAST : 소스코드의정적분석을수행하고실행시점의동적정보를분석 IAST : Interactive Application Security Testing(SAST + DAST) 44
5. 맺음말
5. 맺음말 참여주체의인식제고및역량강화가무엇보다중요 ( 발주기관 ) 사전요구사항명시, 사업관리및개발일정에반영개발보안전문역량을갖춘사업자우대등필요 ( 개발기관 ) 자체적인개발보안체계수립 적용확산필요자체코딩표준 ( 시큐어코딩등 ) 마련, 개발전문인력 장비확보등 ( 전문기관 ) 취약성분석및기술지원, 보안가이드보급및교육과정운영등 46
[ 참고 ] 소프트웨어개발보안관련교육일정 47
Q & A
감사합니다