
セキュリティを学びたい人々に、Webアプリケーション、コンテナ、仮想マシンなどの脆弱な環境を提供するリポジトリは数多く存在します。これは、学生やこの分野に入ったばかりの人々が関連するセキュリティ技術を学ぶのに役立つだけでなく、セキュリティ専門家が実践的なスキルを維持するのにも役立つからです。
その中でも、最近最も簡単な方法はコンテナ(例: docker や podman)を使うことです。
docker run や docker compose up のようなたった1つのコマンドでコンテナを実行できるのは、とても素晴らしいように思えます!
問題は、コンテナを実行する際に、それがどのように構築されたかを知らずに単純に実行してしまうと、そのコンテナが何をするのかを正確に知ることができないことです(特に、それが脆弱なコンテナであることを考慮すると)。
Dockerfile はその情報を提供します。
Dockerfile が hub.docker.com や quay.io のようなレジストリサービスで利用できることもありますし、docker history やイメージレイヤーから使用されたコマンドに関する情報を入手できることもありますが、イメージの構築に使用されたベースイメージ(例: Dockerfile の FROM で指定されたもの)などの重要な情報を見つけ出すことは困難です。
より危険な状況は、ユーザーが -v オプションを付けて docker を実行するよう求められたり、ボリューム設定が含まれる設定ファイルを持つ docker-compose を使うよう求められたりする場合です。注意を払わないと、ホスト上のファイルが悪意のあるユーザーに盗まれる可能性のあるシナリオが発生し得ます。--privileged や --user=root を付けてコンテナを実行するよう求められた場合、攻撃者がコンテナ内に足場を築き、ホストへ脱出するリスクがあるため、はるかに深刻です。
Docker セキュリティの詳細については、Docker Security - OWASP Cheat Sheet Series を参照してください。
したがって、学習やテスト環境の構築を希望するユーザーは、脆弱なコンテナイメージを実行する際に注意しなければなりません。ユーザーに Dockerfile とドキュメントへのアクセスを提供することは、すべてではないにせよ、こうしたリスクを最小限に抑えるのに役立ち、ユーザーは安全にセキュリティの学習と実践を楽しむことができます。
OWASP Vulnerable Container Hub(VULCONHUB)は、以下を提供するプロジェクトです:
リポジトリで提供されるファイルにより、ユーザーは脆弱なコンテナイメージを構築でき、CVE 脆弱性について自由にそして安全に学習、実験、練習、迅速な概念実証(PoC)を行うことができ、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>
いかなるコントリビューションも大歓迎です!!
新しいコンテナ構築ファイルを追加するために、プルリクエストを作成してください。独自のファイルを追加するか、サブモジュールを追加するかのどちらでも歓迎します。
プルリクエストがマージされるには、各ディレクトリに以下が必要です: