先日は話題になりましたこちらの記事を拝見しまして、
色々考えることがありましたので、こちらの記事を書くことにしました。
はじめに
Laravelのfacade/ignition
パッケージに脆弱性(CVE-2021-3129)が見つかり、
上記の記事では、筆者さんの注意喚起やご自身のマルウェア感染体験談を紹介してくれています。
しかし、こちらの脆弱性はちょっと特殊な事情があります。
脆弱性の対象が、本番環境では利用されるはずのないパッケージであることや、Laravelの環境変数の設定ミスを狙ったものになっています。
なので、公開サーバーにデプロイされているLaravelを適切に設定していれば、該当しないことが基本です。
Laravelに限った話ではありませんが、アプリケーションを本番環境にデプロイするのは、神経質な作業を伴います。
個人的なプロジェクトだったら良いのですが、会社などの組織としてクライアントやエンドユーザーに
製品として提供するアプリケーションの場合は、組織が全責任を負います。
厳密には、会社の代表を含む役員が責任を負うことになりますので、
リスクを回避する一定の仕組みを責任者が設ける必要があります。
私も極小規模の会社ではございますが、一応代表の立場ではありますので、責任者として仕組みを作れないかと思い、
アイディアレベルの内容ではありますが、こちらの記事に試作を紹介したいと思います。
Laravelの環境変数をデプロイ時にテスト
早速ではございますが、下記にて試作を作ってみました。
https://github.com/timoshka-lab/laravel-health-check
現時点では、数時間で作れるクオリティーでしかないので、実践では使えません。
あくまでもアイディアの一つとして皆さんのご意見やフィードバックを頂くことが目的のプロジェクトになっています。
パッケージの目的
- Laravelアプリケーションの環境変数が、本番環境に見合った内容で設定されているかをテストしたい
- Composerで
require-dev
のパッケージがインストールされていないかをテストしたい - Laravelパッケージは汚したくない、独立した場所で検証したい
- コマンドラインインタフェースで操作したい
- テストケースを誰でも分かりやすい形にしたい(追加も安易)
- 可能な限りシンプルに作りたい(役割が限られているので、管理を踏まえて作り込みすぎない)
PHPUnitを有効活用した試作
試作では、artisan風にコマンドラインから入力を受け取り、PHPUnitでテストケースを走らせる形にしました。
PHPUnitのテストケースであれば、誰でも理解しやすいし、管理もしやすいことが主な目的です。
ご利用時の注意点
rootユーザーでの実行はお控え下さい。コマンド内部では、ターゲットになっているLaravelアプリケーションをブートしていますので、
場合によっては、ログファイルがroot権限で書き込まれてしまいます。phpの実行ユーザーでご利用下さい。
プロジェクトの今後
使えそうなアイディアであった場合は、徐々にリファクタリングや機能の追加をしていこうと思います。
現時点では試作レベルのため、DBやキュードライバーの対応が不十分だったり、Redisなどの環境変数を検証できていなかったりなど、
まだまだ実践での利用からは程遠い状態です。
同様のプロジェクト
実は同様のプロジェクトが既にPackagistに登録されています。その多くは、Laravelの内部から利用するものなっていたため、
今回の目的に合いませんでした。(すべて確認したわけではありませんが。。。)
ご意見ください
どんなご意見でもOKです。すべてのご意見を快く受け止めます。
番外編
Composerでインストールしているパッケージに脆弱性が含まれていないか、検証できるプロジェクトが存在しています。
ご存知の方も多いとは思いますが、一応記載しておきます。
https://github.com/FriendsOfPHP/security-advisories