• 검색 결과가 없습니다.

R&D연구결과보고서

N/A
N/A
Protected

Academic year: 2021

Share "R&D연구결과보고서"

Copied!
140
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

주관기관 (주)엔키소프트 참여기관 이븐스타

숭실대학교

미래창조과학부

오픈소스 소프트웨어 취약점 분석기술 및 플랫폼 개발 The analysis technology of a vulnerability on an open-source software, and the development

of Platform

(2)

[보고 서식 제2호]

연차보고서

사업명 정보보호 핵심 원천기술 개발사업 과제번호 R0112-14-1061

과제명

(국문) 오픈소스 소프트웨어 취약점 분석기술 및 플랫폼 개발

(영문) The analysis technology of a vulnerability on an open-source software, and the development of Platform

주관기관 (주)엔키소프트 총괄책임자 박용주 상무

참여기관

(책임자) 이븐스타(오승현 차장), 숭실대학교(박재표 교수) 총수행기간 2014. 10. 01. ~ 2017. 08. 31. (3년)

협약기간 2015. 09. 01. ~ 2016. 08. 31. (1년) 해당년도

수행기간 2015. 09. 01. ~ 2016. 08. 31. (12개월) 협약기간

총사업비(천원)

정 부

출연금 3,045,000 민 간 부담금

현금 33,850,000

4,060,350 현물 981,500,000

해당연도 사업비(천원)

정 부

출연금 1,015,000 민 간 부담금

현금 -

1,353,450 현물 338,450,000

키워드 (6 ~ 10개)

Open Source, Vulnerability, Smart Fuzzing, Symbolic Execution, Exploit, Secure Coding, Zero Day, Analysis Engine, Analysis Platform

정보통신․방송 연구개발 관리규정 33조에 의거하여 연차보고서를 제출합니다.

2016 년 7 월 27 일 총괄책임자: 박 용 주 (인) 주관기관장: 정 경 현 (인)

미래창조과학부 장관 귀하

(3)

Ⅰ. 해당 연도 추진 현황

Ⅰ-1 기술개발 추진 일정

(계획 : 실적 : ) 일련

번호 개발 내용 추진 일정(개월) 달성도

9 10 11 12 1 2 3 4 5 6 7 8 (%)

1 오픈소스 취약위험성 기준 및

자동분류 기술 개발 100%

2 기호기반 분석엔진 기술개발 100%

3 스마트퍼징 원천기술 개발 100%

4 전문가협업을 위한

플랫폼 고도화 100%

5 하이브리드 엔진구축 및

리포팅 기술 100%

6 CWE 호환성 인증추진 100%

7 익스플로잇터블 검증기술

연구 100%

8 자동 익스플로잇 생성기술

연구 100%

9 취약점 익스플로잇터블

스코어 100%

10 정량적 취약점 탐지율 향상 100%

(4)

Ⅰ-2 해당 연도 추진 실적

1. 개발 대상 기술․제품의 개요

오픈소스 소프트웨어의 안전성 점검이 가능한 보안 취약점(Vulnerability) 분석 기술과 발견된 취약점에 대한 자동 패치가 가능한 SW 취약 분석을 위한 통합 플랫폼(Open Source Vulnerability analysis System, 이하 'OpenSVS')개발

그림 1 소스코드 취약점 분석 전체 시스템 개요

(1) 개발 기술․제품 내역 :

점진적으로 다양한 ICT 산업 분야로 확산 되어가는 공개·오픈 소스 SW의 개발 과 정 중 코딩단계에서 발생할 수 있는 취약점을 제거하기 위해 보안에 취약한 코드를 안전한 코딩으로 변경할 수 있도록 하는 것을 개발 하는 것으로서, 취약점 분석 Database를 구축하고, 객관적인 데이터에 근거한 취약점 발생 위험성이 높은 공개·

오픈 소스 SW들을 대상으로 자동 수집 후, 화이트박스 테스팅과 블랙박스 테스팅 을 수행함으로써 취약점을 내포하고 있는 소스를 진단하고, 진단 결과를 리포팅하 여 자동 패치 및 가이드라인을 제공함

가. 소프트웨어 프로그램 단위 내의 입력 변수에 문자값이 아닌 기호값을 할당시켜 프로그램을 실행하여 문제가 있는지의 여부를 확인하는 기법으로 입력에 대한 기호값을 식 내의 연산수에 전달함으로써 프로그램을 분석할 수 있는 “기호실행 엔진 (Symbolic Execution Engine)"을 개발하여 종래의 정적분석(Static Analysis) 엔진의 한계점 보완 및 시스템이 Panic 상태가 될 수 있는 정확한 데이터 수치값 추출.

(5)

그림 2 소스코드 취약점 분석 시스템 구성도

나. 상용·오픈 소스를 대상으로 데이터모델링 기반의 스마트 퍼징(Smart Fuzzing) 분석 기법 적용을 위해 퍼징 툴을 개발하고 기호기반 실행엔진에서 도출된 Panic Data를 연계하여 운영환경 상에서 통해 Exploit 할 수 있는 Penetration Test 환경 제공

다. 웹 기반의 취약점 분석에 대한 오픈 커뮤니티 및 전문가 협업환경 제공을 통한 글로벌 보안 아고라 구축

(2) 핵심기술 및 라이프사이클

가. 공개·오픈 소스 SW 수집 엔진 :

o 전 세계적으로 가장 많은 공개·오픈소스들이 등록 및 관리되어지고 있는 소스포지(Sourceforge)와 코드프로젝트(codeproject), 지트허브(GitHub)등의 공개·오픈소스들을 주기적으로 수집하여 소스코드 및 관련 컨텐츠들을 저장 관리함

o MITRE(미국)에 의해 분류된 CWE(Common Weakness Enumeration) 카테고리 및 CVE(Commeon Vulnerability Enumeration) 명세를 기준으로 위험성 높은

(6)

공개·오픈소스들을 대상으로 웹 크롤링(Web crawling) 기술을 활용, 자동 인덱싱하여 체계적으로 분류하고 관리함

o 웹 크롤러(Web crawler)는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램으로 당해연도 수행기간 내, 고도화되고 자동화된 OpenSVS만의 웹 크롤러 시스템을 구현하여 활용

나. 소스코드 취약점 탐지 화이트박스 엔진 :

o 공개·오픈 소스 SW 수집 엔진은 분석의뢰 대상 소스코드를 중간코드로 변환하고, 변환된 중간코드와 가공된 데이터를 암호화하여 취약점 분석엔진 서버로 전송

o 취약점DB로부터 분석에 요청된 최신의 점검 규칙들을 가져와서 패턴기반 및 컴파일러 기반의 기호실행을 이용한 소스코드 레벨에서의 취약점 탐지를 병행 수행하고, 블랙박스 테스팅에 연계할 수 있도록 테스팅 결과의 취약코드 추출

다. 스마트 퍼징 기술 :

o 스마트 퍼징은 소프트웨어 취약점을 발견하기 위한 자동화된 방법으로 스마트 퍼징을 위해서는 우선 퍼징을 수행하고자 하는 대상 소프트웨어에 대한 Site 분석을 통한 진입점(Entry Point)을 정의하여야 하며, 기호기반엔진과 연계할 수 있는 분석 단위 모듈에 대한 진입점과의 매핑을 자동으로 수행

o 기존의 퍼징(Dumb Fuzzing)과 달리 스마트 퍼징(Smart Fuzzing)은 정적 분석(취약점 정보, 입력 파일 구조)을 통해 모델링화 시키고, 모델링된 데이터 구조와 취약코드를 기호기반 실행엔진과 연계 Fuzzing하여 입력 데이터를 추출하는 기술

라. 취약 의심 코드 클론에 대한 자동 검증 기술 :

o 탐지된 취약점이 Exploitable한지를 검증하고, 검증된 Exploitable한 취약점을 통해 자동으로 Exploit을 만들어내는 기술

o 프로그램에서 취약점을 찾는 것은 해당 프로그램의 버그를 찾는 것인데 버그 중에서 보안과 관련된 것을 취약점이라고 한다. 취약점을 찾는다고 해서 이것이 무조건 가치가 있는 것이 아니라 이 취약점이 가치를 가지게 하려면 익스플로잇(Exploit) 코드가 만들어져야 함

(7)

o 취약점을 찾은 후에 Exploit을 만들기 위해선 총 3단계가 요구됨 Vulnerability -> Exploitable -> Exploit

o 만들어진 Exploit을 바탕으로 취약코드와 취약한 이유를 분석

그림 3 Vulnerability와 Exploitable 관계도

단계 설명

Vulnerablity 단순한 프로그램의 버그 단계 Exploitable

Vulnerablity와 Exploit의 중간 단계로 익스플로잇 코드를 만들 수 있는지 적용하는 단계, 즉 수많은 버그 중 익스플로잇 코드를 작성할 수 있는지에 대한 결정을 하는 단계

Exploit 취약점을 이용해서 공격 할 수 있는 단계 표 1-3-1 Exploit 생성을 위한 3단계

마. 취약점 자동 패치 가이드라인 및 하이브리드 리포팅 엔진 :

o 분석이 완료된 코드들의 진단 결과, 보안영향도 평가지표에 따른 평가성적표, 취약점이 없는 안전한 코딩 제안 등을 조회할 수 있고, 발견된 취약점에 대하여 취약점 패치 및 완화를 위한 가이드라인을 자동으로 리포팅

o 소스코드를 대상으로 하는 정적분석과 런타임 코드를 대상으로 동적분석을 실시하여 취약점 탐지 범위가 서로 다른 취약점들에 대해서 융합 분석 및 정적/동적 분석간의 교차분석을 통해 발견된 취약점의 탐지 정확도를 높임

바. 분석 업무 효율화를 위한 플랫폼 :

o 복수의 기관 및 취약점 분석가들의 협업을 위한 플랫폼 구축

o 시간, 비용, 기술적 문제로 인해 발생할 수 있는 공개·오픈소스들의 취약점을 분석함으로서 신뢰성이 확보된 공개·오픈소스들에 대한 정보 제공

(8)

그림 4 오픈소스 수집기의 수집 프로세스

2. 2차년도 상세 추진 실적

(1) 오픈소스 취약위험성 기준 및 자동분류 기술 개발 가. 오픈소스 수집도구 고도화

o 취약점 분석 플랫폼의 가장 첫 단추에 해당되는 모듈로 알려진 글로벌 소스 레파지토리(Sourceforge, GitHub, etc)로부터 오픈소스를 수집하는 시스템으로써 지정된 스케줄에 따라 주기적으로 오픈소스를 다운받아 당해년도에 구축된 소스 형상관리 시스템에 다운받은 소스를 적재한다.

o 파일럿 버전으로 구축된 1차년도 수집기 SW를 고도화하여, 수집하는 오픈소스의 소스코드는 물론, 카테고리 분류, 언어, 라이센스, 설명 등 모든 메타정보까지도 자동으로 수집하여 적재하며, 수집 대상이 되는 오픈소스는 발견된 취약점정보를 빅데이터 Infra를 활용하여 도출된 위험성 기준에 따라 자동으로 선별하게 된다.

o 수집 프로세스

(9)

그림 5 수집도구 실행후 초기화면

그림 6 수집도구 프로젝트 탭 캡쳐화면

o 수집도구 주요 실행화면

- 웹크롤링을 위해서는 기본적으로 표준 repository 프로토콜인 SVN, CVS, GIT프로그램이 설치되어 있어야 함

(10)

그림 7 수집도구 프로젝트 정보보기 화면

- 프로젝트 탭 :

프로젝트(Project)는 Web Crawler 에서 수집하고자 하는 시작 페이지를 의미한다. 프로젝트는 크게 Github와 Sourceforge 2가지 항목의 하위목록으로 추가할 수 있다.

- 구성요소 설명 1) 사이트 정보

Github 또는 sourceforge에 대한 기본정보를 나타낸다.

2) 프로젝트 목록

프로젝트를 트리형태로 보여준다. 각 프로젝트는 github 또는 sourceforge 하위요소로 추가된다.

3-1) 프로젝트 정보

사이트에 추가한 프로젝트에 대한 정보를 입력한다. 프로젝트에 대한 자세한 정보 및 프로파일 매핑을 통해 프로젝트를 관리할 수 있다.

3-2) 검색 정보

사이트에 추가한 프로젝트에 대한 정보를 입력한다. 검색조건 명칭과 소스를 다운/커밋할 경로를 지정하고, OpenSVS와 연동하여 검색 URL을 제공받아 크롤링하게 된다.

(11)

그림 8 수집도구 프로파일 탭 캡쳐화면

- 프로파일 탭 :

데이터를 수집하기 위해서는 대상 사이트에서 수집하고자 하는 페이지들의 관계와 각 페이지에서 컨텐츠들이 어떻게 구성되어 있는지를 프로그램에 알려 주어야 한다. 프로파일은 이런 사이트와 페이지의 구성 정보를 명시하는 XML 문서 형식의 파일이며 수집 작업에 대한 하나의 명세가 된다. (프로젝트 탭의 각 프로젝트들과 매핑되어 요소정보에 지정한 정보를 수집하게 됨)

- 구성요소 설명 1) 프로파일 목록

프로파일의 목록을 나타낸다. 버튼을 통해 추가 및 삭제 할 수 있다.

2) 프로파일 정보

프로파일의 이름과 주소를 입력할 수 있다.

3) 프로파일 요소 정보

프로파일의 요소 정보를 설정한다. 웹 뷰를 통해 자동으로 입력 할 수도 있고, 직접 입력할 수도 있다.

4) 웹 뷰

(12)

그림 9 수집도구 스케줄 탭 캡쳐화면

프로파일의 주소페이지로 이동한다. 간단하게는 웹 브라우저의 기능을 하며, 웹 뷰를 통해 프로파일의 요소정보를 추출할 수 있다.

- 스케줄 탭

웹 크롤러 수행에 대한 스케줄 정보를 입력하여 자동으로 수집할 수 있도록 도와준다.

- 구성요소 1) 스케줄 목록

스케줄의 목록을 나타낸다. 버튼을 통해 추가 및 삭제 할 수 있다.

2) 스케줄 정보

스케줄의 이름과 수집주기, 수행시간 및 사용여부를 설정할 수 있다.

3) 스케줄 대상 프로젝트

스케줄을 걸어둘 프로젝트를 설정할 수 있다. 전체목록 중 스케줄을 설정할 프로젝트는 대상프로젝트 쪽으로 이동하여 관리한다.

(13)

나. Big Data 인프라 플랫폼 탑재 o 도입 개요

- 글로벌 Repository에 존재하는 수십만 건의 오픈소스들 중에서, 수집(Crawling)의 우선순위를 부여하여 ① 보안에 상대적으로 더욱 취약한 오픈소스를 선(先)수집하거나, ② 최근의 보안 기술동향에 부합되는 오픈소스를 선택 수집 및 분석하기 위해 수집기준 정립이 필요하다고 판단함

- 상기의 수집기준을 ‘취약위험성 사전예측 기술’이라고 하며, 이에는 OpenSVS 플랫폼이 누적분석한 데이터를 바탕으로 취약위험성 기준을 도출하는 내적기준(Inner criteria)과 공식보안 채널로부터 획득하는 외적기준(Outter criteria)으로 분류할 수 있다.

- 취약점 분석결과로 적재된 분석 결과DB와 국제취약점 표준화 기구 (Mitre)로부터 동기화되는 CWE(Comon Weakness Enumeration)/ CVE(Comon Vulnerability Enumeration)정보를 매핑하여 CVE description을 추출하고, 외부 비정형정보를 융합분석하여 오픈소스 수집기의 위험성기준을 도출하기 위한 빅데이터 인프라를 OpenSVS 플랫폼에 탑재하였다. 탑재된 솔루션은 Apache UIMA1) 로써 정형/비정형 정보를 실시간 분석하고, 데이터증가에 따른 Scale Out기능을 지원하고 있다.

o Weakness Learning (취약점 학습)

- OpenSVS 플랫폼에서 축적되는 분석 데이터는 오픈소스 수집량에 비례하여 기하급수적으로 증가하게 되어 결국엔 Big-Data 되며, Big-Data Infrastructure에 적용되는 취약위험성 추출 알고리즘에 따라 오픈소스 수집을 위한 취약위험성 기준은 자체 분석 Data만으로도 학습을 통해 신뢰성 있는 취약위험성 키워드를 도출할 수 있는 Weakness Learning의 순환구조를 가지게 된다.

- 이에 실시간으로 급변하는 외적 보안요소 및 동향정보를 가미하여, 실시간

1) UIMA (Unstructured Information Management Architecture)의 약어로, 데이터베이스처럼 정형적인 자료가 아닌 문서자료 나 음성 파일 등 비정형 텍스트 빅데이터 분석에 유용한 Apache진영의 오픈소스

(14)

보안 Trend의 플랫폼 반영을 도모하고 있다.

o 빅데이터 분석 오픈소스 - UIMA

o 빅데이터 분석을 통한 검색 키워드 생성

- Cralwer 프로젝트 수집시 적용될 키워드 관리 1) 외부 키워드

보안관련 논문, 최신 기사, 학회 발표자료 등에서 발췌하여 등록

2) 내부 키워드

· OpenSVS에 등록된 프로젝트의 취약점 분석결과 데이터

· 취약점 분석결과 데이터를 Big Data분석을 통해 키워드 도출

· Big Data분석 Framework로 Apache-UIMA 활용

o UIMA CPE(Collection Processing Engine)을 통한 분석모형

(15)

1) CR (Collection Reader)에서 비정형 데이터 수집 DB 또는 File, etc

2) ArtifactProducer : 비동기방식으로 CR에서 데이터를 전달받아 Work Queue 에 적재

3) Work Queue : 분석대상 Queue

4) AE1~AEn : Analysis Engine, 사용자 정의 Rule에 따라 데이터 분석 5) Output Queue : CAS Consumer로 분석결과 데이터 전달을 위한 Queue 6) CAS Consumer : 분석결과 데이터 저장 DB 또는 File 등의 저장매체

o 데이터 분석 프로세스

o 분석결과를 활용한 Crawling 동작 절차

(16)

o 빅데이터 化에 따른 Scale Out 모형

- Collection Processing Engine을 Multi로 구성 - 단일 CPE 內, Analysis Engine을 Multi로 구성

다. 오픈소스 분류체계 정립

(17)

o 구축 개요

- 글로벌 Repository로부터 수집하는 오픈소스는 다양한 도메인 분류정보와 Operating System, License, Language, 및 기타 부가정보들의 메타정보로 구성되어 있어 오픈소스 분류체계의 정립이 필수적이며, 소스 수집기(Crawler)가 자동 수집시, 플랫폼 내부에서 관리되는 기준정보에 자동 매핑되어 관리 된다.

o 오픈소스 분류 체계

(18)

(2) 기호기반 분석엔진 기술 개발 가. 개발 개요

o 기호실행 엔진은 소스코드 보안약점을 점검하는 정적 분석 단점을 보완해 준다.

o 정적 분석으로 보안약점/보안취약점을 점검하는 것은 100%의 코드 점검 커버리지를 제공하지만 모든 가능한 입력 값에 대한 검증을 행하진 않는다.

o 기호실행 엔진을 통해 테스트 케이스를 자동 생성할 수 있다.

o 기호 입력에 프로그램을 실행한다.

o 실행 경로가 분기하거나 나눠질 때 할 때 기호 값에 constraint를 추가한다.

o 종료 혹은 클래스 시, constraint solver로 concrete 입력 값을 생성한다.

o 기호실행 엔진을 통해 테스트 케이스를 자동 생성할 수 있다.

그림 17 기호실행 엔진

o 프로그램 단위 내의 입력 변수에 문자 값보다 기호 값을 할당시키는 확인 기법.

입력에 대한 기호 값을 식 내의 연산수에 전달함으로써 프로그램을 분석할 수 있다. 그 결과로 나온 기호 식은 모든 중간 계산과 판단이 항상 기호 입력에 대해서 표시될 수 있도록 간소화된다.

(19)

그림 18 top level design

나. 시스템 요구사항 분석

o 본 시스템은 프로그램 소스에 대한 기호실행을 실시한다.

o Core는 소스를 읽어 데이터에 대한 기호값을 매칭한다.

o 분기분에서 제한(constraint)을 통해 값의 범위를 지정한다.

o SMT에 의해 데이터 셋이 생성된다.

o 생성된 데이터 셋을 정상적인 경우와 에러 또는 보안 취약점 등으로 분류된다.

o 분류된 데이터를 바탕으로 익스플로잇을 생성에 사용한다.

그림 19 시스템 아키텍처

(20)

구분 상세 항목 및 요구사항

Core

- Java 바이트 코드의 명시적인 상태 모델 검사

- 기본 VM과 모델이 포함되어 있으며, 동시성 교착 상태(deadlocks)와

같은 결함 및 NullPointerExceptions가 및 AssertionErrors 등 처리되지 않은 예외를 확인하는 데 사용한다

Choice Generator

- 기호실행 중에 조건 분기에서 비 결정적 선택을 처리한다.

- Software model checking은 실행 환경과 tool의 resource의 제약 내에서 interesting system 상태에 도달하기 위해 선택하는 적합한 모든 일에 관여한 다.

- Choice Generators로서 조직적으로 state space를 분석하는 기호실행엔 진에 의해 사용되는 mechanism을 참조한다.

-Choice Generators는 application perspective(어플리케이션 관점)에서 접 근, 또는 기호실행엔진의 implementation perspective (실행 관점)에서 접근 할 수 있다.

Native peer

- Model Java Interface (MJI)

- Java 이외의 실행 상태 (files, network, windows, ..)

- native method호출을 차단하고 host VM에 의해 실행되는 native peer method에 대한 호출의 교체는 venerable optimization (훌륭한 최적화)가 될 수 있다.

- 서로 다른 object models(객체 모델) 간의 변환을 하는 것이다.: Model Java Interface

Bytecode set - 데이터를 Bytecode 로 변화하여 관리한다.

publisher/-ext

- verification reports(검증 보고서)를 작성하는데 사용된다.

- 특히 중요한 topics, start, transition, constraint, property_violation, finished configurable를 여러 형태로 배포한다.(console, XML, HTML, etc)

Serializer - 속성에 대해 무관 한 순열을 여러 가지 상태로 생성하지 않는다.

Search strategy 메모리를 관리하여 조기에 버그를 검색한다,

검색사례를 요약,구성하여 검색 정책을 캡슐화 한다.

ㅇ 본 시스템은 Core, Choice generator, Native peer, Bytecode set, Publisher/-ext, Listener/ property, Serializer restorer, Search strategy를 통해 동작하며 각 모델에서 동작하는 정보 및 그 정보를 제공 할 수 있도록 다음과 같은 요구 사항을 기술한다.

표 2 기호실행 엔진 요구사항

(21)

다. 데이터 인터페이스

o 기호실행엔지는 크게 기호실행엔진, SMT, EXE, 스마트퍼징, 익스플로잇, DB가 각각이 독립적으로 구성되며 DB를 제외한 각각의 Server 들의 데이터는 API를 통해서 흐르게 된다.

표 2 데이터 인터페이스 구성도

라. SMT 엔진 설계 (SMT Solver)

o SMT란 Satisfiability Modulo Theories의 약자로 SAT solver 는 참과 거짓값만을 갖는 명제 변수(predicate variable)만을 다룰 수 있는 데 반해 SMT solver 는 구현체가 제공하는 이론이 허락하는 영역으로 다양한 타입의 변수를 다룰 수 있다. SMT solver는 자연수, 정수, 실수 등을 기본적으로 사용할 수 있는 이론이 제공되며 비트 벡터, 리스트, 배열 등 다양한 데이타 구조를 다룰 수 있는 이론을 탑재한 한다. 즉 SAT solver 가 가진 기능에다 방정식 및 부등식 등을 풀 수 있는 기능을 더했다고 할 수 있다. 주목할 점은 SAT 문제가 다루는 영역은 유한하지만 (명제변수가 n개일 때 모든 가능한 경우는 2^n으로 유한) SMT solver 가 다룰 수 있는 값들 중에는 자연수 정수 실수 등 무한한 영역의 것들이 있다는 점입니다. SMT solver 는 그런 무한한 영역에 대한 decidable theory, 즉 참인지 거짓인지를 유한 시간 안에 검사하여 결정할 수 있는 문제만을 다루는 것을 목표로 하기 때문에 정수나 실수 등을

(22)

다룬다고 해도 모든 종류의 방정식이나 부등식 등을 다 풀지는 않는다.

그림 21 SMT formula

마. EXE (EXecution generated Executions)

o SMT Solver를 통하여 만들어지 코드를 통하여 자동으로 고유의 테스트 케이스를 생성 할 수 있다.

o 코드는 조건에 따라 심볼릭 표현식을 선택하면 EXE를 통하여 실행된다.

o EXE는 path가 종단이거나 버그를 발생 시킬때의 테스트 케이스를 자동 생성한다.

o EXE는 추적 가능한 각각의 경로에 대하여 모든 제약 조건을 실행한다.

o EXE(EXecution generated Executions)는 일반적이진 않지만 효과적으로 깊숙이 숨어 있는 버그를 발견할 수 있는 도구다. SMT solver를 활용하면 모든 분기에 다다들 수 있는 데이터 셋을 구할 수 있다. 이 데이터셋을 하나씩 실행해 보면 보안취약점이 발생하는 분기를 파악할 수 있는데, 이때의 데이터를 실행할 수 있는 스크립트를 생성하게 되면 자동 익스플로잇이 된다.

o 코드를 수동 혹은 랜덤하게 발생된 입력에 의해 실행하는 대신 EXE는 초기에 어떤 값일 수 있는 기호 입력에 의존하여 실행된다. 체크된 코드가 실행하면서 만일 기호에 의존(즉, input-derive)하여 실행된다면, EXE는 이것의 대응하는 입력 제한으로 제어를 대체한다. 코드가 조건적으로 기호 표현을 체크할 대, EXE는 분기 한다. 이때 표현식이 참이면 참 분기로 거짓이면 거짓으로 간다.

경로가 종료되거나 버그를 만났을 때, EXE는 자동으로 테스트 케이스를 생성한다. 이때 테스트 케이스는 같이 디자인된 constraint solver STP를 사용해 콘크리트 값에 대한 경로 제약을 해결한 후 이 경로를 실행한다.

(23)

o 소스코드에 포함된 보안 취약점을 찾아내는 것이기 때문에 취약점을 인도하는 분기의 데이터 값을 이용하여 자동으로 테스트 케이스를 작성할 수 있다.

이렇게 작성된 데이터를 자동 실행하는 스마트 퍼징 기술과 접목이 되면 보안약점을 찾아낼 수 있는 테스트를 보다 쉽고 효율적을 수행할 수 있다.

o 메뉴얼 또는 랜덤하게 구성된 입력코드를 실행하며 EXE는 무엇이든 실행 할 수 있도록 처음 입력을 symbolic으로 한다.

o 기호실행 (symbolic execution) + constraint solving 바. 상세 구현 기술

o 로컬 Core엔진 Web 컨버팅 - 연구개발 내용

다음 년도 개발된 Pilot 버전의 기호기반 분석엔진(로컬(Main stand alone)을 웹서비스에 적용 가능하도록 Core엔진 형태로 개발한 뒤 전자정부 표준 프레임워크에서 실행할 수 있도록 웹 서비스 엔진으로 컨버팅 하였으며 그 결과로 웹을 통해 분석이 가능하도록 개발하여 OpenSVS와 연계를 할 수 있는 기반을 만들었다.

- 코어모듈

코어는 기본 VM 및 인프라를 검사하는 모델을 포함하고 있으며 동시성 교착 상태(deadlocks)와 같은 결함 및 NullPointerExceptions가 및 AssertionErrors 등 처리되지 않은 예외를 확인하는 데 사용한다.

- Listeners

코어는 세 가지 주요 카테고리로 분류된다.

- program properties - execution monitoring - execution control

- 주요 구현 예정 Listeners - AssertionProperty - BudgetChecker - CGMonitor - TraceStorer - ChoiceSelector - CoverageAnalyzer - DeadlockAnalyzer

(24)

- ExecTracker - IdleFilter

- PathOutputMonitor - PreciseRaceDetector - ExceptionInjector - SearchMonitor - LogConsole - 단위테스트 결과

웹 엔진으로 컨버팅하여 로컬엔진 상태에 준하는 분석 기능을 테스트 하였으며 분석데이터를 데이터베이스에 저장하여 분석된 내용이 제대로 웹화면을 통하여 출력되는지 확인 하였다.

o Dynamic Web Compiler - 연구개발 내용

기호기반 분석엔진을 웹으로 컨버팅 되면서 ByteCode를 분석하는 엔진의 특성상 웹 기반에서 작동하는 Compiler의 필요성이 제기되어 Compile의 기능을 웹으로 컨트롤 할 수 있는 Dynamic Web Compiler를 개발하여 기호기반 분석엔진의 웹을 통한 접근에 한층 더 수월 할 수 있도록 하였다.

그림 22 Dynamic Web Compiler 흐름도

(25)

- 단위테스트 결과

전자정부 표준 프레임웍에 장착하여 에러파일을 제외한 모든 파일이 컴파일 됨을 확인하였다.

o Maven Web System - 연구개발 내용

기호기반 분석엔진을 웹으로 컨버팅되면서 Dynamic Web Compiler라 개발 되고 해당 Compile 시 필요한 라이브러리를 자동으로 Maven을 통하여 다운로드 받기위하여 Eclipse 나 OS상의 설치형 이었던 Maven 시스템을 웹적으로 구현하여 기호기반 분석엔진과 web Compiler에 분석 기능의 안전성을 높일 수 있게 되었다.

그림 23 Maven Web System 흐름도

- 단위테스트 결과

정상적인 메이븐 환경의 프로젝트 라이브러리의 모든 의존성을 파악하여 필요한 모든 라이브러리를 다운로드 가능함을 확인하였으며 일부 플러그인 에러 시에도 작동함을 확인 하였다.

o Symbolic Method Detector 방법론 - 연구개발 내용

(26)

기호기반 분석엔진의 수동화 영역인 Method 선택 프로세스 즉, 분석소스 중 관리자가 분석 가능, 또는 취약점이 의심되는 소스의 method를 선택하는 수동화된 프로세스를 자동화 할 수 있도록 지능적 학습을 이용한 method 자동 선택 프로세스의 방법론을 확립하고 개발에 적용하고 있다.

그림 24 Symbolic Method Detector 마인드맵

그림 25 Symbolic Method Detector 아키텍처

(27)

그림 26 Symbolic Method Detector 흐름도

o 기호기반분석 엔진을 통한 분석

- 기호실행 테스트 데이터를 통한 division by zero

기호실행엔진을 통하여 test 메소드에 입력가능한 매개변수를 추출하여 테스트에 이용한다. 이 추출된 매개변수는 입력 변수에 문자값보다 기호값을 할당시키는 확인 기법으로 입력에 대한 기호값을 메소드 내의 연산수식에 전달함으로써 프로그램을 분석할 수 있다.

그 결과로 나온 기호식은 모든 중간 계산과 판단이 항상 기호 입력에 대해서 표시될 수 있도록 간소화된다. 그래서 모든 경우의 매개변수와 결과에 대하여 테이블로 정리가 가능하며 그 매개변수 중 division by zero를 일으키는 값을 검출한다.

- Race Condition에 의한 Deadlock 발생가능 취약점 검출

일반적으로 Race Condition은 어플리케이션이나 웹이 실행 상태일때 데이터흐름을 발생시켜 검출을 할 수 있으나 실제적으로 실행상태에서 검출하기에는 시간과 리소스가 많이 투입되며 테스트 환경 및 경우의 수에 따라 해당 현상이 검출되지 않을 수 있다.

이러한 문제점을 해결하기 위하여 기호실행엔진을 통해 Race Condition을 발생, 검출하였다. 기호실행엔진은 정적분석엔진으로 되어 있으나 자체 VM(가상머신) 통하여 소스가 비실행 상태에서도 데이터의 흐름을 만들어 실제 deadlock이 발생할 수 있는 곳을 검출할 수 있도록 개발 되었다.

(28)

- 블랙박스 테스팅을 위한 기호실행 데이터 생성

기호 실행 : 프로그램 단위 내의 입력 변수에 문자값보다 기호값을 할당시키는 확인 기법. 입력에 대한 기호값을 식 내의 연산수에 전달함으로써 프로그램을 분석할 수 있다. 그 결과로 나온 기호식은 모든 중간 계산과 판단이 항상 기호 입력에 대해서 표시될 수 있도록 간소화된다.

기호 실행 데이터 : 퍼징을 위한 기초 데이터로 타겟이되는 프로그램에 모든 경우의 수의 데이터를 흘려보내 정상적인이거나 오류가 생길 수 도 있는 데이터 셋이다.

(29)

(3) 스마트퍼징 원천기술 개발

가. 구축 개요

ㅇ 일반적으로 소프트웨어에 무작위의 데이터를 반복하여 입력하여 소프트웨어의 조직적인 실패를 유발함으로써 소프트웨어의 취약점을 찾는 방법을 Fuzzing이라고 한다.

ㅇ OpenSVS Fuzzer는 기호기반 분석엔진과 연동하여 Fuzzing에 필요한 데이터를 생성하고, 생성한 데이터를 기반으로 Fuzzing 작업을 처리하는 Smart Fuzzer이다.

ㅇ Application에서 기호기반 분석을 처리하기 위한 시작점과 기호기반 분석엔진에서 다루는 영역(Class, Method 등)이 일치하지 않기 때문에, 둘 간의 Mapping Table을 구성하여 기호기반 분석을 위한 정보를 구축한다.

ㅇ OpenSVS Fuzzer는 Fuzzing을 처리하기 위한 데이터를 생성하는 Data Generator, Fuzzing을 처리하는 Fuzzing Engine, Fuzzing 결과를 기준으로 Exploit을 검증하는 Exploit Auditor 로 구성된다.

ㅇ 무작위적으로 데이터를 입력하는 Dumb Fuzzing은 매우 유용하나 시스템에 대한 이해 없이 데이터를 입력하여 테스트를 수행하기 때문에, 매우 심각한 오류를 발견할 수 없는 경우가 발생할 수 있다. 기호기반 분석엔진을 통하여 분석된 정보를 기반으로 한 Smart Fuzzing은 이러한 Dumb Fuzzing의 단점을 보완 할 수 있다.

나. OpenSVS Fuzzer 구성도

그림 27 OpenSVS Fuzzer 구조

(30)

그림 28 OpenSVS Fuzzer 연동 구성도

ㅇ Mapping Table 입력

기호실행 엔진과 연동하기 위한 진입점을 분석하기 위해 해당하는 URL과 Class 및 Method에 대한 Mapping 정보를 구축하여 추가한다.

ㅇ 기호실행 엔진 분석 요청

선택한 대상 URL을 기준으로 Mapping 정보로 구축된 Class 및 Method 정보를 입력하여 기호기반 엔진에 요청하고, 기호 실행 엔진에 처리한 분석의 결과가 Database에 기록될 때까지 대기한다.

ㅇ 기호실행 엔진 결과 분석

기호 실행엔진에서 실행한 분석 결과가 기록이 되면, 해당 분석 기록에 대하여 쿼리를 통해서 결과를 확인하고, 결과에서 활용가능한 Fuzzing 입력 데이터로 구분하여 선택한 대상 URL을 기준으로 한 입력 데이터를 생성한다.

ㅇ 데이터를 기준으로 한 Fuzzing

Fuzzing 결과에서 발견한 취약점 정보를 이용하여 실행 검증한다.

(31)

다. 시스템 구성도

ㅇ Fuzzer란 일반적으로 소프트웨어에 무작위의 데이터를 반복하여 입력하여 소프트웨어의 조직적인 실패를 유발함으로써 소프트웨어의 취약점을 찾는 프로그램이다.

ㅇ OpenSVS Fuzzer는 Fuzzing을 처리하기 위한 Fuzzing Engine, 데이터를 생성하기 위한 Data Generator, 기호실행엔진과 연동하여 Class와 Method에 대한 정보 분석을 요청하고, 요청한분석에 대한 결과를 얻어오는 등의 연동을 처리하기 위한 기호실행엔진 연동부, Exploit을 생성하고 실행하는 등 검증하기 위한 Exploit 검증부, 스크립트를 기반으로 하여 Fuzzing 프로그램의 확장성을 부여하는 Script Engine, CWE/CVE 등의 정보를 연계하는 취약성 정보를 얻어오는 정보연계부, Fuzzing 결과에 대한 Report를 생성하는 Report Generator 등으로 구성되어 있다.

ㅇ 기호실행엔진에서 분석한 결과는 Database로 기록되며, Database에 기록된 분석결과를 토대로 Data Generator에서 Fuzzing을 위한 입력 데이터를 생성하여, Fuzzing Engine에 데이터를 제공한다.

그림 29 OpenSVS Fuzzer 시스템 구성도

(32)

구분 상세 항목 및 요구사항

Fuzzing Engine

- Web Fuzzing을 처리한다.

- App Fuzzing을 처리한다.

- Web Crawling을 통한 Site Map을 구성한다.

- 취약점 정보를 얻어와 Fuzzing 결과와 연동하여 정보를 구성한다.

- Fuzzing Log를 기록하고, Log를 조회하여 취약점이 발생 정보를 제공한다.

Data Generator

- Mutation에 의하여 Data를 생성한다.

- Generation에 의하여 Fuzzing Data를 생성한다.

- 기호실행엔진 연동부에 요청하여 Fuzzing Data를 생성한다.

기호실행엔진 연동부

- Module과 Class, Method 간의 Mapping 정보를 구축한다.

- 기호실행엔진에 기호실행분석을 요청한다.

- 기호실행분석 요청이 완료되었는지 확인하고, 처리가 완료되었다면, 해당하는 결과자료를 DB에서 얻어온다.

Exploit 검증부 - Fuzzing 결과 Log를 기반으로 하여 Exploit 정보를 생성한다.

- 생성한 Exploit 정보를 실행하여 Exploit을 검증한다.

라. 시스템 주요기능 정의

ㅇ 본 프로그램은 웹 페이지에 대한 Fuzzing을 실시한다.

ㅇ 웹 어플리케이션에 대한 Crawling을 통하여 대상 어플리케이션의 Site Map을 구축하여 Smart Fuzzing에 대한 진입점을 구축한다.

ㅇ 구축된 Site Map을 진입점으로 처리하기 위하여 기호실행엔진과 연동하기 위한 Class, Method 등에 대한 Mapping 테이블을 구축한다.

ㅇ 기호실행엔진에 분석한 요청결과는 Database로 기록되며, Database를 분석하여 Smart Fuzzing을 위한 입력 데이터를 생성한다.

ㅇ 기호실행엔진 분석 결과로 생성된 입력 데이터를 기반으로 Fuzzing을 실시한다.

ㅇ Fuzzing 결과는 취약점의 종류 및 등으로 분류된다.

ㅇ 취약점에 대한 Request/Response 정보와 보안 권고, 수정 권고 등의 사용자 가이드를 제공하여 취약점을 해결할 수 있도록 돕는다.

ㅇ 분류된 데이터를 바탕으로 Exploit을 생성하고, 실행하여 검증한다.

(33)

Script Engine

- Script API를 제공하고, 약속된 Script(예: Java Scritp)에 의하여 기술된 사용자 스크립트를 실행할 수 있게 처리한다.

- 사용자 작성 스크립트를 프로그램 실행 시 띄울 수 있게하고, 관리 를 담당한다.

취약성정보 연계부 - CWE/CVE에 대한 정보를 DB에서 읽어온다.

Report Generator

- 취약점이 발견된 항목들에 대하여 직접 확인할 수 있도록 Request/Respone 정보를 제공한다.

- 취약점이 발견된 항목들에 대하여 사용자가 취약점을 해결 할 수 있도록 보안권고, 수정권고 등의 정보를 제공한다.

표 3 시스템 요구사항

마. 시스템 기본설계 ㅇ 시스템 아키텍처

(34)

ㅇ 기능별 프로세스 설계 - Fuzzing Engine

1) 대상 웹 어플리케이션의 페이지를 분석하여 대상 Site Map을 구축한다. Site Map 구축시에는 해당하는 기본 Base URL을 기본으로 한 Link를 대상으로 삼아 다음의 2가지 속성을 통하여 Recrusive하게 Site Map을 구축하게 하며, 지나치게 깊은 Recursive 분석이 있을 경우 재귀 호출에 대한 제한을 둘 수 있게 제공한다.

- SiteScanRecursively - SiteScanDepth

2) Data를 기반으로 한 Fuzzing을 통하여 웹 어플리케이션의 오류 및 문제 사항을 검출하여 처리한다.

3) Site Scan과 Fuzzing의 처리에 있어서는 멀티 쓰레드 방식을 활용하여 하드웨어 성능을 최적으로 끌어올린다.

- Data Generator

1) 기본적으로 Data Mutation 및 Generation을 이용하여 Dumb Fuzzer로서 동작할 수 있도록 Fuzzer의 입력 데이터를 제공한다.

2) 기호실행엔진 연동부를 이용하여 기호실행엔진과 연계하여 Smart Fuzzing을 위한 입력 데이터을 생성한다.

- 기호실행엔진 연동

1) 기호실행엔진에서 분석에 필요한 정보와 Site Map의 정보가 상이하기 때문에 Site Map을 진입점으로 한 기호실행 분석을 처리하기 위해서는 Class, Method 등에 대한 정보가 필요하다. 이를 위해서 대상 사이트의 소스코드를 분석하여, Site Map 상의 진입점과 Class, Method 정보를 연계한 Mapping Table을 생성한다.

2) 사용자가 선택한 Site Map의 진입점을 기준으로 Class, Method 정보를 얻어와 기호실행엔진에 기호실행을 요청한다.

3) 요청한 기호실행 분석이 완료되는지 확인하고, 완료된 기호실행 분석 정보를 Database에 쿼리하여 얻어온다.

- Exploit 검증

1) Fuzzing Engine의 Fuzzing 결과 Log을 얻어온 다음, 여기에서 취약점 정보를 기준으로 Exploit을 생성한다.

2) 생성된 Exploit을 기준으로 재실행을 통하여 Exploit을 검증한다.

(35)

name description DataGenerator Generation 방식에 의한 Fuzzing 데이터 생성

DataMutator Mutation 방식에 의한 Fuzzing 데이터 생성 ExploitAuditor 취약점 검증 처리

FormData 대상 URL에 대한 정보 및 입력 요소에 대한 관리 Fuzzer Fuzzing Engine의 상위 Class

FuzzingData Fuzzing 처리 시 입력 데이터에 대한 관리 ReportGenerator Report를 생성하기 위한 Class

3) 웹 브라우저 등을 통하여 Exploit을 실행하여 동작을 확인한다.

바. 시스템 상세설계

ㅇ 클래스 다이어그램(Class Diagram)

그림 31 Smart Fuzzer 클래스다이어그램

ㅇ Class 정의목록

(36)

ScriptEngine Script를 이용한 프로그램의 확장 SymbolicEngineHandler 기호실행엔진과 연동 처리 담당

VulnerabilityData 발견된 취약점에 대한 정보, 발견 시의 request/response 정보 관

WebFuzzer Fuzzer를 상속받아 Web에 대한 Fuzzing을 처리 WebScanner Web Fuzzing을 위해 Site Scan을 처리

ㅇ 테이블 정의목록

순번 테이블 정보

테이블명 설명 비고

1 pattern 룰패턴

2 weakness_pattem_dtail 룰패턴-소분류 매핑

3 weakness_level 위험도

4 weakness_level_detail 위험도-소분류 매핑

5 weakness 소분류(취약점 항목)

6 category 중분류

7 weakness_compliance_detail 위험도-대분류 매핑

8 compliance 대분류

9 compliance_mapping 룰패터-cwe 매핑

10 cwe cwe 데이터

(37)

그림 32 My Projects, Manage Projects 리스트

(4) 전문가협업을 위한 플랫폼 고도화 가. OpenSVS 고도화(포탈 / 관리자)

o 1차 년도에 개발된 OpenSVS 플랫폼 포탈의 완성도를 높이고, 관리자 페이지에 개발자들의 프로젝트를 관리할 수 있는 Vulnerability, 크롤링한 프로젝트를 관리할 수 있는 Monitoring, 크롤링 시 사용하는 위험성 기준 적용을 위한 Crawler 메뉴를 추가로 신설하였음

o 사용자 부문 플랫폼 고도화 - Dashboard

Dashboard는 OpenSVS에서 분석된 프로젝트 전체를 대상으로 통합적인 관점에서 바라볼 수 있도록 수치와 도표를 이용하여 보여주는 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- Dashboard 고도화 목록

- 사용자가 올린 프로젝트 목록 표시로 프로젝트의 관리상 편의를 도모

- Vulnerability

Vulnerability는 사용자가 프로젝트를 등록하여 정적 분석 및 동적 분석인 스마트 퍼징 분석과 형상관리 서비스, DSM 분석 서비스 등을 받을 수 있도록 서비스를 제공하는 OpenSVS 주요 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- 메타정보 입력 내용 변경 (프로젝트 명 중복체크, Category, License, OS,

(38)

그림 34 Vulnerability 리스트 그림 33 오픈소스 메타정보 등록화면

Language 필수 값 지정 및 프로젝트 공개설정, 설명 입력란 추가 등)

- 검색어 저장 기능, Project 분류(전체 / 내 프로젝트 / 공개 프로젝트), Score 필터 기능, Vulnerability Score , 메타 정보 팝업 창, View Repository(저장소 보기), View Dependency(Diagram, Dependency Matrix, Violation List), 공개 설정 기능

(39)

그림 35 Monitoring 탭

그림 36 Community 메인 중 소개란

- Monitoring

Monitoring은 크롤러가 위험성 기준을 통해 추출한 검색 URL을 기반으로 크롤링한 프로젝트들의 분석 결과가 보여지는 OpenSVS 주요 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- All 탭 기능 추가로 기간별 및 전체 프로젝트 목록을 보다 쉽게 확인 가능

- Community

Community는 OpenSVS 플랫폼 내, 사용자 및 전문가들의 협업 소통 창구로 사용자들이 자발적으로 커뮤니티를 생성할 수 있고 커뮤니티 내에서 자유롭게 의견 교류가 가능한 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- 커뮤니티 소개 수정 및 폐쇄 기능

커뮤니티의 소개 글 수정 및 비활성화를 위한 폐쇄 기능을 추가함으로써 커뮤니티 관리자에게 더 많은 관리 기능부여

- Moderator 권한 양도 기능

커뮤니티의 관리자 권한 양도 기능을 추가함으로써 관리자의 편의를 도모

(40)

그림 37 Community의 Moderator 권한 양도 팝업

그림 38 Report 상세페이지 중 일부

- Report

Report는 정적 분석 및 동적 분석인 스마트 퍼징 분석의 결과와 주요 포인트에 대해 시각적으로 표현한 차트 등의 정보를 넣어 사용자가 더욱 효과적으로 결과를 분석 할 수 있도록 제공하는 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- Report 상세페이지 삽입 (프로젝트 메타정보, 분석 정보, 차트)으로 뷰어를 통하지 않더라도 분석 결과의 주요 포인트를 확인할 수 있도록 함

- 리포트 뷰어를 HTML5 기반으로 업그레이드하여 추가적인 플러그인의 설치

(41)

그림 39 HTML5 기반의 리포트 뷰어

그림 40 Blog 관련포스트

없이 바로 확인할 수 있도록 편의성을 높임

- Blog

Blog는 OpenSVS 관리자가 사용자에게 공지사항이나 최신 보안 트렌드, 또는 컨퍼런스 일정등을 공유하기 위한 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- 글에 관련 포스트 표시 기능을 삽입함으로써 사용자가 더욱 편리하게 관련된 정보들을 확인 할 수 있음

(42)

그림 41 Blog 태그

그림 42 회원가입 페이지

- 태그 기능 삽입으로 사용자가 더욱 편리하게 원하는 정보를 찾을 수 있도록 함

- Sign up

- 회원가입 시 필수 항목 추가 (비밀번호 찾기 질문과 답, 국가, 직업)로 추후 사용자 통계 등에 국가별, 직업별로 어떤 분포를 나타내고 있는지 확인 할 수 있도록 하였고, 비밀번호 분실 시 변경이 가능하도록 하였음

- 패스워드 찾기 질문을 이용한 패스워드 변경 기능을 삽입하여 사용자가 비밀번호를 분실했을 경우, 복잡한 인증과정을 거치지 않고 비밀번호를 변경 할 수 있도록 함

(43)

그림 43 비밀번호 분실 시 변경 화면

그림 44 에러페이지

- Error

- 에러 처리 페이지의 삽입으로 에러코드가 그대로 노출되지 않도록 보안을 강화하였음

(44)

그림 46 관리자 Vulnerability 리스트 그림 45 관리자 페이지 접근 금지 경고 창

o 관리자 부문 플랫폼 고도화 - Access

- 일반 유저는 URL을 직접 입력하더라도 관리자 도메인으로의 접근이 불가능하도록 보안을 강화함

- Vulnerability

Vulnerability 메뉴의 신설로 OpenSVS 관리자가 더욱 편리하게 Vulnerability에 올라온 프로젝트들을 관리할 수 있도록 함

(45)

그림 47 관리자 Vulnerability 상세 페이지

- Vulnerability 메뉴 추가 부분 중 프로젝트 리스트로, 관리자가 해당 프로젝트의 스코어와 DSM 분석 완료 여부, 분석 진행 상태 등을 확인 할 수 있음

- Vulnerability 프로젝트 상세 페이지로 프로젝트를 올린 사용자 ID, 프로젝트 명, 분류, 라이선스, OS, 프로그래밍 언어, 저장소 URL, 공개 설정, 웹 퍼징 여부, NAWAS Deploy 실행, 설명 등의 메타 정보와 프로젝트에 달린 댓글 관리가 가능함

- Monitoring

Monitoring 메뉴의 신설로 OpenSVS 관리자가 더욱 편리하게 Monitoring에 올라온 프로젝트들을 관리할 수 있도록 함

(46)

그림 48 관리자 Monitoring 리스트

그림 49 관리자 Monitoring 상세 페이지

- Monitoring 메뉴 추가 부분 중 프로젝트 리스트로 리비전 정보, 새로 발견된 결함 수, 중복 결함 수, 총 결함 수, 분석된 코드 라인 수, 언어, 날짜 등의 정보를 확인 할 수 있음

(47)

그림 50 관리자 Discussions 토픽 리스트

- Monitoring의 프로젝트 상세 페이지로 프로젝트 명, 분류, 라이선스, OS, 프로그래밍 언어, 저장소 URL 설명 등의 메타 정보와 프로젝트에 달린 댓글 관리가 가능함

-Discussions

Discussions는 사용자들이 자유롭게 글을 올리고 소통하는 자유게시판 격인 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

- 사용자가 Discussions 메뉴에서 글을 작성할 때 토픽을 지정하여 글을 작성하게 되므로 토픽 별로 분류하여 관리할 필요가 있어 Discussions 토픽 리스트 추가

- Community

Community는 앞서 설명한 것과 같이 사용자 및 전문가들의 협업 소통 창구인 메뉴로써, 추가적으로 아래 고도화 목록과 같이 고도화되었음

(48)

그림 51 관리자 Community 리스트

그림 52 관리자 Community 상세 정보

- Community에 등록된 글이 커뮤니티와 상관없이 최신 순으로 올라오는 것보다 커뮤니티 별로 관리되는 것이 효율적이므로 커뮤니티 별로 글을 분리해서 보여줄 수 있도록 커뮤니티 리스트를 추가함

- 커뮤니티 리스트에서 커뮤니티를 선택하였을 경우, 각 커뮤니티 별 상세 정보를 표시하도록 하였고 아래쪽에 커뮤니티에 올라온 토픽들을 보여주도록 함

(49)

그림 53 관리자 Crawler 메뉴

- Crawler

Crawler 메뉴를 신설함으로써 크롤러가 크롤링 할 경우에 위험성 기준을 적용할 수 있도록 하였음

- 해당 메뉴에서 관리자가 최신 보안 동향 등을 반영하여 외부 키워드를 설정 할 수 있고, 내부 키워드의 가져오기 버튼을 이용하여 OpenSVS에 쌓인 프로젝트를 기준으로 빅데이터 기술을 이용하여 키워드를 도출하고 이렇게 도출된 내/외부 키워드를 기반으로 검색 URL을 생성하여 크롤러와 인터페이스 하게 됨

나. 형상관리 서버 탑재 ㅇ 도입개요

1차 년도에는 플랫폼과 분석서버가 FTP 전송으로 연동되었기 때문에 개발자가 소스를 관리할 수 없는 구조였고, 개발자들끼리 소스 공유가 불가능하였으나 2차 년도에는 형상관리 서버를 탑재함으로써 Global Repository를 지향하게 되어 오픈소스 개발자가 직접 소스를 업로드하여 관리할 수 있으며 개발자들끼리 소스의 공유를 원활하게 하였음. 현재 형상관리 서버는 오픈소스 수집기로부터 수집되는 오픈소스의 적재 저장소 및 플랫폼내의 다양한 분석을 위한 토탈 Repository로써, 취약점분석, DSM (Dependency Structure Matrix)분석, 소스 네비게이션 Service, Smart Fuzzing 등 다양한 분석기능에 활용되고 있음.

(50)

그림 54 OpenSVS 플랫폼과 형상관리 서버의 연계

ㅇ 구현상세

OpenSVS 플랫폼의 Vulnerability 메뉴에서 각 프로젝트마다 달려있는 View Repository 버튼을 클릭하면 팝업이 뜨면서 형상관리 서버에 업로드 되어있는 소스의 네비게이션 및 체크아웃, 히스토리 등을 볼 수 있음

(51)

그림 56 형상관리 서버 소스 히스토리 그림 55 형상관리 서버에 업로드 된 소스 보기

네비게이션 중 원하는 소스를 클릭하면 해당 소스를 확인 할 수 있음

수치

그림  2  소스코드  취약점  분석  시스템  구성도
그림  5  수집도구  실행후  초기화면
그림  7  수집도구  프로젝트  정보보기  화면
그림  8  수집도구  프로파일  탭  캡쳐화면 -  프로파일  탭  : 데이터를  수집하기  위해서는  대상  사이트에서  수집하고자  하는  페이지들의  관계와  각  페이지에서  컨텐츠들이  어떻게  구성되어  있는지를  프로그램에  알려  주어야  한다
+7

참조

관련 문서

The result of empirical analysis and case studies imply that the demand for the technology may change with the technological field and technology life-cycle. Originality

Source: A Policy on Geometric Design of Highways and Streets (The Green Book)..

Common corporate digital crimes include piracy, financial fraud, espionage, and theft of services.. _______________________________________ such as

6.56 Usinga computer analysis, investigate the effect of the transistor parameters  and on the small-signal voltage gain and output resistance of the source-follower

1 John Owen, Justification by Faith Alone, in The Works of John Owen, ed. John Bolt, trans. Scott Clark, "Do This and Live: Christ's Active Obedience as the

In the simple frequency analysis, TF-IDF analysis, and Topic analysis results, the meaning and social impact of future transport technology are explored, and

The new activation programs of industry academic cooperation are delivered, that is, The bonus payments system of technology development patent and free

A Study on the Development of Ship’s Ballast Water A Study on the Development of Ship’s Ballast Water A Study on the Development of Ship’s Ballast Water A Study on the