laravel6のIgnition問題


概要

システム保守の関係上、JBNDBのRSSを常にチェックしているが、先日見た事ないような深刻度の脆弱性が出てきた。
Laravel 用の Ignition page における脆弱性

きゅ、、9.8!!!??? ( MAX10 )
これはヤバいという事で対応したが、すんなりいかなかった話。

Ignitionとは

GitHub
laravel6から採用されたComposerパッケージのエラーメッセージ表示ツール。
見易くて綺麗。
Laravel6インストール後composer.jsonを見るとデフォルトでrequire-dev内(development環境)に記載されている。

対応方法(失敗)

ignition 2.0.5未満は影響を受ける、とある。
最新にしてみる。

composer.json
{
...
    "require-dev": {
        "facade/ignition": "^2.0.5",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
...

しかし、composer installで以下のようなエラーが、、、

% composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install laravel/framework v6.18.23
    - Conclusion: don't install laravel/framework v6.18.22
...
    - facade/ignition 2.0.5 requires illuminate/support ^7.0|^8.0 -> satisfiable by illuminate/support[7.x-dev, 8.x-dev, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1, v7.1.2, v7.1.3, v7.10.0, v7.10.1, v7.10.2, v7.10.3, v7.11.0, v7.12.0, v7.13.0, v7.14.0, v7.14.1, v7.15.0, v7.16.0, v7.16.1, v7.17.0, v7.17.1, v7.17.2, v7.18.0, v7.2.0, v7.2.1, v7.2.2, v7.3.0, v7.4.0, v7.5.0, v7.5.1, v7.5.2, v7.6.0, v7.6.1, v7.6.2, v7.7.0, v7.7.1, v7.8.0, v7.8.1, v7.9.0, v7.9.1, v7.9.2].

えーと、何、、、laravel7以降しかサポートしてない??
現在システム運用中でignition自体development環境でしかビルドされてないのに7にあげるとかないでしょ、、、

対応方法

以下のいずれかが妥当ではないかと思う。

  • Ignitionを捨てる
    見易くてデバッグしやすいかもしれないが、本番では使わないし、必要ならPHP標準のエラー表示で見たらいい。
    composer.jsonから"facade/ignition":,を削除してビルドし直す。
  • Ignitionの代わりにWhoopsを入れる
    composer.jsonの "facade/ignition":, を削除して"filp/whoops": "^2.7",を追記し、ビルドし直す。
    Whoopsとは:
    • Laravel6未満で採用されていたエラー表示ツール。
    • 過去に脆弱性は報告されているものの、今は無し。

Whoopsは多少見た目と使い勝手が悪いかもしれないが、必要十分であると思う。
かと言ってWhoopsすら脆弱性ゼロとは言い切れないので、問題を抱えたくないなら削除してもいいんじゃないかと。