Laravelアプリケーションの暗号化キー「APP_KEY」が外部に漏洩すると、第三者にサーバー上で任意のコードを実行される(RCE)おそれがあることが、セキュリティ企業GitGuardianとSynacktivの共同調査で報告されました。
■ 何が起きているのか
調査によると、2018年以降にGitHub上で公開されてしまったLaravelのAPP_KEYは約26万件にのぼり、そのうち600件以上のアプリケーションが実際に攻撃可能な状態だったとされています。
Laravelでは、APP_KEYで暗号化したデータを復号する際に、PHPオブジェクトへの復元(デシリアライズ)が行われる場合があります。APP_KEYを知られると、攻撃者は細工したデータを“正規の暗号データ”として送り込めるため、遠隔からのコード実行につながるおそれがあります。
■ 確認・対策のポイント
・.envファイルをGitリポジトリに含めていないか(過去のコミット履歴も含めて)
・ソースコードの共有や外部委託の際に、APP_KEYを含む設定ファイルを渡していないか
・漏洩の可能性がある場合は、ファイルを削除するだけでなく、APP_KEYを新しいキーに交換する
なお、APP_KEYを交換すると、既存の暗号化データやセッションに影響が出る場合があります。Laravel 11以降では旧キーを一時的に併用できる仕組み(APP_PREVIOUS_KEYS)も用意されていますので、影響範囲を確認したうえで計画的に実施することをおすすめします。
ジョイディアでは、既存システムの設定ファイルやリポジトリの管理状況の点検も承っています。「自社のシステムは大丈夫?」とご不安な方は、お気軽にご相談ください。
参考:GitGuardian Blog「Exploiting Public APP_KEY Leaks to Achieve RCE in Hundreds of Laravel Applications」
セキュリティ点検について相談する