CVSS 7.2 HIGH 未ログインで悪用可能
| 対象 | プラグイン PDF Invoices & Packing Slips for WooCommerce 有効インストール約 300,000 件 |
|---|---|
| 影響バージョン | 5.16.4 以下 |
| 修正版 | 5.16.5 |
| CVE | CVE-2026-107750 |
| 種類 | XSS(Improper Neutralization of Input During Web Page Generation) |
| 悪用される確率(EPSS) | 0.26%(全脆弱性の上位 82%) |
| 公表 | 2026年10月31日 当サイト掲載: 2026年11月2日 12:21 |
何が起きるか
注文時の氏名・会社名・注文メモ欄に、ログイン不要で悪意のあるスクリプトを仕込まれるおそれがあります。管理者などがその注文情報を表示すると、スクリプトが実行され乗っ取り等につながる可能性があります。
想定される被害と条件
- 管理者が仕込まれた注文や請求書を閲覧した際に、管理者権限でスクリプトが実行され、不正な管理者ユーザーの追加や設定変更が行われるおそれ
- 管理画面のログイン状態(セッション)が悪用され、サイトが乗っ取られるおそれ
- サイトの改ざんや、訪問者を不審なサイトへ誘導するコードの埋め込み
- 顧客の注文情報・個人情報が外部に送信されるおそれ
- 以前の修正(5.16.2)を適用済みでも 5.16.4 以下なら影響を受ける
今日やること
PDF Invoices & Packing Slips for WooCommerce を 5.16.5 以上に更新し、すぐ更新できない場合は一時停止を検討してください。
すぐに更新できない場合
すぐに更新できない場合はプラグインを一時的に無効化し、新しい注文の詳細画面や請求書のプレビューを開かないようにしてください。WAFを導入している場合は、ルールを最新に更新してください。
更新後に確認すること
- 管理画面の「ユーザー」一覧で、身に覚えのない管理者アカウントが追加されていないか確認する
- WooCommerceの「注文」一覧で、請求先の氏名・会社名・注文メモに不自然な記号や「img」「onerror」「script」などの文字列を含む注文がないか確認する
- 「設定」やプラグイン・テーマの一覧で、身に覚えのない変更や、新たに追加されたプラグインがないか確認する
- 管理者のパスワードを変更し、全ユーザーをログアウトさせて、不審なログイン履歴がないか確認する
不審な投稿・ユーザー・ファイルが見つかった場合は、専門家への相談をおすすめします。
PDF Invoices & Packing Slips for WooCommerce の現在の情報 (WordPress.org、2026-11-02 取得)
| 最新版 | 5.16.6 修正版を含む |
|---|---|
| 対応 WordPress | 4.4 以上(検証済み 7.1.4) |
| 最終更新 | 2026-10-22 11:57am GMT |
| 有効インストール | 300,000+ |
| リンク | WordPress.org のページ 公式サイト |
技術的な詳細(修正差分の解析)
修正前後のコード(5.16.4 → 5.16.5)を WordPress.org から取得して差分を解析しました。特定の確度: 高。攻撃に使える手順は記載していません。
原因となった処理
- OrderDocument::get_html() はテンプレート描画後、wpo_wcpdf_convert_encoding フィルタが有効(既定で htmlspecialchars_decode が存在すれば有効)な場合に、文書 HTML 全体へ htmlspecialchars_decode(..., ENT_QUOTES) を適用していた。
- 請求先・配送先住所(氏名・会社名など)、顧客メモ(shipping notes)、注文メモ、商品メタ、カスタムフィールドといった顧客入力値は、5.16.2 で導入された wp_kses() 系の許可リスト(wp_kses_post / wpo_wcpdf_sanitize_html_content 等)で無害化されていたが、この処理は『無害化 → 文書全体のデコード』という順序になっていた。
- 許可リストは実際の山括弧を含むタグしか除去しないため、HTML エンティティで表現されたタグ文字列は無害なテキストとして素通りしていた。その後の文書全体デコードで本物のタグとして復元され、サニタイズ済みの値が再びスクリプトを含む HTML に戻ってしまった(サニタイズ後のデコードによる二重解釈の問題)。
- WooCommerce のチェックアウトでは未認証のゲストでも住所や注文メモを入力できるため、ログインしていない攻撃者がこれらの値を注文データとして保存させることができた。
- 復元された HTML は、管理画面のプレビューや HTML 出力モード、ショートコード表示などブラウザで表示される文書に埋め込まれ、閲覧した管理者や他のユーザーのブラウザ上で実行され得た(Stored XSS)。BulkDocument では個別文書の HTML を連結した後にも再度デコードされ得る構造だった。
- Frontend.php のショートコードでは、注文受付(order-received)ページでゲスト注文を表示する際に注文キーの照合が不十分で、文書へのアクセス制御が弱かった(関連する防御強化)。
被害が起きる前提条件
- PDF Invoices & Packing Slips for WooCommerce 5.16.4 以前(5.16.2〜5.16.4 の不完全な修正版を含む)が有効化されている。
- WooCommerce のチェックアウトが公開されており、未ログインのゲストでも請求先住所や注文メモを入力して注文できる。
- wpo_wcpdf_convert_encoding が有効(既定)で、文書全体のデコード処理が実行される。
- 管理者などが該当注文の請求書・納品書を HTML 出力やプレビューなどブラウザでレンダリングされる形で閲覧する。
修正版での変更
- get_html() のテンプレート描画中だけ protect_from_decode フラグを立て、新設の protect_from_document_decode() で顧客由来の値の '&' を '&' に置換するようにした。これにより後段の文書全体デコードで元のエンティティ表記に戻るだけとなり、タグとして復元されなくなった。try/finally で描画後は必ずフラグを戻す。
- 請求先・配送先住所、請求カスタムフィールド、注文メモ、商品メタ、配送メモ(顧客メモ)の各出力にこの保護処理を適用した。
- get_html() に decode_html 引数を追加し、BulkDocument では個別文書を decode_html=false で取得するようにして、デコードの二重適用を防いだ。
- Frontend のショートコードで、注文受付ページのゲスト注文(未ログイン、または顧客 ID のない注文)を表示する際に、注文キーを hash_equals で照合する検証を追加し、アクセス制御を強化した。
主な修正ファイル: includes/Documents/OrderDocument.php, includes/Documents/OrderDocumentMethods.php, includes/Documents/BulkDocument.php, includes/Frontend.php, woocommerce-pdf-invoices-packingslips.php
原文(Wordfence Intelligence)
The PDF Invoices & Packing Slips for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the ‘billing_address.first_name / last_name / company, customer_note’ parameter in all versions up to, and including, 5.16.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This is an incomplete fix for CVE-2026-92244: the wp_kses() allow-list introduced in 5.16.2 correctly blocks raw-tag payloads but is bypassed by entity-encoded payloads (e.g., <img onerror=…>) that contain no literal angle-bracket characters and are therefore passed through unmodified before the trailing decode rematerializes them.
参考リンク
脆弱性情報の出典と著作権
脆弱性情報の出典: Wordfence Intelligence のレコード。Copyright 2012-2026 Defiant Inc. License: Defiant hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute this software vulnerability information. Any copy of the software vulnerability information you make for such purposes is authorized provided that you include a hyperlink to this vulnerability record and reproduce Defiant's copyright designation and this license in any such copy. Read more.
CVE: Copyright 1999-2026 The MITRE Corporation. CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Terms of Use.
本ページの作成について: 上記の出典データをもとに、「何が起きるか」「今日やること」「更新後に確認すること」などの日本語解説は生成 AI が作成し、サイトの主治医が随時確認しています。誤りに気づかれた場合はお問い合わせください。
「PDF Invoices & Packing Slips for WooCommerce」の他の脆弱性
「PDF Invoices & Packing Slips for WooCommerce」の脆弱性一覧 →
最近公表された深刻度の高い脆弱性
- WordPressプラグイン「s2Member」にリモートコード実行の脆弱性(CVE-2026-86596) 2026/11/02
- WordPressプラグイン「Ultra Addons for Contact Form 7」に任意ファイル削除の脆弱性(CVE-2026-102435) 2026/11/02
- WordPressプラグイン「NextGEN Gallery」にリモートコード実行の脆弱性(CVE-2026-76010) 2026/10/31
- WordPressプラグイン「Debug Log Manager」にXSSの脆弱性(CVE-2026-120114) 2026/10/31
- WordPressプラグイン「WP Directory Kit」にSQLインジェクションの脆弱性(CVE-2026-109197) 2026/10/31

