일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- xcode-select_jeknins
- unity package_androidlib
- unrealbuildshellscript
- python3.12.4
- jenkins_role관리_플러그인
- dxt
- cookcontent
- owasp_depdendency_check_shell
- python_distutils_module_missing
- sourcetree_accessdenied
- etc2
- jenkins_sudo
- owasp_dependency_check
- Unity2022
- unreal_android_빌드옵션
- molocon24
- jenkins_계정삭제
- ChatGPT
- jenkins_owasp
- molocon24내용정리
- sourcetree_authencicationfailed
- apkipa업로드저장소
- xcode_targeting
- unrealbuildcommand
- unreal_contentmanagement
- appcenter대체
- unreal_flavorselection
- unreal_binaryselection
- molocon24후기
- asset database_androidlib
- Today
- Total
mystic-agit 개발 블로그
[Jenkins] OWASP Dependency Check 플러그인 적용 본문
[목 차]
1. Facebook에서 요구된 취약점 리포트
2. OWASP 란
3. OWASP Dependency Check 플러그인 (for Jenkins)
4. Jenkins에 OWASP Dependency Check 플러그인 적용
5. 리포트 확인하기
6. 결론
1. Facebook에서 요구된 취약점 리포트
24년 5월, Facebook 콘솔에서 '배포중인 앱에 대한 취약점 보고를 달라는 요구'에 대해 소식을 공유받았다.
취약점 보고로 활용될 수 있는 기준에 대해서 Facebook Developers 페이지를 통해 확인할 수 있었고
그 중 OWASP 기준에 의한 취약점 확인이 가능한지 조사를 해보았다.
2. OWASP
OWASP란 Open Web Application Security Project의 약어로 하나의 단체이다.
OWASP에선 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하여 10대 웹 어플리케이션 취약점(OWASP Top 10)을 몇 년에 한번씩 발표해오고 있다.
3. OWASP Dependency Check 플러그인 (for Jenkins)
OWASP에서 발표된 취약점에 대해서 프로젝트 경로 이하 파일들에 대해 검사를 하고 결과를 작성해주는 OWASP Dependency Check 플러그인이 있다.
Jenkins에서 사용 가능하도록 제공되고 있으며, 24년 5월 기준 OWASP Dependency Check 9.2.0 버전을 최신 버전으로 공유되고 있다. 이 버전은 ‘OWASP Top 10 2017:A9’ 에 대한 솔루션을 일부 포함하고 있는 내용을 확인하였다.
4. Jenkins에 OWASP Dependency Check 플러그인 적용
[ 적용 환경 ]
- Jenkins 2.410
- MacOS Sonoma 14.1.1
[ 적용 과정 ]
(1) Jenkins 플러그인에서 Available plugins 검색에서 ‘OWASP Dependency-Check Plugin’ 설치
- 플러그인 설치 후 Jenkins를 restart 해야함 (플러그인이 요구하는 라이브러리와 연결됨)
(2) Jenkins 설정 > Tool > Dependency-Check installations 설정
- Dependency-Check Name : 구분할 수 있는 이름 아무거나
- Install automatically : true 설정
- ‘Install from github.com’ 으로 설정
- 인스톨 사용 경로는 사용에 유용한 아무 방법으로 설정 가능
- ‘Version’ : dependency-check 9.2.0 으로 설정
- ‘Install from github.com’ 으로 설정
- 다른 버전이 필요한 경우 ‘Add Dependency-Check’ 하여 추가 설정
(3) 빌드 대상 프로젝트의 설정에서 Dependency-Check 추가
- Jenkins 프로젝트가 FreeStyle 프로젝트여야함
- Build Steps에서 추가 가능
- ‘Add build step’ 하여 ‘Invoke Dependency-Check’ 추가
- ‘Dependency-Check installation’ : Tool 에서 설정하였던 ‘Dependency-Check Name’ 이름
- NVD API Key : NIST(National Institute of Standards and Technology) 에서 발급하는 API 키 (없어도 사용 가능)
- 키 발급 시 기관명 등 작성하여 요청 필요, 검토 후 발급
- 키가 있는 경우 취약점 database를 리모트 액세스하여 빠르게 검사 가능한 것으로 보임, 업데이트 된 부분을 빠르게 반영
- 키가 없는 경우 database를 로컬에 다운로드하여 검사 (다운로드 시 약 15~20분 정도 소요됨), 다운로드 이후 취약점 검사 진행
- Argument : 빌드 시 필요한 argument 입력
- ‘- - format HTML’ : 리포트 파일을 .html 파일로 출력 (default : .xml)
- .html은 웹 브라우저에 올렸을 때 문서 형태로 정리되어 보임
- ‘- - format HTML’ : 리포트 파일을 .html 파일로 출력 (default : .xml)
(4) 리포트 파일 생성
- 검사 대상 프로젝트의 root 경로에 dependency-check-report.html (혹은 .xml) 로 생성됨
- .html 파일의 경우 웹브라우저에 올려 내용 확인 가능
5. 리포트 확인하기
- 리포트 결과 예
- Display 우측 링크를 통해 디펜던시 정보 또는 취약점 리스트 기준으로 볼 수 있음 (How To Read The Reports)
- 열(Col) 항목
- Dependency : the file name of the dependency scanned
- CPE : any Common Platform Enumeration identifiers found (발견된 공통 플랫폼 열거 식별자)
- 운영 체제 및 소프트웨어 애플리케이션을 식별
- GAV : the Maven Group, Artifact, Version (Maven 그룹, 아티펙트, 버전)
- Highest Severity : the highest severity of any associated CVEs (관련 CVE 중 심각도가 가장 높은 것)
- CVE(Common Vulnerabilities and Exposures)
- CVE Count : the number of associated CVEs (CVE 수)
- CPE Confidence : a ranking of how confident dependency-check is that the CPE was identified correctly (종속성 검사를 통해 CPE가 올바르게 식별되었는지에 대한 신뢰도 순위)
- Evidence Count : the quantity of data extracted from the dependency that was used to identify the CPE (CPE를 식별하는 데 사용된 종속성에서 추출된 데이터의 양)
6. 결론
미국 정책과 관련해서 ‘소프트웨어 취약점 보고’ 라고 검색 시 주기적으로 문제가 발생하였고, 그 원인 모두 가지각색이었다.
그때마다 플랫폼 업계에선 애플리케이션 배포 시 취약점 보고를 간혹 요구해왔고, 이를 대비해서 나의 애플리케이션을 주기적으로 버전 업데이트마다 리포트하고 데이터로 갖고 있는 것이 후 검증 요청에 도움이 될 것으로 보인다.
'CI-CD > Jenkins' 카테고리의 다른 글
[Jenkins] pipeline 스크립트에서 sudo 명령 사용 (feat. xcode-select) (0) | 2024.07.15 |
---|---|
[Jenkins] User Account 삭제 방법 / 삭제 안되는 경우 / 계정 관리 플러그인 (0) | 2024.07.09 |
[Jenkins][Groovy] 파일 읽기, 쓰기 (0) | 2024.03.26 |
[Jenkins] Credentials 설정한 암호화된 정보 확인하기 (0) | 2023.09.06 |
[Jenkins] 젠킨스 Pipeline 프로젝트 설정 (Android 프로젝트) (0) | 2023.06.29 |