本文へ移動

AI Buildersのための最新のニュース、知見、事例を毎日お届け

運営会社
企業のセキュリティ対策FrankenPHP

FrankenPHPのDockerイメージ、OpenSSLなどの修正が届かず 作り直しを

PHPのアプリケーションサーバー「FrankenPHP」の公式Dockerイメージで、ベースイメージのセキュリティ修正が反映されない場合があった問題が「CVE-2026-128027」としてNVDに載った。配布側の仕組みは2月4日に直っており、利用者は使っているタグを取り直し、自前のイメージを作り直す。

記事の内容を自社でどう進めるか、内容が固まっていない段階でも相談できます。仕事の相談

毎週 1 回、その週の記事から 5 本と実践の 1 本を選んでメールで届けます。ニュースレターを購読する(無料)

FrankenPHPの公式サイトに載るマスコット。フランケンシュタインのような縫い目とボルトのある緑色の象が立っている
画像: FrankenPHP

PHPのアプリケーションサーバー「FrankenPHP」の開発チームが2月5日にadvisoryで公表した問題が11月13日、「CVE-2026-128027」として米国の脆弱性データベースNVDに載った。公式のDockerイメージに、ベースイメージのセキュリティ修正が反映されない場合があった。開発チームはイメージを作り直す仕組みを2月4日に改めた。利用者は、使っているタグを取り直し、自前のイメージを作り直す。

修正の届かない層が残った

advisoryによると、FrankenPHPのイメージは、AlpineやPHP、Goの公式イメージに新しいタグが付いた時だけ作り直されていた。ところが、これらのベースイメージは同じタグのまま中身を差し替えて修正を出すことが多い。そのため、利用者が「latest」などのタグで最新を取ったつもりでも、中のシステムのライブラリが古いままの場合があった。advisoryは、既知の脆弱性を含む環境で動いていた可能性があると書いている。

  • 対象: FrankenPHPの公式Dockerイメージ「dunglas/frankenphp」
  • 当たるバージョン: advisoryとNVDの表記では「1.1.11未満」、直ったバージョンは「1.1.11」
  • CVE番号: CVE-2026-128027
  • 深刻度: CVSS 3.1で9.8、CVSS 4.0で9.3(NVDに登録した米VulnCheckの評価)。advisoryも9.8でcriticalとした
  • 弱点の種類: CWE-787(範囲外への書き込み)。advisoryの記載

例として挙がるのは、OpenSSLの「CVE-2025-15467」だ。Alpineは1月27日、3.20.9・3.21.6・3.22.3・3.23.3を出してこの脆弱性を直した。NVDの説明では、細工したCMSのデータを読ませるとスタックの範囲外に書き込み、処理が止まるか、コードを実行され得る。

バージョンの表記には注意がいる。FrankenPHPのリリースの一覧では、2月の時点のバージョンは1.11系で、1.1.11というリリースは無い。修正はバージョンの更新ではなく配布の仕組みの変更なので、番号だけでは当否を決められない。

イメージの作成日時を見る

まず、組織の中でFrankenPHPのイメージを使っている所を探す。Dockerfileの「FROM dunglas/frankenphp」の行や、Composeの設定の「image:」の行が目印になる。見つかったら、Dockerの一般的なコマンド「docker image inspect」で、手元のイメージの作成日時(Createdの欄)を見る。advisoryに日付の境目は書かれていないが、仕組みが直った2月4日より前に作られたイメージは、ベースイメージの修正が入っていない恐れがある。

CIで定期的にイメージを作っている組織は、ビルドの設定も合わせて見る。ベースイメージを取り直す指定が無いと、ビルドを回すたびに手元に残った古い層が使われ続ける。作り直した日付が新しくても、中身が新しいとは限らない。

配布側の今の状態は、Docker Hubのタグの一覧で確かめられる。latestのタグは11月12日に更新されていた。

タグを取り直して作り直す

advisoryは、使っているタグの最新を取り直すよう勧めている。公式イメージをそのまま使う時は「docker pull dunglas/frankenphp:latest」のように、使っているタグを取り直してコンテナを入れ替える。FrankenPHPを元に自前のイメージを作っている時は、「docker build --pull」で作り直す。--pullを付けないと、手元に残った古いベースイメージがそのまま使われる。

開発チームは2月4日に、ベースイメージのダイジェスト(中身から計算した識別子)を配布元と毎日比べ、変わっていればタグ名が同じでも作り直す仕組みに改めた。今のビルドの設定にも、毎日1回動く予定が入っている。ただし作り直されるのは配布側のイメージだけで、利用者の手元のイメージと自前のイメージは、自分で取り直すまで変わらない。

悪用の報告はまだ無い

CVE-2026-128027は11月13日の時点で、米サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)の悪用を確認した脆弱性の一覧(KEV)に載っていない。例に挙がったCVE-2025-15467も載っていない。advisoryとNVDにも、悪用の報告は無い。NVDでの分析の状態は「Deferred」で、NVD自身の評価はまだ付いていない。

調べた範囲では使っていない

SAGUSは、会社のリポジトリと開発に使う端末の作業場所を、Dockerfileや設定ファイルを中心に「frankenphp」と配布元の名前「dunglas」の語で検索し、どちらも見つからなかった。調べた範囲では、SAGUSはFrankenPHPのイメージを使っていなかった。

編集部の見方

編集部は、この件の要点は、バージョン番号で当否を決める確認の仕組みでは拾えない問題だという点にあると見る。当たる範囲は「1.1.11未満」と書かれているが、2月の時点のバージョンは1.11系で、番号の上では範囲の外に見える。それでも、その時点のイメージには古いOpenSSLが残っていた可能性がある。FrankenPHPを使う組織は、番号ではなくイメージの作成日時で確かめ、古い物を作り直したい。ただし、毎回--pullを付けてイメージを作り直す運用なら、追加の作業は確認だけで済む。

出典

に確認(日本時間)

  1. advisory(github.com)
  2. 米国の脆弱性データベースNVD(nvd.nist.gov)
  3. Alpineは1月27日(alpinelinux.org)
  4. NVDの説明(nvd.nist.gov)
  5. リリースの一覧(github.com)
  6. Docker Hubのタグの一覧(hub.docker.com)
  7. 今のビルドの設定(github.com)
  8. KEV(cisa.gov)

この記事をシェア

この記事は役に立ちましたか