1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

composer auditコマンドを使ってComposerパッケージの脆弱性をチェック、CodeBuildを利用して毎日チェック結果を通知する

Posted at

概要説明

Composer2.4リリースにより、新しいauditコマンドが追加され、Composerパッケージの脆弱性チェックがいままでより便利になりました。
そして脆弱性チェックを毎日自動実行し、結果を通知することで脆弱性の対応が素早くできます。
今回はPHPのライブラリ管理ツール「Composer」について、既知のセキュリティ脆弱性をチェックするauditコマンドを紹介し、CodeBuildを利用し毎日チェック結果をslackに通知する方法を共有したいと思います。

auditコマンド

Packagist.orgのapiに従って、脆弱性をチェックし、リストアップします。
成功した場合は0、そうでない場合は最大255件まで結果として返します。
auditコマンドは3つのオプションがあります。

  • --no-dev:require-devパッケージはチェックしない
  • --format (-f):出力の形式を指定できます。デフォルトはtable、「plain」、「json」、「summary」も指定できます。
  • --locked: vendorフォルダの内容に関係なく、ロックファイルからパッケージをチェックします。

コード参考情報
Composerドキュメント

auditコマンドを実行してみる

環境は以下になります

PHP 8.0.8
Composer 2.5.2
laravel-admin 1.8

実行結果は以下になります。laravel-adminの脆弱性が1件リストされてます。

composer audit

Found 1 security vulnerability advisory affecting 1 package:
+-------------------+----------------------------------------------------------------------------------+
| Package           | encore/laravel-admin                                                             |
| CVE               | CVE-2023-24249                                                                   |
| Title             | laravel-admin has Arbitrary File Upload vulnerability                            |
| URL               | https://github.com/advisories/GHSA-g857-47pm-3r32                                |
| Affected versions | <=1.8.19                                                                         |
| Reported at       | 2023-02-27T21:30:30+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+

脆弱性がない場合の実行結果はこのように

No security vulnerability advisories found

CodeBuild

CodeBuildの全体的な設定は省きます。buildspecファイル、通知設定を紹介いきたいと思います。

buildspecファイル

buildspec.ymlファイルを作成し、ルートディレクトリ直下におきます。
これでbuildフェーズ中にcomposer auditコマンドが実行されます。

buildspec.yml
version: 0.2
phases:
  install:
    runtime-versions:
      php: 8.0
  build:
    commands:
      - composer audit

コード参考情報
CodeBuildドキュメント

毎日ビルドの自動実行

ビルドプロジェクトの画面にて、トリガー作成を進みます。
スクリーンショット 2023-03-23 211912.png
トリガー作成画面では、トリガーの名称や頻度などを選べます。
頻度は毎時、毎日、毎週、カスタムを設定できます。こちらはカスタムのcron式にしました。毎日14時の実行になります。
スクリーンショット 2023-03-23 212233.png

slackへの通知設定

ビルドプロジェクトの設定画面から通知ルールの作成ができます。
スクリーンショット 2023-03-23 220710.png
通知をトリガーするイベントはビルド成功と失敗時にします。
composer auditコマンドがCodebuildでの実行結果について

  • 脆弱性が検知された時はCodeBuildのbuild stateがFAILEDになります。
  • 脆弱性がない時はCodeBuildのbuild stateがSUCCEEDEDになります。
    スクリーンショット 2023-03-23 220745.png
    最後通知するターゲットについて、AWS Chatbot(Slack)にします。
    Chatbotの設定について省きますが、設定が済んでいれば、ChatbotがサポートしているAWSサービスから簡単にslackへの通知ができます。
    スクリーンショット 2023-03-23 220809.png

結果確認

最後にSlackへの通知結果を確認しましょう。

  • Codebuild失敗の通知がくる時(脆弱性が検知された時)
    スクリーンショット 2023-03-23 222243.png
    通知のリンクからビルドログを確認することで、検知された脆弱性の詳細を把握できます。
    スクリーンショット 2023-03-23 223811.png
  • Codebuild成功の通知がくる時(脆弱性がない時)
    スクリーンショット 2023-03-23 224020.png

まとめ

composer auditコマンドの登場により、Composerパッケージの脆弱性チェックが簡単になりました。
Codebuildなど自動ビルドを工夫することで、脆弱性チェックと結果通知を自動化することができます。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?