速報

日本郵便UGXの送り状システムにサイバー攻撃 越境EC配送は全宛先で停止

CATEGORY

Puppet Serverの任意コード実行と認可回避を修正|受付先ごとに更新を確認

※本ページのリンクにはプロモーションが含まれています。

複数の管理対象ノードからPuppet Serverへ実行レポートが送られ、そのうち一つに異常があることを示す概念図

この記事のポイント

脆弱性
CVE-2026-115731
CVE-2026-115732
深刻度

CRITICAL9.4

対象
Puppet Enterprise 2023.8.0以上2023.8.13未満、Puppet Enterprise 2025.0.0以上2025.12.1未満、Puppet Enterprise 2026.0.0以上2026.0.1未満
悪用状況
不明
推奨対応
系列に対応する修正版へ更新し、Puppet Serverを再起動する。各受付先で版と通常レポートの受信を確認し、証明書の発行条件も点検する。
公表日

目次

Puppet Serverを運用しているなら、管理ネットワークに閉じている環境も更新対象に入れてください。Perforceが米国側の日付で2026年11月3日(日本時間4日早朝)に公開したレコードによると、対象版ではが署名したエージェントを持つクライアントが、細工した実行レポートを送り、Puppet Serverのサービスユーザーとして任意コードを実行できます。Puppet Enterprise(PE)は系列に応じて2023.8.13、2025.12.1、2026.0.1に更新し、修正コードを読み込ませるためにPuppet Serverを再起動します。

同じには、証明書名の照合に起因する別の回避も含まれます。運用担当者が最初に確認するのは、実行レポートを受けるサーバーの版、そこへ接続できるノード、証明書の発行条件です。インターネット非公開でも、侵害された管理対象ノードから制御側へ届く経路があれば、優先度は下がりません。

スポンサーリンク

エージェントの報告がサーバー側で実行に変わる条件

Puppetは、サーバーから設定カタログを渡すだけでなく、エージェントから実行結果を受け取ります。PuppetのレポートAPI仕様によると、通常の送信には PUT /puppet/v3/report/:nodename?environment=:environment を使い、受信した報告を設定済みの処理機構に渡します。構成によってはPuppetDBにも保存されます。監視で見ているPuppetDBの検索と、今回の入力を受けるPuppet Server側の受付は別の経路です。

PerforceのCVE-2026-115731公式レコードによると、CVE-2026-115731ではレポート内の細工した型を復元する処理が問題です。署名済みのエージェント証明書を持つクライアントからサーバーへ到達できる場合、レポート受信がコード実行の入口になります。Perforceの評価は 4.0で9.4(Critical)です。コードの実行主体はPuppet Serverのサービスユーザーとされており、root権限を直接取得するとの説明ではありません。実際に読み書きできるファイルや接続先は、そのサービスの権限と配置に依存します。

証明書なしのクライアントが常に送信できるわけではありません。ただし、CAが十分な検証をせず証明書要求を自動承認していると、未認証のネットワーク上の攻撃者も署名済み証明書を取得できるとPerforceは説明しています。入口での証明書確認が有効でも、発行手続きが弱ければ前提条件を満たされます。逆に手動承認にしていても、すでに発行済みの証明書やそのが侵害された場合の問題は残ります。今回確認した一次資料は、実環境での悪用の有無を明らかにしていません。

証明書名の部分一致は別の認可回避

PerforceのCVE-2026-115732公式レコードが説明するCVE-2026-115732は、Puppet Serverで使用される認可ライブラリの問題です。認可済みのホスト名より長い、または短い名前を持つ署名済み証明書が、そのホストとして認可されることがあります。攻撃には名前が衝突する証明書をCAが発行している必要があり、手動承認でも自動署名でも条件を満たし得ます。

Perforceは、この不備で他のノードへのなりすましが可能となり、PEではCA管理へのアクセスや、管理対象ノードでのリモートコマンド実行にもつながり得るとしています。こちらの評価はCVSS 4.0で9.0(Critical)です。前者が報告を受けるサーバー上での実行、後者が証明書名の誤判定による権限の獲得であり、一方を成立させるのにもう一方が必須だとは公表されていません。

スポンサーリンク

更新先はPEの系列ごとに選ぶ

Perforceの両CVEレコードは、次の範囲と修正版を示しています。表はCNAが明示した範囲を整理したもので、表にない旧系列を安全と判定するためには使えません。サポート外の版を運用している場合は、サポート対象への移行経路も確認してください。

PE系列公表された影響範囲修正版
2023.82023.8.0以上2023.8.13未満2023.8.13
20252025.0.0以上2025.12.1未満2025.12.1
20262026.0.0以上2026.0.1未満2026.0.1

CVE-2026-115731の対処としてPerforceは、puppet-agent 8.22.2または9.1.3を同梱したPEへ更新し、Puppet Serverを再起動するよう案内しています。ここでの名は修正コードを含む部品を指しています。管理対象ホスト側のエージェントだけを更新して、サーバーの更新が済んだとは判断できません。また、PEの製品版とPuppet Coreの版は別の番号です。Puppet Core 9.1.3リリースノートには両CVEの修正が掲載されていますが、PEの更新先はPEの系列から選びます。個別にパッケージを組み合わせて運用している場合は、その配布元とサーバーが読み込むコンポーネントを確認します。

更新前にレポートの受付先と署名の経路を洗い出す

まず、エージェント設定上の接続名と、その名前が実際に転送される先を対応させます。プライマリサーバー、コンパイルサーバー、負荷分散の、災害復旧用の待機系を一覧にし、そのうちどのホストがレポートを受けるかを記録します。の設定だけで判断できない場合は、直近の通常運転でどこに要求が届いたかをや既存のメトリクスで照合します。待機系が平時に受付していなくても、切り替え時に旧版を再投入する構成なら更新対象から外せません。

次に、受付先ごとに製品系列、導入済みの版、証明書を発行するCA、接続元のネットワークを記録します。同じPE環境でも、検証系だけが先に更新されていたり、交換用のマシンイメージが古いままだったりすることがあります。構成管理の台帳にある予定版と、実際のホストのパッケージ記録を比較してください。アプリの記録は、構成管理サーバー自身の更新証跡にはなりません。

署名については、Puppet公式のCAとSSLの解説を参照し、自動承認の有無だけでなく、承認条件が申請元を信頼できる情報で照合しているかを確認します。たとえば接続元を確認せず申請された名前だけで承認する運用では、その名前を誰が要求できるかが問題になります。外部CAを使う場合は、Puppet側の自動署名設定だけを見て終わらず、外部側の発行規則と、Puppet Serverが受け入れる証明書の範囲も合わせて確認します。

スポンサーリンク

更新までの露出を下げる

修正版を入れるまで時間がかかる場合は、既存の接続要件に沿ってサーバーの受付を必要なネットワークに限定し、十分な検証を伴わない自動署名を停止または厳格化することを検討します。これは本サイトの暫定対応の提案です。すでに有効な署名済み証明書を持つノードからの経路は残るため、更新の代用にはなりません。発行元や管理者が分からない証明書が見つかった場合は、そのノードが現役か、どの処理で使われるかを確かめ、通常の失効手順へ引き継ぎます。

レポートのPUTを全遮断すると、正常な構成反映の結果まで見えなくなる可能性があります。監視で使う報告が止まると、カタログの取得に成功しても、適用時の失敗や未管理状態に気付きにくくなります。ネットワーク制限を変更する場合は、対象となるエージェントと送信元の範囲を事前に突き合わせ、変更後に正常報告が届くことを確認します。アクセス制限や署名条件の変更は適用時刻も残し、後でログを調べるときに境界として使います。

再起動後はホスト単位で更新と通常動作を照合する

更新順序は構成に合ったPuppet Enterprise公式アップグレード手順で確認します。複数ノード構成では、アップグレード中にインフラノードの版差が生じると、エージェント実行や複製に影響する場合があります。保守枠を確保し、や復旧方法を確認したうえで、製品がサポートする順序で更新してください。古いホストを負荷分散から外す運用では、新しいホストで通常処理を確認してから戻し、未更新のホストがそのまま待機系に残っていないことも確かめます。

各受付先で、導入済みのパッケージ、Puppet Serverの再起動時刻、サービス起動結果の三つを記録します。パッケージの更新だけでは起動済みプロセスが新しいコードを読み込んだ証拠になりません。逆に再起動時刻だけでは正しい版が入ったか分かりません。サービス管理の記録とパッケージ管理の記録を同じホスト名で突き合わせます。構成管理システムのホスト名とロードバランサーの登録名が違う場合は、台帳で対応付けます。

そのうえで、検証用エージェントで通常のカタログ取得と適用を行い、新しい実行レポートが想定した受付先に届くことを確認します。PuppetDBなどへ転送する構成では、送信側の成功に加え、転送先で該当ノードの新しい報告が確認できるところまで見ます。負荷分散名で一度成功しただけでは、すべてのバックエンドの確認にはなりません。通常の要求がどのサーバーに処理されたかをログで結び付け、試験が通っていない受付先を明示します。悪用用のレポートを本番へ送る必要はありません。

たとえば、プライマリと二台のコンパイルサーバーがあり、そのうち二台がレポートを受ける構成なら、各受付先の版と再起動を別々に記録します。検証用ノードの通常実行を一回行って一台に届いた場合、もう一台の判定にはそのログを流用しません。承認済みの保守手順で送り先を切り替えるか、普段の報告を受付先別に確認します。認可を独自設定している場合は、隔離したで、既知の証明書名には必要な操作が許可され、同名の一部しか一致しないテスト用の名前には意図しない権限が付かないことも確認します。

侵害の調査は更新結果と分けて記録する

修正版の稼働が確認できても、それは過去の不正操作がなかったという意味ではありません。更新前の期間について、CAの発行・承認記録、Puppet Serverやに残るレポート受付ログ、ホスト側で取得しているプロセスや外向き通信の記録を同じ時刻軸で照合します。普段は接続しないノードからの受付、登録直後の証明書による予想外の通信、似た名前の証明書の承認などは、調査対象を絞る手掛かりになります。アクセスログの成功や失敗だけで悪用を断定できるわけではなく、証明書名が記録されていない構成では送信元や時刻を補助情報として扱います。

管理サーバーで通常見ない子プロセスやファイル変更が見つかった場合は、変更管理の履歴と比較し、該当する時点のログを確保して初動対応へ引き継ぎます。管理対象ノードまで調査する範囲は、当時のサービス権限、CA管理操作、設定の配布記録から判断します。保持期限より古い期間や監視対象外のホストは「記録なし」として残します。「異常を確認できなかった」ことと「観測できなかった」ことを区別すると、追加の証跡を探すべき範囲が明確になります。

出典・一次情報

本記事は以下の公開情報をもとに作成しています。最新の状況は各リンク先で確認してください。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

あわせて確認したい対策・解説

ほかの脆弱性

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

プロキシ

通信の間に立ち、利用者の代わりにリクエストを送ったり受け取ったりする中継の仕組みやサーバー。

詳しく見る

検証環境

本番環境に反映する前に、変更や更新が問題なく動くかを試すための環境。本番と同じ構成にできるほど確認の精度が上がる。

詳しく見る

バックアップ

データの複製を別の場所に保存しておくこと。故障や誤操作、攻撃でデータを失ったときに元に戻すために使う。

詳しく見る

デプロイ

作成・修正したプログラムやWebサイトを、本番のサーバーに配置して使える状態にすること。

詳しく見る

アクセスログ

Webサーバーなどが、受け付けたリクエストを1件ずつ記録したログ。日時・接続元IPアドレス・URL・応答の状態などが残る。

詳しく見る

ロードバランサー

複数のサーバーにアクセスを振り分け、負荷を分散させる装置や仕組み。障害時に別のサーバーへ切り替える役割も持つ。

詳しく見る

バックエンド

Webサービスなどで、サーバー側でデータの処理や保存を担う部分。利用者の画面を担うフロントエンドと対になる言葉。

詳しく見る

パッケージ

ソフトウェアを配布・インストールしやすいように、プログラムと必要な情報をひとまとめにしたもの。npmやComposerなどで管理する。

詳しく見る

秘密鍵

公開鍵暗号で、持ち主だけが厳重に保管する鍵。署名や、公開鍵で暗号化されたデータの復号に使う。

詳しく見る

CVSS

脆弱性の深刻度を0.0〜10.0の数値で評価する共通の基準。数値が大きいほど深刻度が高い。

詳しく見る

API

ソフトウェアやサービスの機能を、ほかのプログラムから決まった方法で呼び出して使えるようにした窓口。

詳しく見る

認可

認証で確認した利用者に、どの情報や機能へのアクセスを許すかを決める仕組み。

詳しく見る

パッチ

ソフトウェアの不具合や脆弱性を修正するための更新プログラム。適用することで既知の問題を解消する。

詳しく見る

電子証明書

公開鍵の持ち主が誰かを、認証局が証明する電子的な証明書。HTTPSのサーバー証明書やソフトウェアの署名に使う。

詳しく見る

認証局

電子証明書を発行し、公開鍵の持ち主が本物であることを保証する機関。ブラウザはあらかじめ信頼する認証局を持っている。

詳しく見る

CVE

公開された脆弱性に付けられる世界共通の識別番号。「CVE-2026-12345」のように年と連番で表す。

詳しく見る