Github Actionsを使ったOWASP Zap Baseline スキャンの説明

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

理由があって、管理しているサイトへの脆弱性スキャンを自動化しようと試みていた所、OWASP ZapがGithub Actionsから実行できるという情報を得ました。今回は、このGithub Actionsを使ったOWASP Zap Baseline スキャンの説明を備忘録がてら説明したいと思います。説明不足の部分が有りますが、逐次加筆・修正します。

Step1: Github Actionsの使い方

Github Actionsは2019年から一般に使えるようになったそうです(それまでは限定公開だったらしい)。Github Actionsの説明と使い方は、こちらのさくらのナレッジさんの記事が詳しいので割愛します。

ここでは、RepositoryでGithub Actionsが使えるようになったという状態から説明を初めます。

Github ActionsによるZapのスキャン設定

デフォルトで.github/workflows/以下にymlファイルを作ることになると思います。

gitを使って管理します。ymlファイルを編集して”git push”すると、ymlファイルに記載したものが実行されます。

pushした時にスキャンする設定

以下がpushした際にスキャンする設定です。


# This is a basic workflow to help you get started with Actions
name: Zap-Advanced-Scan
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in
parallel
jobs:
# This workflow contains a single job called "zap_scan"
zap_scan:
# The type of runner that the job will run on
runs-on: ubuntu-latest
name: Scan SIOS test site
steps:
- name: ZAP Scan test.sios.com
uses: zaproxy/action-baseline@v0.3.0
with:
target: 'https://test.sios.com/'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'

詳しい説明はzaproxy/action-baselineのGitHubを見て頂くとわかります。

上のスキャンは「Advanced Scan」でスキャンをしており

  1. rules_file_nameにはZapスキャンで無視したいオプションのルールを記載したファイル名を入れています。具体的には、gitで管理しているレポジトリ中の.zap/rules.tsvファイル中にルールを記載しています。これはGitHubのサンプルと同じです。
  2. コマンドオプションとして”cmd_options”を設定しています。オプションはこちらのzap-baseline.pyのオプションで指定できるものです。

以上のファイル(ymlファイル)を作成してpushすると、スキャンが実行されます。なぜかZAP ScanはErrorになってしまいますが、これで良いようです。


Github ActionsによるZapのスキャン設定(2)

次に、スケジュールスキャンを行う場合の設定です。


# This is a basic workflow to help you get started with Actions
name: Zap-Advanced-Scan
# Controls when the action will run. Triggers the workflow on push or pull reque
st
# events but only for the master branch
on:
schedule:
# Runs every day at 10:00. Note: Time should be put as GMT.
- cron:  '0 1 * * *'
# A workflow run is made up of one or more jobs that can run sequentially or in
parallel
jobs:
# This workflow contains a single job called "zap_scan"
zap_scan_1:
# The type of runner that the job will run on
runs-on: ubuntu-latest
name: Scan SIOS test site
steps:
- name: ZAP Scan test1.sios.com
uses: zaproxy/action-baseline@v0.3.0
with:
target: 'https://test1.sios.com/'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
zap_scan_2:
# The type of runner that the job will run on
runs-on: ubuntu-latest
name: Scan SIOS test site
steps:
- name: ZAP Scan test2.sios.com
uses: zaproxy/action-baseline@v0.3.0
with:
target: 'https://test2.sios.com/'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'

上記では

  1. スケジュールでジョブを実行したいため”schedule:”でスケジュールを設定しています。ここで注意としては、時刻がGMTで記載することになっているので(オプション等で修正できるのかもしれませんが調べきれてません)、設定した時刻+9時間後にジョブが実行されることです。繰り返しで毎日10時に実行したいため、上記のような記載となっています。
  2. ここではターゲットを2つスキャンするように設定しました。それぞれでオプションが変えられるように、上のように和得た形でジョブを実行させています。

スケジュールスキャン結果

スケジュールスキャンの結果は下記のようになります。色々まずいので、ぼかしを入れています。




セキュリティ系連載案内

セミナー情報1

02/26/2020の開催が中止となってしまいましたOSSセキュリティ技術の会ですが、この度、ウェビナーで開催することになりました。OSSセキュリティ技術の会のウェビナー開催は初の試みで当日バタつくこともあるかもしれませんがどうぞよろしくお願いいたします。

Keycloakも段々と適用範囲が広がってきています。Keycloakとも連携できる新たな認証関連OSS「midPoint」が日本で紹介されてきています。今回は、KeycloakやmidPointをテーマとし、『OSSセキュリティ技術の会 第八回勉強会』と題して勉強会を開催することになりました。

さらに、Red Hat系のディープな技術者が集まるカンファレンスであるdevconf.czが1月末に開催され、最新のコンテナセキュリティからKeycloakまでセキュリティに関するトピックも扱われました。devconf.czに参加・講演して得られた情報の共有もいたします。

今回はzoomを利用してウェビナーを開催予定です。 開始直前にメールにて会議IDとパスワードを事前登録した方のみにメールで(connpassからのメールになると思います)連絡いたします。申込みは下記まで御願い致します。

https://secureoss-sig.connpass.com/event/175643/


タイトルとURLをコピーしました