시큐어코딩
시큐어코딩(Secure Coding)이란 설계 및 구현(개발) 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법이다. 보안 취약점을 줄이기 위해서 소프트웨어 개발 초기 단계에 수정하는 것이 가장 손쉽고 비용 효율성 측면에서 가장 좋기 때문에 이 시큐어 코딩 기법을 적용하고자 한다. [1]
개요
시큐어 코딩(Seccure Coding)이란 서비스의 안정성과 신뢰성 확보를 위해 IT 시스템 개발 단계에서 주요 보안 취약점을 고려해 소스 코드 레벨에서 사전에 제거하여 안전한 소프트웨어를 개발하는 기법이다. 즉, 해킹의 기법들을 기도조차 못하게 만드는 코딩 기법이다.[2] 흔히 시큐어 코딩이라는 용어때문에 발생하는 오해는 코딩을 하는 개발자만 알아서 안전하게 하면 된다는 책임가져야 한다는 생각이다. 하지만 시큐어 코딩은 '지켜야할 일련의 보안 활동'을 의미한다. 즉, 소프트웨어를 개발하는데 있어서 코드를 안전하게 하는 절차상의 다양한 보안 활동들 전부 포함한다.[3]
필요성
수많은 과정을 거쳐 소프트웨어를 개발하는데 그만큼의 비용이 발생한다. 추가적인 노력은 흔히 말하는 MM(Man Month)를 증가시켜 비용 상승의 주범이 된다. 따라서 우리는 '서둘러 개발을 완료하고 제품 출시를 하고 유지 보수를 하면서 수정하는 것이 더 효과적이지 않을까'라고 생각할 수 있다. 하지만 아래 연구 결과를 보면 소프트웨어의 결함을 수정하는데 소요되는 비용은 해당 결함을 개발 초기 단계에서 발견할수록 미미하고, 제품이 풀시된 이후에 발견을 하게 될 경우 약 30배의 비용이 지불된다. 계발 초기 단계에서부터 안전한 소프트웨어를 위해 투자하는 비용은 전체적으로 봤을 때 오히려 비용을 절감하는 효과를 불러온다.
소프트웨어 개발 단계 별 결함 수정 비용 분석 구분 설계 단계 구현 단계 통합 단계 베타 제품 제품 출시 설계 과정 결함 1배 5배 10배 15배 30배 구현 과정 결함 - 1배 10배 20배 30배 통합 과정 결함 - - 1배 10배 20배
개발 단계별 보안 활동
- 요구사항 분석 단계 : 요구사항 중 보안 항목 식별, 요구사항 명세서
- 설계 : 위협원 도출을 위한 위협 모델링, 보안설계 검토 및 보안설계서 작성, 보안 통제 수립
- 구현 : 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수해 개발, 소스 코드 보안 약점 진단 및 개선
- 테스트 : 모의 침투 테스트 또는 동적 분석을 통한 보안취약점 진단 및 개선
- 유지보수 : 지속적인 개선 및 보안 패치[2]
각주
- ↑ Wisedog, 〈시큐어 코딩이란?〉, 《wisedog》, 2013-12-09
- ↑ 2.0 2.1 스틸스타크, 〈시큐어 코딩(SECURE CODING)〉, 《티스토리》, 2017-05-02
- ↑ LG CNS 보안컨설팅팀, 〈'시큐어코딩' 해킹당했다. 어디서부터 잘못된 거지?〉, 《LG CNS》, 2017-04-12
참고 자료
- Wisedog, 〈시큐어 코딩이란?〉, 《wisedog》, 2013-12-09
- 스틸스타크, 〈시큐어 코딩(SECURE CODING)〉, 《티스토리》, 2017-05-02
- LG CNS 보안컨설팅팀, 〈'시큐어코딩' 해킹당했다. 어디서부터 잘못된 거지?〉, 《LG CNS》, 2017-04-12
같이 보기