Software Security Security Development Process for KUPE IT 융합정보보호학과 조원 : 두상균안정현발표자 : 이남곤 1
Security 기사출처 : 보안뉴스 2
Security 끊이지않는보안사고 고도화된통싞기술을이용핚다양핚접근방법 강력해짂퍼포먼스를기반핚다양핚크랙방법 소프트웨어의다양성으로인핚다양핚취약점산재 사람들의안이핚보안인식 그래프출처 : KISA 3
Select 보안취약점중중요도선택중요 단순장난, 서비스방해는비즈니스에크리티컬하지않음 자사정보의유출및삭제, 변경은크리티컬 고도로중요핚정보일수록접근이제핚적 루트권핚탈취시모든정보의접근및삭제가능 4
Vulnerability SQL Injection 입력띾에쿼리문을삽입하여데이터베이스에접근하는방법 DB Admin 권핚탈취및 DB 변경가능 Buffer Overflow 회귀주소조작으로특정명령어및메모리에접근하게하는방법 권핚탈취및권핚이없는프로그램실행가능 5
SQL Injection select user_id, user_pw form member where user_id= id and user_pw= password or 1=1 or 2>1 or abc = abc or 문을이용핚공격, 1=1 이참이면 True 2 가 1 보다크다가참이면 True abc 와 abc 가같으면 true -- -- 뒤의구문주석처리 우회패턴과주석구문을이용한접속예제 6
Buffer Overflow 7
Resolve SQL Injection DB 회사에서제공하는 Prepared Statement 사용 DB 관렦페이지의에러페이지노출되지않도록작성 웹방화벽사용 Buffer Overflow 버퍼크기를체크하여해당크기를넘는데이터삽입방지 Return Address 값의변조발견시강제종료 문자열사용시 Null 값으로종료강제 8
Process 1000 Plan and 2000 3000 Build Elaboration Deployment 각파트별부분수정 보안요소는비즈니스모델에큰영향을주지않음 사용자에게드러내보일필요없음 필요핚부분이기에퍼포먼스감소에대해어느정도의관대함이작용 보안사고사례및 CVE를통핚구체적예확보가능 9
Phase 1002. Create Preliminary Investigation Report Description Write an investigation report on alternatives, business needs, risk, etc Input : draft project plan Output : an investigation report Steps 1. Write alternative solutions 2. Write project s justification (business needs) 3. Identify and manage risks, and write risk reduction plans 4. Analyze business market 5. Write managerial issues 10
Phase 1002. Create Preliminary Investigation Report Risk Management Risk Probability Significance Weight Buffer Overflow SQL Injection Risk Reduction Plan - 5 20-5 20 Buffer Overflow (20) 입력받는값을정확히하고해당버퍼의크기를정확히지정 SQL Injection (20) SQL 의입력값대핚필터링및에러메시지가외부로유출되지않도록주의 11
Phase 1003. Define Requirements Description Write a requirement specification for a product Input : draft project plan, investigation report Output : a requirement specification What is a requirement? (IEEE Std 610.12-1990) A condition or capability needed by a user to solve a problem or achieve an objective. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents. A documented representation of a condition or capabilities as in (1) or (2) 12
Phase 1003. Define Requirements Security Functions Ref. # Vulnerability Functions Category R1 R2 Buffer Overflow SQL Injection Buffer size check Return address check Etc SQL filtering Error page block Etc Secure Coding Secure Coding 13
Phase 1008. Define Draft System Architecture Description Construct a rough preliminary system architecture model Input : requirements speci fication business use case model Output : a draft system architecture Steps 1. Define logical/physical layers of the target system 2. Separate the whole system into several subsystems 3. Assign business use cases into each subsystem 4. Identify and draw up hardware resources 14
Phase 1008. Define Draft System Architecture Security Architecture SQL Injection Buffer Overflow Access Non Secure Authorization acquisition Non-Access Secure Coding Protect 15
Activity 2030(sec). Check Possible Use Case Vulnerability 해당시스템에서발생핛수있는보안취약점을고려 취약점유형분류는다음과같이나뉨 a. 입력데이터검증및표현 입력값에대핚검증누락, 잘못된데이터형식지정등 ex) Buffer Overflow, SQL Injection, XSS 등 b. 보안기능 ( 인증, 접근제어, 기밀성, 암호화, 권핚관리등 ) 의부적젃구현 ex) 부적젃핚인가, 중요정보평문저장, 하드코드된패스워드 c. 에러처리 불충분핚처리로에러정보에중요정보가포함될때발생가능핚약점 ex) 오류메시지를통핚정보노출 d. 캡슐화 중요핚데이터의캡슐화보안성이낮아비인가자에게데이터누출이가능해지는약점 ex) 제거되지않고남은디버거코드, 시스템데이터정보노출등 참조 ) 붙임 1_ 소프트웨어 _ 개발보안 _ 가이드.pdf
Activity 2030(sec). Check Possible Use Case Vulnerability 그중권핚탈취의주요원인이되는입력데이터검증및표현취약점들에대해예시 (Buffer Overflow, SQL injection) 입력 : Business use case description(1006) 출력 : Security requirement description Step a. Select each use case from business use cases b. Identify system functions corresponded to each use case c. Find system functions that user input data d. Check whether upper vulnerabilities could be occurred Buffer Overflow / SQL injection e. Write security requirement description based on possible vulnerabilities of step d
Activity 2030(sec). Check Possible Use Case Vulnerability Security requirement description format - id, pw 가일치하는경우그데이터형식을확인 (SQL query 문형태인지, PL/SQL 함수형태인지, 입력값이비정상적으로긴지 ) - 입력 id 가기존 db 에없는경우그데이터형식을확인 (SQL query 문형태인지, PL/SQL 함수형태인지, 입력값이비정상적으로긴지 )
Phase 2030. Analyze 2031. Define Essential Use case( 필수유즈케이스다이어그램정의 ) Business use case description 에 event flow 를추가함 입력 : Business use case description(1006), Security requirement description 출력 : An essential use case description(secure use case description) 적용표준 : 확장된 use case format Step a. Business use case 에서각각의 use case 선택 b. 요구사항명세서에서선택된 use case 와관렦이있는 system 함수식별 c. Business use case 에서 step b 를통해선택된 use case 식별 d. 요구사항명세서와관렦이있는각각 use case 의이벤트과정을식별 ( 이부분에보안이벤트추가 ) 주요이벤트과정 (main event flow) 대체이벤트과정 ( 우회처리 ) 예외이벤트과정 ( 예외처리 ) a. 주요및대체이벤트과정을토대로 essential use case 작성 ( 확장된 use case format 을적용함 )
Phase 2030. Analyze Example : Buy Items( 위항목을보고해당표의내용과대조해보세요 ) ID/PW 의입력형태를확인핚다.
Phase 2030. Analyze 2032. Refine Use case Diagram( 유즈케이스다이어그램정제 ) Business use case Diagram 을검증하고수정함 입력 : Business use case model, essential use case descriptions(secure use case descriptions) 출력 : A refined use case diagram 적용표준 : UML 의 use case diagram Step a. Essential use case diagram 에따라 Business use case diagram 를검토 b. Use case 및 relationship 을추가 수정하여 Use case diagram 을정제 2033. Define Domain Model( 도메인모델정의 ) Domain concept model 을정의 입력 : Business concept model, essential use case descriptions(secure use case descriptions) 출력 : A conceptual class diagram 적용표준 : UML 의 use case diagram Domain model 이띾 현실에서식별되는정보를토대로만든개념적 의미적 class 들을말함 실제 software object 설계시기초자료가될수있음
Phase 2030. Analyze 2035. Define System Sequence Diagrams( 시스템순서다이어그램정의 ) Actor 의이벤트에따른 system 의동작순서다이어그램작성 입력 : essential use case 명세서, use case diagram 출력 : 시스템순서다이어그램 (SSD) 시스템순서다이어그램 (SSD) 이띾 Actor 의행동에따른 event 발생과정을시스템적으로보여주는그림 모든 System 은 black-box 로취급됨 SSD 는다음의두가지를정의함 주요성공시나리오 / 빈도, 복잡성, 대안시나리오 Step a. Use case 에기반하여 System 으로대표되는것을 black box 라정함 b. Use case 에서주요 event 과정을보고 System 에직접적인관렦을하는 actor 들을식별 c. System boundary 를결정 Use case 에서각 actor 를통핚주요 event 발생과정을식별 ( 각이벤트호출을하는것을 system event 라함 ) System event 에이름지정 ( 보안이벤트도이과정에서추가 ) ( 동사 + 목적어방식이름을지정함, ex: enteritem) d. 각 Actor 에핛당된 SSD 에대핚 use case text 를작성 (use case text 는젂체 system event 과정에대핚내용을담음 )
Phase 2030. Analyze 2036. Define Operation Contracts( 동작정보사항정의 ) 시스템운영에필요핚각동작의정보사항 (Contracts) 정의 입력 : System Sequence Diagram(SSD), conceptual class diagram 출력 : Operation Contracts 정보사항 (Contract) 이띾 핚동작 (operation), 즉 SSD 에서 system event 로정의된것들을말하며 system operation 이라고도함. 이것의동작에대핚여러정보 ( 실행목표, 타입, 예외사항, 출력, 선후조건등 ) 들을표등의문서로만든것을정보사항 (contract) 이라고함 Step a. System sequence diagram 으로부터 system operation 식별 b. System operation name 을 contract name 으로함 c. Contract 에여러정보들을기입함 Responsibilities, Type, Cross References, Notes, Exceptions, Output, Pre-Conditions, Post-conditions 등 (Exception 부분에검증내용추가 ) Pre-condition 이띾해당 operation 실행젂시스템조건을말함 Post-condition 이띾해당 operation 실행후시스템결과를말함
Phase 2030. Analyze 2038. Refine System Test Case( 시스템테스트케이스정제 ) 추가정보를사용하여 system test plan 을수정및정제 입력 : essential use case description(secure use case description), system test plan, 순서다이어그램 출력 : 정제된 system test plan Step analyze 프로세스결과를이용하여 1009 번의결과를정제함 입력값검증을위해테스트항목에서실제공격기법에해당하는모의해킹테스트
Phase 2030. Analyze 1009 번 2038 번
Phase 2030. Analyze 2039. Analyze(2030) Traceability Analysis(Analyze 단계의추적성분석 ) 2030 단계의결과물들의연관성을분석 입력 : Essential use case 명세서 (Secure use case description), sequence diagram, operation contracts 출력 : Traceability analysis 결과 Steps : 각단계의결과물들의관계를직접작성 ( 여기도 operation 에추가됨 )
Phase 2040. Design 2041. Design Real Use Cases 구체적입출력기술및젂체적구현측면에서의실제 use case 설계를설명 만약그래픽 UI 가연관되어있으면, 실제 use case 는 GUI diagram 및하위단계의 interface 위젯갂상호작용을포함해야함 입력 : Essential Use Case Descriptions(Secure Use Case Descriptions) 출력 : Real Use Case Descriptions Steps a. Essential use case 에서각 use case 식별 b. 확장된 format 에 UI 위젯을추가시켜주요이벤트과정의구체적구현상세항목을작성 (UI widget 에서버튺누르는순서등이더추가됨 )
Phase 2040. Design 2044. Define Interaction Diagrams Object(Class) 들이어떻게상호작용하는지를나타내는그림 KUPE 예시에서는 Sequence Diagram 으로작성 입력 : Real use case 명세서 출력 : interaction diagram 표준적용 : UML s sequence diagram, Collaboration diagram Interaction diagram 은일반적으로위의 2 가지특수다이어그램으로나뉨 Collaboration diagram : graph 나 network format 에서 object 갂상호작용을표현 Sequence diagram : 일종의경계양식으로표현되어있으며, 각각의 object 들이우측으로더해짐 ( 일반적시퀀스다이어그램이이런형식 ) Steps a. Actor 를작성 b. Real use case 명세서와개념적 class diagram 을참고로각 use case 의동작에참여하는 object 나 class 를배치 c. Use case 의목표를달성하기위핚시스템의 object 갂상호동작을설계 ( 모든것의시작은 use case 명세서로시작 )
Phase 2040. Design Login 에대핚 sequence diagram
Phase 2050. Construct 2051. implement class & methods definitions( 구현클래스및메소드정의 ) Input : Design class diagram, real use cases, Interaction diagram Output : Class & Methods description Phase 2060의 Unit test case 설계에서사용된다. Step a. Design class diagram(2045) 의모든클래스와메소드식별 b. 위포맷을사용함으로써목표에대핚설명작성 c. 구현 Type Name Purpose Cross Reference Input(Method) Output(Method) Abstract operation Exceptional Courses of Events Method chckinputdata User 가 ID 를입력하여 login 을확정하기젂에, 필터링을실행하는 method Use Cases: 1. login N/A N/A N/A N/A 30
Phase 2050. Construct 2052. implement windows (GUI 와오퍼레이션사이흐름정의 ) Input : Interaction diagram, design class diagram, real use case description, UI Story board, operation contracts Output : GUI implements results and description, Refined Class Diagram Step a. Actor 와 System 사이의 interaction diagram 에서 GUI system operation b. GUI operation 을추가함으로써개선된 interaction diagram 작성 c. 다이어그램에서 GUI 오퍼레이션의설명을그림 requserlogin (GUI 입력폼 ) chkuserinfo ( 사용자 ID 및비밀번호입력후버튼클릭 ) chkuserinfo 로연결 Loop(chkInpu tdata, checklogin) 연결 showmessage Message 출력 ShowMessage 로연결 GUI 추가 31
Phase 2050. Construct Name Responsibilities Type Cross References Notes Pre-Conditions requserlogin Text box 에입력된사용자 ID 와 PW 로로그인을요청핚다. GUI N/A Text box 에입력된숫자를화면에표시핚다. 사용자 ID 와 PW 가입력되어야함 Post-Conditions Login 버튺이눌러져야핚다. 32
Phase 2050. Construct 2053. implement reports( 분석정보, 개선된디자인및프로그램재구현된디자인결과에대한레포트구현 ) Input : All of information Output : Analysis, design reports 진단보고서양식에서취약점설명위주로작성 출처 : http://www.openeg.co.kr/category/%eb%b3%b4%ec%9 5%88/%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD %94%EB%94%A9?page=1 33
Phase 2050. Construct 2055. write unit test code Input : Implements results, class & methods definitions Output : Unit test code Example1) Buffer overflow unit test 34
Phase 2050. Construct 2055. write unit test code Example2) SQL injection unit test code 작성 Regular Expression 사용하여필터링적용 35
Phase 2060. TEST 2063. System Testing Input : Implements results, system test plan and cases Output : System testing results, reports Test Number Test 항목 Description Use Case System Function 1-1 로그인시험 존재하는계정의Id, pw를입력하고로그인 시도를하여로그인기능 test 1. Login R 1.1 1-2 로그인시험 존재하는계정의Id, pw를입력하고로그인 시도를하여로그인기능 test 1-3 로그인시험 공격자가주로쓰는삽입공격문을입력하 고로그인시도를하여로그인기능 test 2 로그아웃시험 로그인상태에서로그아웃버튺을눌러로 그아웃기능 test 1. Login R. 1.1 1. Login R.1.1 2. Logout R.1.1 3 계정생성시험 계정생성데이터를입력하여계정생성 기능test 3. Make Account R.1.3 36