はじめに
こんにちは@glassmonekeyです。PHPを書く機会が増えそうなので、以前作って放置していたphp-audit-actionをcomposer.lockから脆弱性情報があればissueを立てるactionにしてみました。
この記事では、使い方や実装の紹介をします。
ソースコードなどは下記となります。バグ報告や要望などお待ちしております。よしよかったらStarください😂
ソースコード
マーケットプレイス
使い方
Github Actionの使い方そのものはこの記事では解説をしません。公式のGetting started with GitHub Actionsあたりを見て初めて見ると良いかなと思います。
下記のような設定ファイルを配置します。
今回はcron的に定期実行を想定したフックにしています。UTCなので要注意です。
.github/workflows/audit.yml
name: Alert Composer Audit
on:
schedule:
- cron: 0 15 * * 0 # At 00:00 on Monday. (JST)
jobs:
check-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: glassmonkey/actions-php-audit@v1
name: php-audit
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
ISSUE_LABELS: bugs,scheduled
WORK_DIR: ""
パラメータについて
-
WORK_DIR
脆弱性をチェックするcomposer.lockへの相対パスになります。デフォルトは空文字で、プロジェクトルートに配置している扱いとなります。 -
ISSUE_LABELS
パラメータでラベルも自動付与できるようにしています。上記の例だとbugs
とscheduled
のラベルを付与できるようにしています。デフォルトは空です。
結果
https://github.com/glassmonkey/actions-php-audit/issues/8
項目ごとにチェックボックスで状況を把握できるようにしているので、これを元に作業するもよし、放置するもよしという感じです。
なお、脆弱性が存在しない場合はv1の時点ではなにもしません。もし要望ありましたらコメントやDMをいただけると嬉しく思います。
実装について
sensiolabs/security-checkerを利用しています。
情報源のPHP Security Advisories Databaseの内容を元に教えてくれるツールになります。
詳細に関してはsensiolabs/security-checkerでComposerライブラリの脆弱性チェックで紹介されているので、興味があればそちらをご確認ください。
一部メッセージの整形にはgoを使いました。
おわりに
突貫ではありますが、わりと実用的なActionができてわりと満足です。
脆弱性まわりのバージョンアップへの対応は必須なわりに、情報のキャッチアップが属人的だったり、優先度が見えにくいことが多い気がするので、もし仕組み化に寄与できたのなら嬉しく思います。
質問やアドバイス等があればコメントか@glassmonekeyまでメッセージをいただけると嬉しく思います。