시큐어 코딩(Secure Coding)
- 정보처리기술사/보안
- 2017. 5. 2.
시큐어 코딩이란, 말그대로 보안 코딩이다. 즉, 코딩을 할 때 보안에 대해서 문제가 되는 부분을 제거하거나 교체하는 방식으로 가장 간단히 처리하면서 효과적인 모습을 보여준다.
상당히 많은 개발자들이 스스로 나는 코딩을 잘해라고 말하지만, 시큐어 코딩을 하는 사람을 많이 보지 못했다. 머리속에 있는 것을 구현하는 것은 초중급이상만 되면 누구나 할 수 있는 것이다(사람마다 시간의 편차가 존재할 수 있지만...) 하지만, 시큐어 코딩(Secure Coding)이나 클린 코딩(Clean Coding)같은 다음 Level의 코딩 혹은 철학 없이는 고급 개발자로 절대 갈수가 없다.
그럼 시큐어 코딩이 왜 중요한가??? 첫 문장에 적었지만, 가장 간단히 처리하면서 효과적인 모습이기 때문인데 정의를 읽어보면 좀 더 쉽게 이해가 갈 것이다.
1. 공격에 대한 예방 및 대응을 위한 시큐어 코딩(Secure Coding)의 개요
가. 시큐어 코딩(Secure Coding)의 개념
- 서비스의 안정성과 신뢰성 확보를 위해 IT 시스템 개발 단계에서 주요 보안 취약점을 고려하여 소스코드 레벨에서 사전에 제거하여 안전한 SW를 개발하는 기법
- 즉, 해킹의 기법들을 시도조차 못하게 만드는 코딩 기법
나. 시큐어 코딩의 필요성
- 미국표준기술연구소(NIST)에서는 제품출시 단계에 발견되는 결함을 제거하기 위해 30배의 비용이 요구된다고 발표함
2. 시큐어 코딩을 위한 개발 보안 방법론
- 시큐어 코딩을 위한 개발 방법론이 완전히 별도로 있는 것은 아니고, 기존의 SW 개발 생명주기(SDLC)에서 보안 활동을 추가하는 것
- 기존의 SDLC는 폭포수모델(Waterfall)이나 프로토타입(Prototype), 나선형모델(Spiral) 같은 것들이 존재
가. 요구사항 분석 단계
- 요구사항 중 보안 항목 식별
- 요구사항 명세서
나. 설계
- 위협원 도출을 위한 위협 모델링
- 보안설계 검토 및 보안설계서 작성
- 보안 통제 수립
다. 구현
- 표준 코딩 정의서 및 SW개발보안 가이드를 준수해 개발
- 소스코드 보안약점 진단 및 개선
라. 테스트
- 모의침투 테스트 또는 동적분석을 통한 보안취약점 진단 및 개선
마. 유지보수
- 지속적인 개선
- 보안패치
3. 개발 보안 방법론 사례
가. MS-SDL(MicroSoft - Secure Development Lifecycle)
- MS에서 보안수준이 높은 안전한 소프트웨어를 개발하기 위해 자체수립한 SDL(Secure Development Lifecycle)이며, 방법론이 적용되기 전 버전보다 50% 이상 취약점 감소함
- 교육부터 대응까지 총 7단계로 나뉨
나. Seven Touchpoints
- 실무적으로 검증된 개발보안 방법론 중 하나로써 SW 보안의 모범 사례를 SDLC에 통합한 방법론
- MS-SDL과 동일하게 7개의 보안강화 활동을 정의함
다. CLASP(Comprehensive, Lightweight Application Security Process)
- 소프트웨어 개발 생명주기 초기단계에 보안강화를 목적으로 하는 정형화된 프로세스로써, 활동중심·역할기반의 프로세스로 구성된 집합체
- 이미 운영중인 시스템에 적용하기 좋음
- 개념, 역할 기반, 활동 평가, 활동 구현, 취약성의 5가지 관점에 따라 개발보안 프로세스를 수행할 것은 제안
4. CWE(Common Weakness Enumeration) Seven Pernicious Kingdoms
- SW 보안약점은 7개의 큰 항목과 47개의 세부 항목으로 구분됨
- 보안약점(Weakness) : SW 결함의 한 종류로 보안취약점을 유발하는 원인
- 보안취약점(Vulnerability) : 해커가 시스템 접근 권한 획득 등 직접 이용할 수 있는 SW 상의 결함
시큐어 코딩은 코드 없이는 이해하기가 힘이 들고, 너무 방대한 양이기에 실제 코드를 짜보는 식으로 글을 나누어서 설명할 예정입니다.
'정보처리기술사 > 보안' 카테고리의 다른 글
디지털 인질극, 랜섬웨어(Ransomware) (0) | 2020.01.24 |
---|---|
시큐어 코딩(Secure Coding) 1. SQL injection(SQL 삽입공격) (2) | 2017.05.02 |
보안운영체제(Secure OS, 시큐어 OS), 신뢰성 운영체제(Trusted OS) (0) | 2016.10.28 |
암호화 알고리즘(Cryptography algorithm) (0) | 2016.10.27 |
내부 네트워크의 접근을 통제하는 NAC(Network Access Control) (1) | 2016.10.26 |