Docker版OWASP ZAPをM1 Macで動かす。


背景

Webアプリ開発時、手軽に脆弱性診断を行なうツールとしてOWASP ZAPなるものが存在する。

これを実行する方法としてCI等に組み込みやすいDocker Imageがあるが22年4月現在、M1 Macに対応していない

これを動かすために苦しみを味わったのでメモ。

実装

OWASP ZAPのリポジトリをclone

git clone https://github.com/zaproxy/zaproxy

ローカル環境でbuild

cd docker

docker build -f Dockerfile-stable -t yasuaki640/zap2docker-stable-m1 .

ついでに実行

$ docker run -t yasuaki640/zap2docker-stable-m1 zap-baseline.py -t https://example.com

2022-04-07 09:30:50,109 Could not find custom hooks file at /home/zap/.zap_hooks.py
Using the Automation Framework
Total of 3 URLs
PASS: Vulnerable JS Library [10003]
PASS: Cookie No HttpOnly Flag [10010]
...

~Fin~

One more thing

dockerhubにpushしときました!

https://hub.docker.com/repository/docker/yasuaki640/zap2docker-stable-m1

Appendix

自前でビルドするとなぜ動くか?

M1 Macに対応したCPUアーキテクチャでビルドしたから。

Containerを動かすにはImageがホストマシンのCPUアーキテクチャに対応したものが好ましい

しかしOWASP ZAPのImageはM1 Macに対応していないアーキテクチャでビルドされており、containerを立ち上げることはできるがOWASP ZAP自体を実行することはできない。

そこでOWASP ZAPのDockerfileから直接ビルドするとDockerがM1に対応したベースイメージを自動で選択するためM1 Macで動くImageがビルドされる。

結言

間違いあったら指摘お願いします。

参考

https://groups.google.com/g/zaproxy-users/c/meg0Lkvl03s

https://github.com/zaproxy/zaproxy/issues/6944