3
0

More than 3 years have passed since last update.

プロジェクトのPHPライブラリの脆弱性をチェックするGithub Actionを作りました

Last updated at Posted at 2020-04-27

はじめに

こんにちは@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
    パラメータでラベルも自動付与できるようにしています。上記の例だとbugsscheduledのラベルを付与できるようにしています。デフォルトは空です。

結果

https://github.com/glassmonkey/actions-php-audit/issues/8
スクリーンショット 2020-04-27 1.06.36.png

項目ごとにチェックボックスで状況を把握できるようにしているので、これを元に作業するもよし、放置するもよしという感じです。

なお、脆弱性が存在しない場合はv1の時点ではなにもしません。もし要望ありましたらコメントやDMをいただけると嬉しく思います。

実装について

sensiolabs/security-checkerを利用しています。

情報源のPHP Security Advisories Databaseの内容を元に教えてくれるツールになります。

詳細に関してはsensiolabs/security-checkerでComposerライブラリの脆弱性チェックで紹介されているので、興味があればそちらをご確認ください。

一部メッセージの整形にはgoを使いました。

おわりに

突貫ではありますが、わりと実用的なActionができてわりと満足です。
脆弱性まわりのバージョンアップへの対応は必須なわりに、情報のキャッチアップが属人的だったり、優先度が見えにくいことが多い気がするので、もし仕組み化に寄与できたのなら嬉しく思います。

質問やアドバイス等があればコメントか@glassmonekeyまでメッセージをいただけると嬉しく思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0