Skip to content

Latest commit

 

History

History
167 lines (136 loc) · 7.65 KB

README.md

File metadata and controls

167 lines (136 loc) · 7.65 KB

VulDock

🐋 VulDock: Vulnerability Scanning Tool for Docker Images🐋

VulDock VulDockVulnerabilityDocker의 앞글자를 따서 만든 단어로, Vulnerability Scanning Tool for Docker Images 즉, 도커 이미지 취약점 탐지 툴이다. Vuldock은 컨테이너를 실행하기 전에 사용된 이미지가 가지고 있을 수 있는 버전 등의 잠재적인 문제 검사를 목표로 하며, python 기반의 리눅스 환경에서 실행되는 프로그램이다.

또한, Vuldock은 여러 개의 컨테이너로부터 이루어진 서비스 구축을 위한 docker-compose로 작성된 도커 이미지 분석에 적합하며, 툴을 사용하기 위해서는 해당 이미지가 실행할 로컬 환경에 다운로드 되어 있어야한다.

서비스 개요는 다음과 같다.

✅ 서비스 개요

  • 도커 이미지 분석시 docker-compose 파일을 이용해 서비스 목록을 확인 후, 서비스들의 취약점과 최신 버전 여부 등을 검사한다.
  • 서비스 취약점 검사에는 Searchsploit 툴이 사용되었으며, 해당 툴을 이용하여 os 및 version에 해당되는 취약점을 검색한다.
  • 또한 웹 크롤링을 이용하여 각 취약점에 해당하는 CVE 번호를 매핑해준다.
  • 분석 대상 이미지 중 포함된 서비스가 리눅스 기반인데 공식 이미지가 아닐 경우, 주요정보통신기발시설_기술적_취약점 검사문서 가이드에 따라 추가 취약점 검사를 진행한다.
  • 취약점 검사 후 결과는 표로 정렬하여 터미널에 출력된다.

자세한 툴 설명은 밑의 'VulDock 세부 설명' 참고 바랍니다.


▶ 프로젝트 기간

2021.07 - 2021.08

▶ 프로젝트 소개

  • 2021 Incognito에서 진행한 프로젝트로, 주제 선정부터 개발까지 팀별로 진행한 프로젝트이다.
  • 도커 이미지 취약점 탐지 툴인 'VulDock'을 개발하게 된 배경은 다음과 같다.
    • 2021년 기준, 컨테이너 이미지 보안 분석한 결과 51%의 이미지에 최소 1개 이상의 중대한 취약점이 포함되었고, 2020년 2사분기 동안 컨테이너 환경과 Docker 이미지 공급망을 겨냥한 대표적인 공격이 600% 증가하였다.
    • Docker 취약점을 이용하여 공격한 사례가 적지 않게 발생한 현실에 직시하여, docker 이미지를 컨테이너화하여 사용하기 전에 이미지를 통해 취약점 여부를 확인할 수 있는 툴 개발을 계획하게 되었다.

  • 주제 선정 후, 자료 조사 과정을 거친 후 세운 툴의 방향성은 다음과 같다.
    • ✓ 컨테이너를 실행하기 전에 사용된 이미지가 가지고 있을 수 있는 버전 등의 잠재적인 문제 검사
    • ✓ 도커 이미지 분석 시 docker-compose 파일을 사용해 서비스 목록 확인
      • 취약점을 분석할 때 해당 애플리케이션이 어떤 서비스를 사용하는지 확인하기 위함
    • ✓ dagda와 같은 기존의 취약점 점검 툴에 우리만의 차별성 포함

👨‍👨‍👦 404 Time 팀원

이름 Github
김혜민 HyeM207
임정수 JJ503
정민희 jeongminhui99
황예원 wwyyww



▶ VulDock 세부 소개

📌 01. 사용 방법

  1. 해당 깃허브 레파지토리를, 분석할 도커 이미지가 있는 pc에 다운로드 혹은 git pull 한다.
    (단, pc는 리눅스 기반의 운영체제이어야 한다)
  2. 터미널로 툴을 다운로드한 경로 이동하여, 사용자가 명령어로 옵션과 함께 이미지 이름을 파라미터로 입력 실행한다.
    VulDock (-옵션 1개 이상) 도커이미지명 ex. VulDock -sn test-image
  3. 명령어를 입력 후, 툴은 사용자가 입력한 이미지이름으로 도커이미지가 있는 경로를 찾아 터미널에 띄운다.
    사용자는 터미널에 출력된 경로 중 분석할 도커이미지가 있는 경로의 번호를 입력한다.
  4. 이후, 옵션에 따라 분석한 결과를 터미널로 보여준다.

옵션

  • -h : 서비스 사용 방법 출력
  • -s : 서비스 이름과 버전 출력
  • -o : 오피셜 이미지 검사
  • -n : 총 취약점 개수
  • -t : 취약점 이름만 출력
  • -c : CVE만 출력
  • -l : CVE 링크만 출력
  • -a : 모든 옵션 적용
➡ 출력 예시(사진)

VulDock VulDock VulDock


📌 02. 코드 구성

VulDock은 총 3개의 파이썬 파일로 구성되며, 각 파일별 주요 기능은 다음과 같다.

  1. main.py
    - 이미지 경로와 docker-compose 파일 경로 탐색
    - 사용 서비스의 이름과 버전 분석
    - 'Searchsploit' 툴과 웹 크롤링을 통한 CVE Mapping으로 취약점 검사
  2. check_linux.py
    - '주요정보통신기반시설)기술적_취약점' 기반으로 작성한 취약점 검사 코드로 Linux 기반의 OS 서비스 취약점 검사
  3. print_table.py
    - 분석 결과 화면 구성을 위해 표 생성
➡ 파일 별 세부 설명(사진)

VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock


📌 03. VulDock 흐름도

VulDock


📌 04. 툴 소개 ppt (슬라이드 전문)

➡ 전체 슬라이드 보기

VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock VulDock