$ npm install adm-zip, semver, acorn, estraverse, @babel/parser, @babel/traverse, eslint-scope
- main.js
- 사용방법:
$ node main.js <pkgName> <pkgVersion> <vulnFunc> <zipPath> - Input
- pkgName: 취약점이 있는 패키지 이름 (= Upstream 이름)
- pkgVersion: 취약점이 있는 패키지 버전 (= Upstream 버전)
- vulnFunc: 취약점이 있는 vulnerable function
- zipPath: 타겟 소프트웨어 (=Downstream source code zip 파일)
- Output
- reachability 여부를 확인 가능한 result.json 파일
- 알고리즘 순서
- 1단계: ManifestAnalyzer에서 메타데이터 분석
- 2단계: StaticCallAnalyzer에서 AST 만들어 vulnFunc 사용여부 분석
- 3단계: CallGraphPathFinder에서 Call grpah 생성
- 사용방법:
- ManifestAnalyzer.js
- package.json을 읽어 dependencies에 pkgName@pkgVersion에 해당되는 항목이 있는지 체크
- StaticCallAnalyzer.js
- zip 파일에 있는 모든 자바스크립트 파일에서 pkgName을 import하고 vulnFunc를 사용하고 있는지 체크
- CallGraphPathFinder.js
- Call grpah 생성