EC-CUBE4 Composer PHP 脆弱性

composer installやcomposer updateで「these were not loaded, because they are affected by security advisories」と出て止まるのは、指定したバージョンに既知の脆弱性があり、Composerがそのバージョンを候補から外しているためです。基本の対処は脆弱性の直ったバージョンへ上げることで、どうしても古いバージョンが必要なときだけ、勧告IDを指定して除外します。

実際に出たエラーは次の通りです。Composer 2.10.3で、Carbonを2.62.1に固定しようとしたときのものです。

Problem 1
  - Root composer.json requires nesbot/carbon 2.62.1 (exact version match: 2.62.1 or 2.62.1.0), found nesbot/carbon[2.62.1] but these were not loaded, because they are affected by security advisories ("PKSA-csyb-yc4p-mnbs"). Go to https://packagist.org/security-advisories/ to find advisory details. To ignore the advisories, add their IDs to the "policy.advisories.ignore-id" config or add the package to "policy.advisories.ignore". To turn the feature off entirely, you can set "policy.advisories.block" to false.

まず修正済みのバージョンを確認する

エラー文にあるPKSA-で始まるIDが勧告の番号です。Packagistの勧告ページか次のAPIで、どのバージョンが影響を受けるかを確認します。

curl -s "https://packagist.org/api/security-advisories/?packages[]=nesbot/carbon"

今回の勧告はCVE-2025-22145で、影響範囲は<2.72.6|>=3.0.0,<3.8.4でした。composer.jsonの指定を^2.72.6に変えると、エラーは出ずに2.72.6が選ばれました。固定していた理由が「古いPHPで動くから」程度なら、修正版の要件を見て上げられないかを先に確認します。

古いバージョンが必要なときは勧告IDで除外する

検証のために古いバージョンを再現したいなど、上げられない事情があるときは、composer.jsonのconfigにエラー文の勧告IDを書きます。

{
    "require": {
        "nesbot/carbon": "2.62.1"
    },
    "config": {
        "policy": {
            "advisories": {
                "ignore-id": ["PKSA-csyb-yc4p-mnbs"]
            }
        }
    }
}

この設定を入れると、Composer 2.10.3では2.62.1が選ばれました。除外は勧告ID単位なので、同じパッケージに新しい勧告が出ればまた止まります。エラー文にある"policy.advisories.block": falseで機能ごと無効にする方法もありますが、他のパッケージの勧告まで見えなくなるため、IDを指定する方法を使ってください。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ