본문 바로가기
논문 or 세미나 or 특강

[KISA] 민간SW개발보안 대학생과정 1

by merona99 2022. 7. 27.
반응형

조선대학교 특강(2차) - KISA (POI)

일시: 2022-07-27 9:30am~2:10pm

주제: 2022 민간 SW개발보안 대학생 과정

 


[목차]

1. SW개발보안 관련 사고 사례 및 개발보안의 이해

2. SW개발보안 제도 소개 및 적용 효과

3. SW보안약점 기준

4. SW보안약점 기준별 보안대책 설명

5. 시큐어코딩 실습 Part 1 - 보안약점 유형별 실습

6. 공개SW를 활용한 진단 환경

7. 시큐어코딩 실습 Part 2 - 공개SW를 활용한 진단

 


1. SW개발보안 관련 사고 사례 및 개발보안의 이해

  • 2016년 이후 취약점 발견 건수가 6,454건에서 14,714건으로 2배 이상 증가
  • 전세계 17개국 524개 기업에서 발생한 데이터 침해사고 분석 결과 전세계 평균 피해액은 감소했으나 한국 기업들의 평균 피해액은 증가

 

[SW개발보안 관련 사고 사례]

 

1) Log4j 취약점

  • 2021년 11월 24일 Alibaba Cloud 보안팀에 의해 처음 발견
  • Java 기반 로깅 도구인 Apache Log4j 라이브러리 원격 코드 실행 취약점
  • 공격자가 로그 메시지를 제어할 수 있는 서버에서 로드된 임의의 코드 실행 가능
  • Log4j 라이브러리를 사용하는 대부분의 앱이 취약한 것으로 알려짐(사상 최악의 보안 취약점)

2) 웹사이트 해킹

  • 웹 사이트는 개발자 편의를 위한 프레임워크와 사용자 편의를 위한 플러그인 등이 존재하며, 많은 취약점이 발견됨
  • 이로인해 많은 웹 사이트가 공격자의 타겟이 되고 있으며, 꾸준히 보안사고가 발생함
  • 2010년부터 현재까지 3개 벤더에서 사용된 스프링 프레임워크에서 총 33개의 취약점 발생

  • Spring4Shell로 불리는 Spring Core에서 발생하는 원격 코드 실행 취약점 발견
  • 2004년부터 현재까지 워드프레스에서 총 382개의 취약점 발생
  • ex) 워드프레스 플러그인 취약점, 워드프레스 XXE 취약점

3) 공급망 해킹

  • 제 3자의 SW를 통해 자사의 시스템에 침투하여 악성코드 배포
  • 최근 취약한 SW를 사용하는 기관, 기업 등에 피해를 주는 공급망 해킹 공격 유행
  • 위즈베라 해킹
  • 솔라윈즈 해킹
  • 이미 115개 이상의 국가에서 5,000개 이상의 MS Exchange Server에 백도어 배포

4) IoT 해킹

  • IoT 기기가 보안에 취약한 사실은 꾸준히 제기되어 왔음
  • IoT 제품 및 서비스에 대해 보안 요구사항과 사이드라인 적용의 필요성이 강조되고 있음
  • 2016년부터 IoT 기기에 대한 해킹 시도 및 감염 건수 꾸준히 증가, 특히 2018년에는 저년대비 약 2배 증가
  • CCTV 해킹으로 인한 영상 유출 사고
  • 보안설정이 어려운 경량화된 하드웨어

[SW개발보안의 이해]

 

안전한 SW개발이란 무엇일까?

  • 사이버 보안 위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일련의 보안 활동
  • SW개발 생명주기(SDLC)의 각 단계별로 요구되는 보안활동 수행
  • 개발자 실수, 논리적 오류 등으로 발생할 수 있는 보안 취약점, 보안 약점을 최소화하여 사이버 보안 위협에 대응

 

관련 법에서 정의하는 SW개발보안

  • 소프트웨어 진흥법(법률 제 17348호)
  • 행정기관 및 공공기관 정보시스템 구축운영 지침(행정안전부고시 제2021-3호)

 

SW개발보안의 의미

  • 시큐어 SW는 보안관련 기능을 수행하는 SW가 아닌 신뢰성이 위협받는 상황에도 시스템이 신뢰할 수 있는 상태로 유지될 수 있도록 SW를 만드는 것
  • 결국 SW개발 생명주기 전반에 걸쳐 보안 활동을 추가하는 것이 SW개발보안 바법론의 핵심
  • SW개발보안 방법론 관련 사례는 CLASP, Seven-TouchPoint, MS-SDL이 존재
  • 보안약점을 SW개발단계에서 사전 제거 필요

 

SWE(Common Weakness Enumeration)

  • SW의 보안약점을 식별하기 위해 취약점을 유형별로 분류한 목록
  • 국가 사이버 보안(DHS)의 지원과 MITRE에 의해 유지
  • 학계, 보안 기업 그리고 정부와 연계해 CWE에 대한 표준을 정의
  • 현재 600개 이상의 보안약점을 포함한 CWE 목록을 식별자를 사용해 분류

 

CWE Top 25 (2021년 기준)

  • SW의 심각한 취약점으로 이어질 수 있는 가장 광범위하고 치명적인 보안약점들의 목록
  • 보안약점과 관련된 약 32,500개의 CVE로 구성된 NVD 데이터를 기반으로 개발된 목록
  • 한계점: NVD에서 공개적으로 보고되고 식별된 데이터만을 사용하기 때문에 CVE ID가 없는 수많은 취약점이 존재, 새로운 취약점에 대한 CVE ID를 부여 받아도 정보가 부족하여 적절한 CWE를 정확히 식별할 수 없는 경우도 존재

NVD(Nation Vulner ability Database)란?

  • 미국 국립 표준 기술연구소(NIST)에서 만든 취약점 DB로, 보안 컨텐츠 자동화 프로토콜(SCAP)를 사용하여 표현되는 표준 기반 취약점 관리 데이터의 미국 정부 저장소

SW개발 생명주기의 이해

  • SDLC(Sofrware Development Life Cycle)
  • SW의 생성에서 소멸까지의 과정을 단계별로 나눈 것
  • 개발 방법론에 따라 단계가 달라지지만 일반적으로 정의단계, 개발단계, 유지보수 단계로 나뉨

 

대표적인 SW개발 생명주기 모델

 

1) 개발 수정 모델(Build-Fix Model)

2) 폭포수 모델(Waterfall Model)

3) 프로토타입 모델(Prototyping Model)

4) 나선형 모델(Spiral Model)


SW개발방법론

  • SW 공학 원리를 SW개발 생명주기에 적용한 개념
구분 생명주기 개발 방식 설명
구조적 방법론 폭포수 모델 TOP-DOWN 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 체계적인 방법
객체지향 방법론 반복적 개발 BOTTOM-UP 분석,설계 및 개발에 있어서 객체지향 기법을 활용하여 시스템을 구축하는 방법
CBD 방법론 반복적 개발 BOTTOM-UP 재사용이 가능한 컴포넌트의 개발 또는 사용 컴포넌트를 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 방법

 

SW개발 방법론 변천사

 

SW개발 방법론의 문제점과 해결방안

 

  • 요구사항 분석 단계부터 안전한 SW를 만들기 위한 방법론 필요
  • 보안을 고려한 다양한 개발보안 방법론 등장
  • 개발 방법론이 적용된 프로젝트에서 안전한 SW를 만들기 위해 요구되는 보안 활동을 적용하는 개발 방법
  • 안전한 SW개발을 위해 SW개발 생명주기(SDLC)에 걸쳐 보안활동을 추가하는 중

 

1) 요구사항 분석

  • 구체적인 사용자의 문제 이해 및 SW의 정보영역 정의
  • 요구사항 정의서로 사용자의 기능,성능,신뢰도 등에 대한  요구사항 문서화
  • 요구사항 정의서는 세분화하여 업무,기술,성능,운영 요구사항 정의서로 분석 가능
  • 생성 가능한 산출물: 요구사항정의서, 기능차트, 프로세스정의서, 인터페이스 정의서 등

※ 추가 보안 활동

  • 요구사항 중 보안항목 요구사항 식별
    • 어떤 정보들이 시스템화되어 관리되어야 하는가?
    • 정보들은 얼만큼의 보안등급(기밀성,무결성,가용성)을 가져야 하는가?
    • 법률적으로 관리의 중요성이 어느 정도 강조되는가?

 

2) 설계

  • SW의 구조와 그 성분을 명확하게 밝혀 구현을 준비하는 단계
  • 설계사양서 산출
  • 산출물과 요구사양서를 기반으로 하여 사용자 지침서와 시험계획서 작성
  • 생성 가능한 산출물: 화면설계서, ERD, 테이블목록, 테이블 정의서, 프로그램 목록, 개발표준정의서, 단위 테스트 시나리오, 통합 테스트 시나리오 등

※ 추가 보안 활동

  • 개발 보안 가이드가 제시하는 작업을 기존 개발 프로세스에 추가
  • 시스템을 분석해 위협들을 도축(위협 모델링), 보안통제 기준 설정 등
    • 위협 모델링 작업을 통해 해당 위협들이 충분히 제거될 수 있도록 시스템이 설계되어야 함

 

3) 구현

  • 프로그래밍을 하는 단계
  • 각 모듈의 코딩과 디버깅 후, 결과 검증을 위한 단위테스트 또는 모듈 테스트 수행
  • 생성 가능산 산출물: 소스코드, 단위테스트 결과서, 결함/오류 보고서, 오류코드 정의서 등

※ 추가 보안 활동

  • 개발자들이 표준 코딩 정의서 또는 소프트웨어 개발보안 가이드를 준수하는 것이 중요
    • 코드 리뷰, 코드 진단 작업을 통해 코드 수준의 안정성을 보장해야 함

 

4) 테스트

  • 개발된 모듈들을 통합시키며 시험하는 통합 테스트 수행
  • 완성된 시스템으로서 요구사항을 완벽하게 구현했는지 확인
  • 사용자가 직접 자신의 사용현장에서 검증해 보는 인수 테스트 수행
  • 생성 가능한 산출물: 통합테스트 결과서, 시스템 이행계획서 등

※ 추가 보안 활동

  • 동적 분석 도구를 이용하거나, 모의 침투테스트를 통해 수행(화이트박스, 블랙박스 테스트)

 

5) 유지보수

  • 안정적인 SW로 발전시키기 위한 작업 수행
  • 직접 SW 사용 후, 나타나는 문제점 수정
  • 새로운 기능 추가

※ 추가 보안 활동

  • 발생할 수 있는 보안 사고에 대한 관리, 사고 대응, 패치 관리 및 교육 병행

MS-SDL

  • Microsoft-Secure Development Lifecycle
  • 마이크로소프트사는 보안수준이 높은 안전한 SW를 개발하기 위해 수행한 프로세스 개선
  • 자체수립한 SDL 방법론을 적용

 

Seven Touchpoints

  • 실무적으로 검증된 개발보안 방법론 중 하나
  • SW보안의 모범 사례를 SW개발 라이프사이클에 통합
  • 관련된 7개의 보안강화활동을 개발자에게 집중적으로 관리하도록 요구

 

반응형

댓글