2022-05-25

Laravel の脆弱性 CVE-2022-30778

最近 GitHub リポジトリにセキュリティ SaaS の Snyk を導入したのですが、CVE ベースで検知される依存パッケージの脆弱性アラートにちょくちょく不発に近いものが紛れてます。

2022/05/16にオープンされた Laravel の CVE-2022-30778 もそのひとつで、内容としては POP Chain で任意コード実行が可能であるというものになります。

重大度 (Severity) は Critial で一見やばそうな感じですが、前提条件が「PHP の unserialize() 関数に対してユーザインプットをそのまま渡している」であることから、実際に影響のあるアプリケーションはごくごく限られるかと思います。

PHP のドキュメントに記載されている通り、そもそも unserialize() 関数にバリデーションチェック無しでユーザインプットを引数として渡してはいけません。

警告 allowed_classes の options の値にかかわらず、 ユーザーからの入力をそのまま unserialize() に渡してはいけません。 https://www.php.net/manual/ja/function.unserialize.php

というわけで Snyk のアラートきっかけにこのページに辿り着いた方は、Laravel アプリ内で unserialize() 関数にユーザインプットを渡していないかレビューを実施し、確認が取れたらそっと Ignore ボタンを押しておきましょう。なお Snyk では Ignore 押下時に備忘としてコメントを残しておくことも可能です!

参考