소프트웨어품질과보안 2014. 9. 4. 심원태
순서 3 Ⅰ 3Ⅱ 1
소프트웨어품질특성 2
고품질 소프트웨어 안전한 소프트웨어 안정된 소프트웨어 -3-
Software Quality Characteristics Maintainability Balci, O. (1998), Software Engineering Lecture Notes, Department of Computer Science, Virginia Tech, Blacksburg, VA. The ease with which changes can be made to satisfy new requirements or to correct deficiencies. Correctness The degree with which software adheres to its specified requirements. Reusability The ease with which software can be reused in developing other software. Reliability Portability Efficiency The frequency and criticality of software failure, where failure is an unacceptable effect or behavior occurring under permissible operating conditions. The ease with which software can be used on computer configurations other than its current one. The degree with which software fulfills its purpose without waste of resources. -4-
ISO 9126-1 Software Quality Model Functionality ( 기능성 ) Reliability ( 신뢰성 ) Usability ( 사용성 ) Efficiency ( 효율성 ) Maintainability ( 유지보수성 ) Portability ( 이식성 ) ISO 9126 : S/W 품질의특성과품질평가의 Metrics 를정의한국제표준 특정조건에서사용될때명시된요구와내재된요구를만족하는기능을제공하는 S/W 제품의능력 명세된조건에서사용될때, 성능수준을유지할수있는 S/W 제품의능력 명시된조건에서사용될경우, 사용자에의해이해되고, 학습되고사용되고선호될수있는 S/W 제품의능력 명시된조건에서사용되는자원의양에따라요구된성능을제공하는 S/W 제품의능력 환경, 요구사항및기능적명세에따른수정, 개선등으로인해 S/W 제품이변경되는능력 한환경에서다른환경으로전이될수있는 S/W 제품의능력 -5-
ISO 9126-1 Software Quality Model Functionality Subcharacteristics Suitability ( 적합성 ) Accurateness ( 정확성 ) Interoperability ( 상호운용성 ) Compliance ( 준수성 ) Security ( 보안성 ) Definitions This is the essential Functionality characteristic and refers to the appropriateness (to specification) of the functions of the software. This refers to the correctness of the functions, an ATM may provide a cash dispensing function but is the amount correct? A given software component or system does not typically function in isolation. This subcharacteristic concerns the ability of a software component to interact with other components or systems. Where appropriate certain industry (or government) laws and guidelines need to be complied with, i.e. SOX. This subcharacteristic addresses the compliant capability of software. This subcharacteristic relates to unauthorized access to the software functions. -6-
ISO 9126-1 Software Quality Model Reliability Subcharacteristics Maturity( 성숙성 ) Fault tolerance ( 오류허용성 ) Recoverability( 회복성 ) Usability Subcharacteristics Understandability ( 이해성 ) Learnability( 학습성 ) Operability( 운영성 ) -7- Definitions This subcharacteristic concerns frequency of failure of the software. The ability of software to withstand (and recover) from component, or environmental, failure. Ability to bring back a failed system to full operation, including data and network connections. Definitions Determines the ease of which the systems functions can be understood, relates to user mental models in Human Computer Interaction methods. Learning effort for different users, i.e. novice, expert, casual etc. Ability of the software to be easily operated by a given user in a given environment.
ISO 9126-1 Software Quality Model Efficiency Subcharacteristics Time behavior ( 시간반응성 ) Resource behavior ( 자원효율성 ) Maintainability Subcharacteristics Analyzability( 분석성 ) Changeability( 변경성 ) Stability( 안정성 ) Testability( 시험성 ) Definitions Characterizes response times for a given throughput, i.e. transaction rate. Characterizes resources used, i.e. memory, cpu, disk and network usage. Definitions Characterizes the ability to identify the root cause of a failure within the software. Characterizes the amount of effort to change a system. Characterizes the sensitivity to change of a given system that is the negative impact that may be caused by system changes. Characterizes the effort needed to verify (test) a system change. -8-
ISO 9126-1 Software Quality Model Portability Subcharacteristics Adaptability ( 적응성 ) Installability ( 설치성 ) Conformance ( 적합성 ) Replaceability ( 교체성 ) Definitions Characterizes the ability of the system to change to new specifications or operating environments. Characterizes the effort required to install the software. Similar to compliance for functionality, but this characteristic relates to portability. One example would be Open SQL conformance which relates to portability of database used. Characterizes the plug and play aspect of software components, that is how easy is it to exchange a given software component within a specified environment. -9-
소프트웨어보안위협 10
스마트시대의소프트웨어역할 -11-
보안취약점현황 (1/4) HeartBleed OpenSSL 취약점 (CVE-2014-0160) OpenSSL 암호화라이브러리의하트비트 (Heartbeat, 클라이언트와서버간의연결상태체크 ) 라는확장모듈에서클라이언트요청메시지를처리할때데이터길이검증을수행하지않아시스템메모리에저장된 64KB 크기의데이터를외부에서아무런제한없이탈취할수있는취약점 2013 년은 2012 년대비 28% 증가 : 5,291 건 6,787 건 랜섬웨어, 트로이잔, 백도어, 봇넷전파에이용 SLS, TLS 프로토콜의재협상취약점은공격에흔하게사용 SCADA 취약점은 32 건으로 2012 년 (85 건 ) 대비감소 Supervisory Control and Data Acquisition -12-
보안취약점현황 (2/4) 60 139 212 2013 년도자바취약점은 312 건으로 2012 년과마찬가지로증가 2012 년대비브라우저취약점은감소 오페라취약점감소 공격툴킷의사용 Adobe, Flash Player, Adobe PDF, Java MS의 IE 취약점은대폭증가 크롬취약점감소했으나, 13년취약점최다 사파리취약점대폭감소 ActiveX 취약점은감소 -13-
보안취약점현황 (3/4) 제로데이취약점공격의 97% 는자바기반 상위 5 개취약점에대한패치발표시간은평균 19 일소요 취약점공개와패치까지는평균 4 일소요 취약점은 Watering Hole 공격에자주사용 신규제로데이취약점에대한공격전환이용이 -14-
보안취약점현황 (4/4) Symantec s Website Vulnerability Assessment Services 2012년대비 25% pts 증가된 78% 가취약웹사이트 취약웹사이트의 16퍼센트는치명적취약점을내표 대상사이트 8개중 1개는해킹에노출 민감데이터접근, 웹컨텐츠변경, 방문자컴퓨터해킹 -15-
취약점유형별통계 http://web.nvd.nist.gov 6,608 6,514 5,632 5,732 4,639 4,150 5,288 5,186-16-
2013 년취약점유형별통계 http://web.nvd.nist.gov 1000 900 934 800 759 700 600 500 612 497 575 400 300 250 302 200 100 0 107 136 26 89 120 128 34 9 18 0 147 33 103 102 63 143-17-
시큐어소프트웨어개발로의진화 인터넷급성장 보안위협증가 기능중심의소프트웨어 보안은 non-functional 요소로간주 외부환경으로부터 SW 시스템을보호 공격기법진화 응용 SW 타겟 SW 보안이슈의본질 ( 설계문제 ) 부각 개발보안도입 External Security 네트워크레벨, OS 레벨 (Firewall, IDS, VPN, Secure OS 등 ) Internal Security 시큐리티개발방법론, 개발툴등 -18-
Secure Software Development Life Cycle 시큐어소프트웨어 : SW 개발생명주기에서안전하게제작된 SW 해킹에이용되는 SW 보안취약점 (Vulnerability) 을제거 보안취약점의근본원인이되는보안약점 (SW 허점 / 결점 / 오류 ) 을제거 해킹으로부터안전한 SW 를제작하기위한일련의 SW 개발활동 SDLC(Software Development Life Cycle) + Security 개발보안교육 개발보안가이드, 진단가이드 관리자 / 운영자보안교육 시작 Pre SDLC 분석설계구현시험 검수 / 감리 운영 보안 Req 도출 보안위협평가 해킹경로분석 자산식별및위협완화대책 승인도구사용 금지 API 불허 정적분석 동적 / 퍼즈테스팅 윕현대책검증 최종코드리뷰 취약점진단 -19-
시큐어소프트웨어개발적용사례 Microsoft 의 Security Development Lifecycle(SDL) Trustworthy Computing 그룹에서주도 개발생명주기내에단계별보안활동정의및준수확인, 자동화도구지원 OS 보안취약점은 45%( 비스타 ), 91%(SQL서버 2005) 감소 IBM 의 Security Engineering Framework(SEF) 소프트웨어보증의일부로 SEF를정의 제품경쟁력강화및기업명성유지전략으로추진 Risk Assess & Threat Modeling Security Reqmts Secure Coding Security Testing Security Document Incident response 국내, 행정및공공기관의정보시스템개발보안 정보시스템개발단계에서소스코드보안약점제거조치의무화 ( 12.12) 개발단계별가이드및프로젝트참여자의역할제시 제거대상의소프트웨어보안약점 47개구체적명시 -20-
참고자료 Balci, O. (1998), Software Engineering Lecture Notes, Department of Computer Science, Virginia Tech, Blacksburg, VA. ISO 9126-1 Software Quality Model 시만텍보안위협보고서 (ISTR Q3) http://www.symantec.com/ko/kr/security_response/publications/threatreport.jsp National Vulnerability Database http://web.nvd.nist.gov -21-
감사합니다
강좌명 : 시큐어코딩 강좌소개 : 강의목표 소프트웨어의품질특성과보안과의관계를이해 시큐어소프트웨어개발생명주기의각단계별활동이해 MS 社의 SDL(Security Development Lifecycle) 사례분석을통한이해제고 SW 취약점평가절차를이해하고, 안전한코딩방법학습 위스콘신대학의 FPVS(First Principles Vulnerability Assessment) 5단계취약점분석프로세스및안전코딩기술이해 시스템구조분석 자원식별 신뢰및특권분석 컴포넌트평가 결과공유 웹프로그램보안약점유형및시큐어코딩기술습득 웹프로그램구조및보안고려요소 보안약점별안전코딩기술학습 웹프로그램보안약점진단역량함양 -23-
강좌소개 : 강의내용 주 강의일자 강의주제 강의내용 1 9월 4일 소프트웨어품질과보안 소프트웨어품질특성, 보안위협 2 9월 11일 시큐어개발프로세스 MS SDL단계별보안활동 : 위협모델링프로세스등 3 9월 18일 소프트웨어취약점평가절차 소프트웨어아키텍처분석, 자원및특수권한분석, 컴포넌트분석 4 9월 25일 미들웨어시큐어코딩 (1) 취약점범주및유형, 코드분석도구및취약점보고 5 10월 2일 미들웨어시큐어코딩 (2) 취약점유형별안전코딩대책 6 10월 9일 공휴일 한글날 7 10월 16일 웹프로그램구조 웹프로그램구조및프로토콜, 보안고려요소 8 10월 23일 중간고사 시험 9 10월 30일 웹프로그램보안약점 보안약점범주및유형 10 11월 6일 웹기반시큐어코딩 (1) SQL인젝션등입력데이터검증및표현약점진단및안전코딩기법 11 11월 13일 웹기반시큐어코딩 (2) SQL인젝션등입력데이터검증및표현약점진단및안전코딩기법 12 11월 20일 웹기반시큐어코딩 (3) SQL인젝션등입력데이터검증및표현약점진단및안전코딩기법 13 11월 27일 웹기반시큐어코딩 (4) 인증, 접근제어, 권한관리등보안기능약점진단및안전코딩기법 14 12월 4일 웹기반시큐어코딩 (5) 인증, 접근제어, 권한관리등보안기능약점진단및안전코딩기법 15 12월 11일 웹기반시큐어코딩 (6) 기타약점진단및안전코딩기법 16 12월 18일 기말고사 시험 -24-
강좌소개 : 성적평가방법, 참고교재 항목반영율 출석 10% 중간고사 30% 기말고사 50% 기타 ( 참여도 ) 10% -25-