시큐어코딩 가이드라인 및 무료 오픈소스 점검 툴에 대해

시큐어코딩은 개발단계에서 소스 코드 취약점을 제거하여 소프트웨어적 결함이나 오류 그리고 해킹 같은 외부의 공격을 대비하는 방법입니다. 정부에서는 이를 보완하기 위해 소프트웨어의 보안 취약점을 분류하여 세부 가이드라인을 제시하고 있습니다. 이 문서에서는 시큐어코딩 가이드라인에 대한 세부 내용과 무료로 취약점을 점검할 수 있는 툴에 대해 정리해 보겠습니다.

시큐어코딩 가이드라인

시큐어코딩 가이드라인은 오류나 결함이 많이 발생하는 취약점을 정리하여 Software Code를 사전에 점검할 수 있도록 마련한 지침입니다. 2012년 행안부에서 시큐어코딩 의무화 방안을 마련하였으며 KISA에서 많이 사용되는 JAVA, Python 언어에 대한 세부 가이드라인을 참고할 수 있도록 문서를 배포하고 있습니다.

소프트웨어 보안약점

2021년 기준 행안부의 가이드라인에서는 다음과 같이 7가지로 Software 취약점을 분류하고 세부적으로 43가지 체크할 사항을 정리하였습니다.

분류세부 유형
1. 입력데이터 검증 및 표현입력값의 검증누락이나 오류에 의해 발생가능할 수 있는 공격에 대비 (SQL Injection, XSS 등)
2. 보안기능인증, 접근제어, 암호화, 권한관리를 적절하게 수행하지 않아 발생하는 오류
3. 에러처리에러처리의 부재나 부적절한 처리로 인해 소프트웨어 보안취약점 발생 가능성
4. Session 통제다른 세션간 데이터공유 및 세선 ID 사용기준의 마련 필요
5. 코드오류NULL 포인터나 메모리 누수로 인한 공격가능성
6. 캡슐화비인가자 사용자에 의한 내부 주요 정보의 노출 가능성
7. API 오용API의 잘못된 사용이나 보안에 취약한 API 사용에 따른 취약점

위의 가이드라인은 소프트웨어에서 일반적으로 발생할 수 있는 경우로서 Programing 언어에 따라 세부적인 지침이 필요합니다. Python이나 JAVA 같이 개발에 많이 사용되는 언어에 대한 시큐어코딩 가이드라인은 다음의 정보를 참고하시기 바랍니다.

시큐어코딩 점검 툴

Secure Coding을 점검하기 위해 많이 사용되는 무료 Open Source 툴에 대해 정리해 보겠습니다. 참고로 아래의 툴들은 젠킨스와 결합하면 소스코드 commit과 함께 주기적 배포 및 점검이 가능하도록 자동화할 수 있습니다. 

젠킨스 자동화를 통해 시큐어코딩 자동 점검 시스템을 구축하는 예를 섬령한 이미지
젠킨스 자동화 개념도

1. 소나큐브 Sonar Qube

소나큐브는 다양한 Rule Set을 지원하며 플러그인 설치를 통해 기능의 확장이 용이합니다. 또한 20개 이상의 프로그래밍 Language의 Bug, 보안취약점, 코딩표준 오류 등을 찾아낼 수 있으며 앞서 설명한 젠킨스 관리 도구와도 잘 호환됩니다. 

  • 지원언어목록: ABAP, Android, Apex, C#/C/C++, COBOL, CSS, Flex, Go, HTML, Java/ JavaScript, Kotlin, Objective-C, PHP, PL/I, PL/SQL, Python, RPG, Ruby, Scala, Swift, T-SQL, TypeScript, VB .NET, VB6, and XML

또한 오픈소스임에도 지속해서 업그레이드가 진행되고 있는 점도 많이 사용되는 이유 중 하나라 생각됩니다.

2. PMD : Programing Mistake Detector

PMD는 전자정부 표준 프레임워크의 표준 점검 툴로 선정되어 많이 사용하는 툴입니다. 이 룰셋은  표준 Framework 개발도구의 이클립스 Plugin으로 별도로 배포되고 있으며, 자세한 내용은 아래를 참고 하시기 바랍니다.

3. SpotBugs (구. FindBugs)

예전에 FindBugs란 이름으로 개발되었으나 현재는 SpotBugs로 변경되었습니다. 다른 툴과 비슷하게 소프트웨어의 잠재적인 결함을 찾아내는 도구로 Eclipse 플러그인 형태로 설치하여 사용할 수 있습니다. 

  • Eclipse 실행 > Help . Eclipse Marketplace 에서 검색하여 설치

4. FindSecurityBugs

프로그램의 정적 코드 분석과 동적 분석을 함께 지원하는 것이 특징입니다. 이클립스나 Android Studio, IntelliJ 개발도구에서 플러그인 형태로 추가할 수 있습니다. 


이상으로 시큐어코딩 가이드라인 및 점검할 수 있는 오픈소스 툴에 대해서 알아보았습니다. 

Leave a Comment