서버 업로드 않고 개발자가 로컬PC서 보안약점 직접 점검…분석시간 단축

[Overview]
직관적인 UI…개발 툴과 동일한 화면 구성
소프트웨어 소스코드의 보안약점을 동적분석 방식으로 점검하는 시큐어코딩 솔루션은 사용방법이 어렵고 점검절차가 복잡하다는 단점이 있다. 소스코드 점검을 위한 솔루션 설치가 복잡하고, 사용자 UI가 어렵거나 컴파일과정을 거치는 과정 상의 불편함이 있기도 한다.

시큐어코딩 솔루션은 소프트웨어 개발 라이프 사이클(SDLC)에서 널리 적용될 수 있지만, 이처럼 방법 및 절차가 복잡한 탓에 개발자나 관리자가 제품을 도입하길 꺼리거나, 도입 후에도 잘 활용하지 않는 경우가 있다.

트리니티소프트의 시큐어코딩 제품인 ‘CODE-RAY XG(이하 코드레이 엑스지)’는 이러한 문제점을 개선하기 위한 노력이 충분히 반영된 정적분석 솔루션으로, 사용자 편의성을 확보한 점이 돋보인다.

▲ 로컬PC에 분석엔진이 설치되어 소스코드의 직접점검 가능
[Review]
복잡한 컴파일과정 없이도 소스코드만으로 보안약점을 바로 분석=먼저 컴파일과정 없이 소스코드만으로 보안약점을 바로 분석하는 기능이 주목된다. 1세대 시큐어코딩 제품은 보안약점 점검을 위해 복잡한 컴파일 과정을 거친다. 개발자들이 이해하는 문법에 맞는 소스코드가 있으면, 이 소스코드를 기계어 즉 컴퓨터가 알 수 있는 언어로 바꿔주는 중간단계를 컴파일이라고 한다.

1세대 시큐어코딩 제품은 컴파일 환경을 구축하기 위해서 라이브러리나 환경세팅을 맞춰야 분석을 진행할 수 있었다. 예를 들면 자바파일은 공통 라이브러리 혹은 오픈소스 라이브러리를 가지고 와서 환경을 맞춰주어야 컴파일이 가능하다. 코드레이 엑스지는 가상컴파일 기술을 사용하여 소스코드만으로 보안약점 점검을 가능하게 한 점이 돋보였다.

▲ 요청사유에 따른 예외신청과 그 승인 및 진행
보안약점 분석시간 단축 효과=코드레이 엑스지는 자바 파일의 바이트코드를 가상컴파일시켜 의미를 분석하는 기법을 쓴다. 즉, 일련의 메소드나 클래스가 어떤 작업을 위해 사용되는 것인지 가상컴파일 과정을 거쳐 그 의미를 확인하여 룰작업을 한 후 매칭을 해서 보안약점을 탐지하는 방식을 쓴다. 이를 통해 라이브러리를 컴파일할 필요 없이 개발자는 직접 작성한 코드만 집중해서 분석할 수 있다.

사용자가 컴파일과정을 거친다면, 소스의 양에 따라 차이가 있겠으나 환경을 설정하는 시간이 보통 반나절, 길게는 하루까지 소요된다. 이 때문에 컴파일 없이 소스코드만 받아 바로 분석하는 방식을 쓰면, 사용이 매우 간편하면서도 점검시간을 크게 줄일 수 있는 장점이 있다. 또한 컴파일과정이 없어지면서 사용자 UI가 상당히 직관적으로 변모했다. 수반되어야 했던 복잡한 기능들이 사라지고, UI가 한눈에 들어오게 개선된 점이 주목된다.

▲ 연관라인 및 소스라인 이동의 직관적 표현
로컬PC에서 직접 보안약점 점검=개발자들이 로컬PC에서 소스코드의 보안약점을 바로 점검하는 기능도 매력적이다. 개발자들은 개발에 사용하는 PC에서 플러그인이나 개발 툴을 이용해서 소스코드를 작성한다.
종래 방식은 이 소스코드를 분석하려면 서버 쪽으로 소스코드를 업로드하는 과정을 거쳐야 한다. 반면 코드레이 엑스지는 소스코드를 서버에 업로드하는 과정 없이 로컬PC에서 소스코드를 직접 점검할 수 있다. 코드레이 엑스지는 서버에도 분석엔진이 있지만 로컬PC에도 분석엔진이 설치된다. 따라서 개발자는 소스코드를 업로드하지 않고 이클립스와 비쥬얼 스튜디오로 코딩함과 동시에 코드레이 플러그인을 통해 분석엔진을 돌려 나온 보안약점을 확인/수정할 수 있다.

개발자가 소스코드를 서버에 올리고 확인하는 것은 시간이 오래 걸리는 불편한 작업이다. 코드레이 엑스지는 로컬PC에 분석엔진을 심는 방식으로 이러한 과정을 생략하고, 소스코드에서 개발자들이 쉽게 보안약점을 점검하게 만들었다. 개발자가 점검한 결과를 업로드하면 서버에서는 해당 프로젝트에 대한 이력관리를 지원한다. 이를 통해 개발자가 어떤 보안약점을 점검했고 보안약점이 얼만큼 나왔는지도 바로 확인할 수 있다.

▲ 파일별, 취약점별, 분류별로 검사결과 제공
관리자 승인 후 오탐 예외 처리=예외관리 기능도 돋보인다. 오탐이 나왔을 때 어떤 이유로 발생했는지 확인하고 해당결과를 탐지대상에서 제외할 때 사용한다. 이 기능을 이용해 개발자가 자신이 탐지한 전부를 예외 처리하게 되는 문제를 개선할 수 있다. 또한 예외처리 신청 시, 관리자가 타당성을 검토한 후 예외를 승인하게 되는 제어기능도 갖췄다.

코드레이 엑스지는 연관관계 분석 기능으로 파일 간 점검이 정확= 탐지정확성과 관련된 '연관관계 분석' 기능이 제공된다. 특정소스의 보안약점에 관련된 연관소스를 정확하게 찾아내어 직관적으로 보여주기 때문에 개발자 및 보안관리자가 파일과 파일 간에 서로 연관되어 있는 보안약점을 쉽고 정확하게 찾아내서 수정할 수 있다.

혹여 개발자에게 최종 탐지라인만 보여준다면 해당 보안약점이 어떤 이유로 탐지되었는지 파악하기 어려울 수 있기 때문에, 코드레이 엑스지는 UI상에서 연관라인들에 대해 직관적으로 보여주고 해당 부분으로의 소스라인 이동을 제공함으로써 보안약점 파악 및 사용편의성을 충분히 확보한다.

▲ 다양한 컴플라이언스 기준에 부합하는 맞춤형 보고서
야간 스케줄링으로 전체 소스코드 점검=배포기능은 리포지토리에 소스코드를 올려놓고 해당 특정 버전의 리비전을 모두 가져와서 서버 상에서 점검하는 것이다. 서버에서 스케줄링을 걸어 최신 리비전을 점검할 수 있는데, 작업을 하지 않는 야간에 전체 소스코드를 점검할 때 사용하면 편리하다. 리비전은 개발자가 변경해서 올린 시점 기준으로 소스코드를 이력 관리하는 일종의 번호표이다.

소스코드 검사는 이렇게 진행된다=우선 사용자는 검사방법 설정을 하게 된다. 검사방법이라 함은, 사용할 엔진과 파서 및 확장자를 정의하고 프리셋과 예외처리 등을 설정하는 것이다. 설정완료 후 검사가 시작된다. 코드레이 엑스지는 이 검사결과에 대해 파일별/취약점별/분류별 3가지 형태로 UI를 제공하므로 사용자는 화면에서 결과를 손쉽게 확인할 수 있다.

상세 탐지결과를 보면 가운데에는 연관된 소스들이 열려있게 되며, 해당 소스 뷰는 에이터 기능으로 직접적인 수정이 가능하다. 그 우측에는 어떤 흐름 하에 탐지가 되었는지에 대한 연관라인들이 출력되어 있고, 각 노드를 클릭하면 해당라인으로 이동하기 때문에 사용자는 왜 탐지가 되었는지 이해하기 쉽다.

연관라인 우측에는 해당 보안약점에 대한 설명과 해결책이 적혀 있으므로 사용자는 하나의 화면에서 보안약점에 대한 이해 및 소스 확인, 최종적으로 시큐어코딩까지 진행 할 수 있다.

IDE 플러그인 제공=또한 코드레이 엑스지는 개발자들이 보편적으로 사용하는 이클립스와 비쥬얼 스튜디오의 플러그인도 제공한다. 초기 개발 단계에서부터 개발과 동시에 보안약점 분석 및 시큐어코딩이 개발툴 내에서 가능한 이유이다.

사용자가 직접 탐지룰 작성=사용자가 탐지룰을 작성할 수 있는 기능은 다양한 개발환경을 가진 기업들이 적용하면 좋을 것이다. 보안담당자나 개발자 중 PM이 본 기능에 관심이 높을 것으로 예상된다. 회사마다 독자적으로 개발한 프레임워크를 시큐어코딩 제품이 모두 지원하기에는 쉽지 않기 때문이다. 탐지룰의 변경 및 추가가 요구될 때 코드레이 엑스지의 본 기능을 사용하여, 사용자는 보안약점에 대한 설명 및 해결책과 탐지할 수 있는 룰도 자바 스크립트로 직접 작성할 수 있다.

편리한 룰의 동기화 기능=프리셋이나 점검규칙 등을 서버에 설정하면 개발자 로컬PC도 해당 프로젝트와 점검규칙을 동기화하도록 했다. 개발자가 작업을 위해 로그인하면 예외처리한 내용이나 점검규칙들이 동기화된다.

▲ 개발자 지정을 통해 상세한 권한제어 기능을 적용
다양한 형식의 보고서 지원=PDF, 엑셀, HWP 등 다양한 보고서 형식을 지원하고 있다. 전체 요약, 위험도별 요약, 상세분석 내용이 포함되며 컴플라이언스 기준을 맞추기 위한 7가지 유형의 보고서가 제공된다. 보안약점 탐지량이 많을 경우 보고서가 일만장이 넘어가는데 비해, 코드레이 엑스지는 5분 이내로 결과를 출력한다. 타 솔루션에 비해 출력속도가 매우 빠른 편이다.

행정자치부의 47개 필수 보안약점 기준으로 보고서를 출력해 보았다. 항목마다 점검된 보안약점 개수와 요약을 보여준다. 상세페이지에서는 47개 기준으로 해당 보안약점에 대한 설명과 위험도, 검출 개수를 알려준다. 또한 실제 탐지된 소스코드가 캡처화면으로 보여지고, 연관라인과 탐지라인이 함께 표시되며 이에 대한 보안대책까지 제공된다. 더불어 해당 보안약점이 발견된 소스코드의 경로와 라인정보 등이 표로 일목요연하게 정리되어 표시된다.

개발자마다 권한관리 설정=생성한 프로젝트마다 개발자를 지정하여 프로젝트에 대한 접근제어나 권한제어 기능을 이용할 수 있다. 기본적인 권한유형으로는 관리자, 개발자, 모니터가 있다. 추가적으로는 기능별 정책설정 후, 권한 자체를 생성하여 이를 사용자마다 할당하는 방식이다. 예컨대 직무/직급과 같은 내부 특정구분에 따라 할당하거나, 외부 상주업체에게 특정 기능만 사용이 가능한 권한을 주는 등 보다 상세한 권한관리 방식을 채택하였다.

 
[결론]
트리니티소프트의 코드레이 엑스지는 소스코드를 컴파일하지 않고 바로 보안약점을 점검하는 기술이 차별성을 갖는다. 로컬PC에서 보안약점을 점검하는 기능과 스케줄링 기능이 개발생산성을 탁월히 높여준다. 언어에 따라 차이는 있으나, 정탐률이 80~90%까지 이르게 된 것은 오탐이 많았던 과거에 비하면 매우 주목할 만한 성과라 할 수 있다. 

임영규 기자
저작권자 © 데일리그리드 무단전재 및 재배포 금지