
VULCONHUB는 보안을 배우고 실습할 수 있도록 직접 취약한 컨테이너 이미지를 구축하는 데 필요한 파일에 대한 액세스를 제공합니다.
보안을 배우고자 하는 사람들에게 웹 애플리케이션, 컨테이너 또는 가상 머신과 같은 취약 환경을 제공하는 저장소는 많이 있습니다. 이러한 환경은 해당 분야에 갓 입문한 학생이나 신입이 관련 보안 기술을 배우는 데 도움이 될 뿐만 아니라, 보안 전문가가 실무 감각을 유지하는 데에도 도움이 되기 때문입니다.
이러한 접근 방식 중 요즘 가장 쉬운 방법은 컨테이너(예: docker 또는 podman)를 사용하는 것입니다.
docker run 또는 docker compose up과 같은 단 하나의 명령으로 컨테이너를 실행할 수 있다는 것은 정말 멋져 보입니다!
문제는 컨테이너가 어떻게 빌드되었는지 모른 채 단순히 실행할 경우, 컨테이너가 실제로 무엇을 하는지 정확히 알 수 없다는 것입니다(특히 취약한 컨테이너라는 점을 고려하면 더욱 그렇습니다).
Dockerfile이 그러한 정보를 제공합니다.
Dockerfile이 hub.docker.com이나 quay.io와 같은 레지스트리 서비스에서 제공되거나, docker history 또는 IMAGE LAYERS를 통해 사용된 명령어에 대한 일부 정보를 얻을 수 있는 경우도 있지만, 이미지 빌드에 사용된 기본 이미지(예: Dockerfile에서 FROM으로 지정된)와 같은 중요한 정보를 알아내기는 어렵습니다.
더 위험한 상황은 사용자가 -v 옵션을 사용하여 docker를 실행하거나, 설정 파일에 볼륨 구성이 포함된 docker-compose를 실행하도록 요청받는 경우입니다. 주의하지 않으면 호스트의 파일이 악의적인 사용자에게 탈취될 수 있는 시나리오가 발생할 수 있습니다. 사용자가 --privileged 또는 --user=root 옵션으로 컨테이너를 실행하도록 요청받는 경우에는 훨씬 더 심각할 수 있습니다. 공격자가 컨테이너 내부에 거점을 확보한 뒤 호스트로 탈출할 수 있는 위험이 있기 때문입니다.
Docker 보안에 대한 자세한 내용은 Docker Security - OWASP Cheat Sheet Series를 참조하십시오.
따라서 보안을 학습하거나 테스트 환경을 구축하려는 사용자는 취약한 컨테이너 이미지를 실행할 때 주의해야 합니다. 사용자에게 Dockerfile과 문서에 대한 접근 권한을 제공하면 모든 위험은 아니더라도 최소화하는 데 도움이 되며, 사용자가 안전하게 보안 학습과 실습을 즐길 수 있습니다.
OWASP 취약 컨테이너 허브(VULCONHUB)는 다음을 제공하는 프로젝트입니다:
저장소에서 제공되는 파일을 통해 사용자는 취약한 컨테이너 이미지를 빌드할 수 있으며, 자유롭고 안전하게 학습하고, 실습하며, CVE 취약점에 대한 신속한 개념 증명(proof-of-concept)을 수행하거나 CTF 챌린지 준비에 활용할 수 있습니다.
이 프로젝트의 궁극적인 목표는 보안에 관심 있는 모든 사람이 보안 학습과 실습을 위한 유용한 컨테이너 빌드 파일을 공유하고 유지 관리할 수 있도록 돕는 대표적인 참고 자료가 되는 것입니다.
$ git submodule init
$ git submodule update
필요한 경로만 지정하여 시간을 절약하고 디스크 사용량을 최소화할 수도 있습니다.
$ git submodule init <path> [--recursive]
git 서브모듈에 대한 자세한 내용은 https://git-scm.com/book/en/v2/Git-Tools-Submodules를 참조하십시오.
$ docker build . -t local/<image-name>`
$ docker run -p <hostport>:<containerport> local/<image-name>
어떤 기여든 환영합니다!!
새로운 컨테이너 빌드 파일을 추가하려면 Pull Request를 생성해 주세요. 직접 만든 파일을 추가하거나 서브모듈을 추가하는 방식 모두 환영합니다.
Pull Request가 병합되려면 각 디렉터리에 다음이 포함되어야 합니다: