VulnDbGen官方文档翻译

 

취약점 데이터베이스 생성 솔루션 1.0

소프트웨어 매뉴얼

漏洞数据库创建解决方案1.0

软件手册

2017. 7. 17.

CSSA  Center for Software Security and Assurance

[email protected]

 

 

 

目录

 

1. 개요 3

A. 매뉴얼 정보 3

B. 대상 3

C. 문서  버전 기록 3

2. 구성 요소 4

A. 솔루션  구성 요소 4

B. 코어  모듈 일람 4

C. 솔루션 개관 5

3. 요구 사항 6

A. 지원  운영 체제 6

B. 운영  체제별  의존 프로그램 6

  1. Windows 6
  2. macOS 6
  3. Linux 6

4. 기본 사용법 7

  1. 환경 설정: config.py 7

i. 공통 7

  1. POSIX 7
  2. Windows 7
  1. 초기화: initialize.py 7

i. 공통 7

ii. Windows 7

  1. Git repository 클론 8
  2. CVE 패치 추출: get_cvepatch_from_git.py 8
  3. 패치 전/후 함수 복원: get_source_from_cvepatch.py 9
  4. 중복된 취약 소스 제거: vul_dup_remover.py 10
  5. 오탐 케이스 일괄 제거: vul_verifier.py 10

H. 취약 소스의 해시 인덱스 파일 생성: vul_hidx_generator.py 10

  1. Multimode 사용법 11
    1. Multimode란? 11
    2. Multiple Git repository 클론 11

C. List  파일 생성 11

D. CVE  패치 추출 및 패치 전/후 함수 복원    과정 12

E. 이후 과정 12

6. 지원 13

A. 문의 13

B. 연락처 정보 13

7. 참고 문헌 13

 

1.概述3

A.手册信息3

B.主题3

C.文档版本历史3

2.组件4

A.解决方案组件4

B.核心模块清单4

C.解决方案概述5

3.要求6

A.支持的操作系统6

B.操作系统的依赖程序6

i.Windows 6

ii.macOS 6

iii.Linux 6

4.基本用法7

A.配置:config.py 7

我普通7

ii.POSIX 7

iii.Windows 7

B.初始化:initialize.py 7

我普通7

ii。 Windows 7

C.Git存储库克隆8

D.CVE修补程序提取:get_cvepatch_from_git.py 8

E.在补丁之前和之后恢复功能:get_source_from_cvepatch.py​​ 9

F.消除重复的易受攻击源:vul_dup_remover.py 10

G.批量清除误报案件:vul_verifier.py 10

H.为易受攻击的源创建哈希索引文件:vul_hidx_generator.py 10

5,多模式使用11

答:什么是多模式? 11

B.多个Git存储库克隆11

C.创建列表文件11

D. CVE修补程序提取和修补程序前/后功能恢复过程12

E.后期处理12

6.支持13

A.查询13

B.联系信息13

7.参考文献13

 

1. 개요

A.  매뉴얼 정보

본 매뉴얼은 “취약점 데이터베이스 생성 솔루션 1.0” 소프트웨어의 매뉴얼임.

취약점 데이터베이스 생성 솔루션은 Center for Software Security and Assurance (이하 CSSA) 가 개발한 소프트웨어 취약점 탐지 플랫폼 IoTcube (https://iotcube.net) 의 “Vulnerable Code Clone Detection” 에 사용된 핵심 기술임.

      1. 대상

본 매뉴얼은 삼성전자 소프트웨어 센터 Security Lab. 의 실무자를 대상으로 작성되었음.

C.  문서  버전 기록

릴리즈 날짜

문서 버전

사유

작성자

2017년 7월 17일

V1.0

초판

김슬배   ([email protected])

1.概述

A.手册信息

本手册是“漏洞数据库创建解决方案1.0”软件的手册。

漏洞数据库创建解决方案是IoTcube(https://iotcube.net)的“漏洞代码克隆检测”中使用的核心技术,IoTcube是由软件安全和保证中心(以下简称CSSA)开发的软件漏洞检测平台。

B.目标

本手册适用于三星电子软件中心安全实验室。 它是为从业者编写的。

C.文档版本历史

发布日期文档版本原因作者

2017年7月17日V1.0第一版Seulbae Kim([email protected]

 

2. 구성 요소 组成部分

A.  솔루션  구성 요소

본 솔루션은 다음의 디렉터리 트리와 같이 구성됨.

A.解决方案组件

该解决方案由以下目录树组成

B.  코어  모듈 일람核心模块清单

 

C.  솔루션 개관解决方案概述

 

 

3. 요구 사항需求条件

A.  지원  운영 체제

본 솔루션은 POSIX 호환 운영체제(Linux, macOS)와 Windows를 지원함.

A.支持的操作系统

该解决方案支持POSIX兼容操作系统(Linux,macOS)和Windows。

B.  운영 체제별 의존 프로그램操作系统相关程序

        1. Windows
        1. macOS

Python 2 (권장: 2.7 이상), Git, Java 필요. 다음 명령으로 설치 가능.

        1. Linux

Python 2 (권장: 2.7 이상), Git, Java 필요. 다음 명령으로 설치 가능.

Python 2(推荐:2.7或更高版本),Git,需要Java。 可以使用以下命令安装。

 

4. 기본 사용법基本用法

  1. 환경 설정偏好设定: config.py

솔루션 사용에 앞서, config.py를 설정해야 함.

使用该解决方案之前,您需要配置config.py。

 

    1. 공통

- gitStoragePath: 취약점을 수집할 Git repository를 clone할 루트 디렉터리.

- version:  IoTcube  사용 시 유효 데이터베이스 버전.  일반적인 경우    설정하지 않아도 무방함.

i普通

- gitStoragePath:用于克隆Git存储库以收集漏洞的根目录。

 

- version:使用IoTcube时的有效数据库版本。 通常情况下,无需设置

 

    1. POSIX

Package manager를 통해 git과 java를 설치한 경우, 아래의 default 값을 사용.

如果git和java是通过Package Manager安装的,请使用下面的默认值。

 

Custom build  사용 시 각각에 해당하는 path와 binary명  기입.

使用自定义构建时,请分别编写对应的路径和二进制名称。

    1. Windows

Git for Windows (혹은 다른 설치 방법)를 통해 설치된 git.exe와 diff.exe의 정확한 path와 binary명을 입력.

输入通过Windows版Git安装的git.exe和diff.exe的正确路径和二进制名称(或其他安装方法)。

 

  1. 초기화: initialize.py
    1. 공통

initialize.py는 필수 디렉터리를 생성하며, National Vulnerability Database에 등록된 CVE  정보를 수집하여 vulnDBGen/data/cvedata.pkl 파일에 저장.

    1. Windows

윈도우에서 초기화 시,  윈도우용 파서인 FuncParser-opt.exe를 다운로드   받아

vulnDBGen/tools 에 저장함. (POSIX용 파서는 프로젝트 패키지에 미리  포함.)

B.初始化:initialize.py

i。普通

initialize.py创建所需的目录,收集在国家漏洞数据库中注册的CVE信息,并将其存储在vulnDBGen / data / cvedata.pkl文件中。

(initialize.py会调用执行cveXmlDownloader.py cveXmlParser.py cveXmlUpdater.py)

ii.Windows

在Windows中初始化后,下载FuncParser-opt.exe,这是Windows的解析器。

保存在vulnDBGen /工具中。 (POSIX解析器预先包含在项目包中。)

 

위 명령은 tools/cvedatagen/ 이하의 cveXmlDownloader.py,  cveXmlParser.py,  그리

cveXmlUpdater.py 를 순차적으로 실행하는데, 최초 실행을 통해 cvedata.pkl 이 생 성된 상태라면 이후 데이터 (신규 CVE 정보 등) 업데이트 시에는 cveXmlUpdater.py 만 단독으로 실행하면 됨.

또한, initialize.py 를 통해 자동으로 초기화하지 않고 직접 cveXmlDownloader.pycveXmlParser.py, 그리고 cveXmlUpdater.py 를 순차적으로 실행하여도 그 결과물은 동 일함.

上面的命令是tools / cvedatagen /,下面是cveXmlDownloader.py,cveXmlParser.py和

高级别的cveXmlUpdater.py是按顺序执行的,如果在第一次执行时创建了cvedata.pkl,则在更新数据(例如新的CVE信息)时仅需要单独执行cveXmlUpdater.py。

此外,即使依次执行cveXmlDownloader.py,cveXmlParser.py和cveXmlUpdater.py,而无需通过initialize.py自动对其进行初始化,结果也相同。

  1. Git repository 클론

취약점 추출을 위해서는 타겟 repository의 Git object가 필요함. Git object의 획득을 위해

config.py의 gitStoragePath에 지정한 경로에, 취약점을 수집할 Git repository를 클론.

ex) Apache HTTPD  와  Linux kernel Git repository  의  클론 과정

C.Git存储库克隆

要提取漏洞,需要目标存储库的Git对象。 获取Git对象

克隆Git存储库以收集config.py中git.Path指定的路径中的漏洞。

例)Apache HTTPD和Linux内核Git存储库的克隆过程

 

  1. CVE 패치 추출: get_cvepatch_from_git.py

get_cvepatch_from_git.py 는 앞선 단계(4.C)에서 clone한 Git repository 에서 CVE 취약점 패치를 추출하여 vulnDBGen/diff/REPO_NAME/ 이하에 *.diff 파일로 저장.

D.CVE修补程序提取:get_cvepatch_from_git.py

get_cvepatch_from_git.py从上一步(4.C)中克隆的Git存储库中提取CVE漏洞补丁,并将其另存为vulnDBGen / diff / REPO_NAME /下的* .diff文件。

 

ex) HTTPD  와 Linux kernel repository  각각에서 CVE  패치 추출  과정每个CVE补丁提取过程

 

  1. 패치 전/후 함수 복원: get_source_from_cvepatch.py

get_source_from_cvepatch.py 는 모인 CVE  취약점 패치로부터 패치 전  함수와   패치 후 함수를 각각 복원함. 복원된 함수들은 vulnDBGen/vul/REPO_NAME/ 이하에 저장되는데, 취약점  패치  전  함수는  취약  함수로서  *_OLD.vul,  패치  후의  함수는  안전한 함수로서

*_NEW.vul 로 저장됨.

ex) HTTPD  와  Linux kernel  각각의 CVE  패치로부터 패치 전/후  함수 복원

E.在补丁之前和之后恢复功能:get_source_from_cvepatch.py

get_source_from_cvepatch.py分别从收集的CVE漏洞补丁中恢复补丁前和补丁后功能。 恢复的功能存储在vulnDBGen / vul / REPO_NAME /下。补丁前功能是一个易受攻击的功能* _OLD.vul,补丁后功能是安全的功能。

* _NEW.vul已保存。

例)从HTTPD和Linux内核CVE补丁恢复前/后补丁功能

 
  1. 중복된 취약 소스 제거: vul_dup_remover.py

vulnDBGen/vul/ 이하에 저장된 모든 취약 함수들 중 중복된 파일을 하나만 남기고 제거함. ex) HTTPD  와  OpenSSL repository  의  취약  함수에서  중복 제거

F.消除重复的易受攻击源:vul_dup_remover.py

在vulnDBGen / vul /下存储的所有易受攻击的函数中,仅保留了一个重复文件并将其删除。 例如)从HTTPD和OpenSSL存储库中的易受攻击的函数中删除重复项

 

  1. 오탐 케이스 일괄 제거: vul_verifier.py

코드 클론 탐지 시 오탐을 유발하는 케이스는 본 모듈에서 일괄적으로 제거됨. 현재는 두 가지 제거 규칙을 적용하고 있으며, 규칙은 정책에 따라 임의로 추가/제거 할 수  있음.

규칙 1) Old function과 new function의 abstraction 결과가 같은 경우 삭제 규칙 2) 함수 헤더가 바뀌어 패치의 전/후 관계 식별이 불가한 경우 삭제

ex) HTTPD, OpenSSL, Linux kernel  의 취약 함수 수집 결과에서 오탐 케이스    제거

G.误判案例清除:vul_verifier.py

从该模块中删除了在检测代码克隆时导致误报的情况。 当前,应用了两个删除规则,并且可以根据该策略任意添加/删除规则。

规则1)当旧函数和新函数的抽象结果相同时规则2)当函数头被更改并且无法识别补丁前后的关系。

例如)从HTTPD,OpenSSL和Linux内核的易受攻击的函数收集结果中消除误报情况

 

  1. 취약 소스의 해시 인덱스 파일 생성: vul_hidx_generator.py

앞선 과정 (A~G) 완료 시, 중복과 오탐 케이스가 제거된 취약 함수들만 vulnDBGen/vul/ 이하에 잔류. vul_hidx_generator.py 는 잔류 함수들의 해시 인덱스를 생성함. 생성된 해 시 인덱스는 *.hidx 확장자를 가지며, vulnDBGen/hidx/ 이하에 저장됨.

이 때,  용도에 따라 두 종류의 인덱스 생성  가능:

인자로 –a 0 을 사용할 경우 exact matching을 위한 인덱스 생성 인자로 –a 4 를 사용할 경우 abstract matching을 위한 인덱스 생성

H.创建易受攻击源的哈希索引文件:vul_hidx_generator.py

完成前面的步骤(A至G)后,只有漏洞重复且假阳性案例已删除的易受攻击的函数才会保留在vulnDBGen / vul /下。 vul_hidx_generator.py创建残留函数的哈希索引。 生成的哈希索引具有* .hidx扩展名,并存储在vulnDBGen / hidx /下。

此时,可以根据目的创建两种类型的索引:

当将-a 0用作参数时,用于精确匹配的索引创建–当将-a 4用作参数时,用于抽象匹配的索引创建

 

5. Multimode 사용법使用方法

  1. Multimode?

Google Android Project (https://android.googlesource.com/) 처럼 다수의 Git repository가 하나의 프로젝트로 관리되는 경우, Multimode를 이용하여 일괄 처리 가능.

答:什么是多模式?

如果将多个Git存储库作为一个项目(例如Google Android Project(https://android.googlesource.com/))进行管理,则可以使用多模式进行批处理。

ex) Git repositories on Android

 

  1. Multiple Git repository 클론

config.py 에 지정한 gitStoragePath 이하에 프로젝트명(e.g., android)으로 디렉터리 생성  후,  모든  repository를 클론.

ex) 안드로이드 프로젝트의 모든 Git sub-repository 클론 과정

B.多个Git存储库克隆

在config.py中指定的gitStoragePath下使用项目名称(例如android)创建目录后,克隆所有存储库。

例)Android项目的所有Git子存储库克隆过程

 

  1. List 파일 생성

프로젝트의 sub-repository  목록을 보관할 리스트 파일은  vulnDBGen/data/repolists/

이하의 list_프로젝트명 파일에 저장.

ex) 안드로이드 프로젝트의 Git repository 리스트 파일 생성

创建C.List文件

保留项目的子存储库列表的列表文件是vulnDBGen / data / repolists /

保存在以下list_project名称文件中。

例如)创建Android项目的Git存储库列表文件

 

ex)  생성한 list_android 파일에 sub-repository의 리스트를 저장.

例如)将子存储库列表保存在创建的list_android文件中。

 

 

D. CVE 패치 추출  패치 / 함수 복원 과정

get_cvepatch_from_git.py get_source_from_cvepatch.py 의 실행 방법은 동일 하나, -m 인자를 추가로 사용하여 Multimode를 활성화 함.

ex) 안드로이드 프로젝트의 모든 Git repository로부터 CVE 패치 추출 및 함수 복원

D. CVE修补程序提取和修补程序前/后功能恢复过程

get_cvepatch_from_git.py和get_source_from_cvepatch.py的执行方法是相同的,但是多模式是通过额外使用-m参数来激活的。

例)从Android项目的所有Git存储库中提取CVE补丁并恢复功能

 

E.  이후 과정

이후의 과정은 4.E 4.H 에 기술된 내용과 동일함.

E.后处理

后续过程与4.E至4.H中所述的过程相同。

 

6. 지원

A. 문의

솔루션 사용 중 문제가 발생 할 경우, 6.B의 연락처로 문의   바람.

    1.  연락처 정보

6.支持

 

A.查询

如果在使用解决方案时出现问题,请通过6.B与我们联系。

B.联系方式

CSSA

Phone: (+82)2-3290-4816

E-mail: [email protected]

Web: https://cssa.korea.ac.kr

7. 참고 문헌参考文献

[1] Seulbae Kim, Seunghoon Woo, Heejo Lee, and Hakjoo Oh, "VUDDY: A Scalable Approach for Vulnerable Code Clone Discovery," in Security and Privacy (SP), 2017 IEEE Symposium on. IEEE. 2017.

[2] Seulbae Kim, Seunghoon Woo, Heejo Lee, and Hakjoo Oh, "Poster: IoTcube:  An Automated Analysis Platform for Finding Security Vulnerabilities," in Security and Privacy (SP), 2017 IEEE Symposium on. IEEE. 2017.

[3] CSSA, “White-box testing in IoTcube,” https://iotcube.net/process/type/wf1, April 2016, Accessed:  2017-07-04

猜你喜欢

转载自blog.csdn.net/m0_43406494/article/details/109090060
今日推荐