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

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

by merona99 2022. 7. 27.
반응형

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

일시: 2022-07-27 2:25pm~5:00pm

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

 


[목차]

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

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

3. SW보안약점 기준

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

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

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

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


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

 

[민간에 적용되는 SW개발보안 관련 법 규정]


[sw개발보안 기대효과]

  • 제품출시 이전 단계에서 발견된 결함 조치 시, 유지보수 비용 절감 가능
  • 마이크로소프트(MS)에서는 개발보안 방법론을 적용한 결과, 취약점 대폭 감소 및 보안 패치 등의 유지보수 비용 감소 사례 발표
    • Windows - 제품 발표 후 1년간 공개된 취약점 수가 45% 감소
    • SQL Server - 제품 발표 후 3년간 공개된 취약점 수가 91% 감소
  • DevSecOps 적용 여부에 따른 취약점 수정 일수 차이에 대한 연구 결과
    • 동적 분석 - 174일 -> 92일
    • 정적 분석  -113일 -> 51일

 

[SW개발보안허브]

  • 중소기업 SW보안약점 진단 서비스
  • 중소기업기본법 제2조에 해당하는 중소기업을 대상으로 SW보안약점 진단을 무료로 제공하는 서비스
  • 출장형 진단
    • 진단 전문가가 직접 신청기업에 방문하여 SW 보안약점을 진단해주는 서비스
    • 약5~8일 소요
  • 내방형 진단
    • 진단 인프라가 갖춰진 SW개발보안허브에 신청기업이 내방하여 진단 전문가의 기술지원을 받아 SW보안약점을 자가진단할 수 있는 서비스
    • 약1~3일 소요

[서비스 신청방법]

1) 보호나라 홈페이지(boho.or.kr 접속 후 "보안점검 -> 중소기업 SW 개발보안 진단")

2) krcert 사이트(https://www.krcert.or.kr/webprotect/securityWeakness.do)에서 신청서 양식 작성 후 서비스 신청

 


3. SW보안약점 기준

 

3-1) 안전한 SW 구현을 위한 가이드

  • SW개발보안 제도, 보안약점 기준 등이 변경됨에 따라 SW개발보안 관련 가이드는 지속적인 개정 추진

 

Python 시큐어코딩 가이드

  • Python(Django)으로 SW개발 시 보안 위협을 최소화하기 위한 방안 제시
  • 2022년도 2월에 출시 - "민간적으로 더 확신시키겠다"의미 내포

// 파이썬/장고로 웹개발하는 나는 해당 책을 사서 정리해봐야겠다. 너무 좋은 책을 알았다.!!

 

※ 부가

  • 한국의 경우에만 전자정부가 JAVA기반이기에 웹개발에 JAVA가 많이쓰임(편리하기 때문)
  • 하지만 해외의 경우 기존 PHP로 개발한 부분을 Python으로 변경하는 추세이고 세계에서 현재 가장 많이쓰이는 언어1위가 Python임

// 파이썬을 사랑하는 나로써 너무나 좋은 이야기ㅎㅎ

 


[안전한 SW개발을 위한 분석-설계-구현-진단 절차]

  • 안전한 SW는 보안관련 기능을 수행하는 SW가 아니라, 신뢰성이 위협받는 상황에서도 시스템을 신뢰할 수 있는 상태로 유지할 수 있어야 함.
  • 따라서 SW 개발 단계별로 보안활동을 수행함으로써 안전한 SW를 개발

 

[분석단계 - 정보에 대한 보안항목 식별]

  • 외부환경 분석을 통한 보안항목 식별
    • 개인정보보호 관련 법규, 특정 IT 기술 관련 법규
    • 분석단계에서는 처리해야하는 정보와 그 정보를 처리하는 기능에 대해 적용되어야 하는 보안항목들을 식별하는 작업을 우선적으로 수행
  • 기타 중요정보 식별
    • 정보의 자산가치에 따라 중요 정보 식별
    • 법적 의무사항에 준하는 보안강도를 적용하여 정보가 처리될 수 있도록 설계

3-2) SW 설계 단계 보안활동

 

[설계단계 - 기능에 대한 보안항목 식별]

 

3-2-1) 설계보안 항목 정의

  • 입력데이터 검증 및 표현
    • 사용자,프로그램 입력 데이터에 대한 유효성 검증체계를 갖추고, 실패 시 처리할 수 있도록 설계 
    • DBMS 조회 및 결과 검증
    • DBMS 조회를 위한 질의문(SQL) 생성시 사용되는 입력값과 조회결과에 대한 검증방법(필터링 등)을 서례하고 유효하지 않은 값에 대한 처리방법을 설계
    • 취약 사례: SQL Injection
  • 보안 기능
    • 인증,접근통제,권한관리,비밀번호 등의 정책이 적절하게 반영될 수 있도록 설계
    • 암호연산
    • 국제표준 또는 검증필 프로토콜로 등재된 안전한 암호 알고리즘을 선정하여 충분한 암호키 길이,솔트,충분한 난수값을 기반으로 암호연산 수행방법을 설계
    • rand()함수는 실질적인 난수발생 함수가 아님, 실무에서는 그렇게 사용하지 않음
    • 취약 사례: base64와 같은 지나치게 간단한 인코딩 함수를 사용하면 패스워드를 안전하게 보호할 수 없음
  • 에러 처리
    • 에러 또는 오류상황을 처리하지 않거나 불충분하게 처리되어 중요정보 유출 등 보안약점이 발생하지 않도록 설계
    • 에러처리
    • 오류메시지에 중요정보(개인정보,시스템 정보,민감 정보 등)가 포함되어 출력되거나,에러 및 오류가 부적절하게 처리되어 의도치 않은 상황이 발생하는 것을 막기 위한 안전한 방안을 설계
    • 취약 사례: 시스템 정보노출
    • ex) 404 에러 출력시 -> 프레임워크 버젼 노출
    • ex) try-catch문 system.err.printf(e.getMessage()); -> 시스템 정보, 관리자 정보, DB 정보 등 중요정보 유출
  • 세션 통제
    • 다른 세션 간 데이터 공유 금지 등 세션을 안전하게 관리할 수 있도록 설계
    • 세션통제
    • 다른 세션 간 데이터 공유금지,세션 ID 노출금지,(재)로그인 시 세션ID 변경, 세션종류(비 활성화,유효기간 등)처리 등 세션을 안전하게 관리할 수 있는 방안을 설계
    • 취약 사례: 잘못된 세션에 의한 정보노출
    • 다중 스레드 환경에서는 싱글톤(Singleton)객체 필드에 경쟁조건(Race Condition) 발생할 수 있다. 따라서, 다중 스레드 환경인 java의 서블릿(servlet) 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하며, 서로 다른 세션 간에 데이터를 공유하지 않도록 해야 함

3-2-2) 설계보안 항목 적용

  • 설계 시 고려사항 및 권장사항
    • 개발하고자 하는 SW가 가질 수 있는 보안 취약성은 무엇이며 공격자가 이를 어떻게 이용할 수 있는가에 대해 고려하여 이러한 취약성이 생기지 않도록 설계
    • 고려사항
    • 개발할 SW에 취약성이 생기지 않도록 안전한 설계 필요
    • 권장방안
    • 미들웨어 프레임워크 도입 또는 공통 라이브러리 구축
  • 설계항목 적용을 위한 계획 수립
    • 다음은 설계항목 적용계획서 예시이며, 설계항목들을 설계단계에서 어떻게 반영할 것인가에 대한 계획수립요구
    • 구현하고자 하는 기능을 설명하기 위해 유스케이스 다이어그램,플로우차트 등을 작성하고, 설계단계에서 보안을 고려하여 기능들이 안전하게 동작될 수 있도록 해야

3-3) SW 구현 단계 보안활동

 

[구현단계 - 표준코딩 정의서, SW개발보안 가이드 준수]

  • 개발 시 관련한 가이드를 준수해야 하며, 이를 통해 소스 코드 수준의 안정성 보장

 

[구현단계 진단 절차]

 

[구현단계 보안약점 제거 기준]

 

[구현단계 보안 약점 제거 기준]

  • 입력데이터 검증 및 표현
  • 보안기능
  • 시간 및 상태
  • 에러처리
  • API 오용
  • 코드오류
  • 캡슐화

 

반응형

댓글