ACF Extended PROに認証不要のコード実行脆弱性
WordPressのプラグインACF Extended PROに、認証なしで任意のWordPress関数を呼び出せる脆弱性が公表されました。0.9.2.6以前を使うサイトは、修正版への更新と、悪用の条件に当てはまるかの確認を進めてください。
急ぎ度: 早めに
CVSS v3は9.8で認証なしにネットワークから狙えますが、悪用には特定の設定かサーバー環境が必要で、公表されたのは2026年11月3日です。
関係があるか
WordPressでAdvanced Custom Fields: Extended PROを使っているサイトが対象です。フォーム機能を公開ページで使っているサイトは、とくに確認の優先度が高くなります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Advanced Custom Fields: Extended PRO(WordPressプラグイン) | 0.9.2.6までのすべての版 | 0.9.2.6より新しい版。版番号はベンダーのchangelogで確認してください |
確かめ方
- 1WordPressの管理画面でプラグイン一覧を開き、Advanced Custom Fields: Extended PROの版が0.9.2.6以下かを確認します。複数サイトを運用している場合は、サイトごとに見ます。
- 2WP-CLIが使える環境では、
wp plugin list --fields=name,version,statusで版と有効状態をまとめて確認できます。 - 3フォームの設定画面で
shortcode_previewが有効になっていないかを見ます。この設定は初期状態では無効です。 - 4サーバーのPHPでOpenSSLが使えるかを
php -m | grep -i opensslで確認します。何も表示されなければ、OpenSSLの拡張が入っていません。
何が起きたか
WordPressのプラグインAdvanced Custom Fields: Extended PROに、認証なしの訪問者がサイト上でWordPressの関数を任意に呼び出せる脆弱性が見つかりました。呼び出す際の引数も、攻撃する側がある程度決められます。
原因は、フォームの設定値を検証しないまま、フィールドの設定に混ぜ込んでいることです。混ぜ込まれた値は render_field の処理の中で call_user_func_array に渡されます。そのため、本来想定されていない関数が実行されます。
公表は2026年11月3日で、0.9.2.6までのすべての版が対象です。実際の悪用が確認されたという情報は、今のところありません。ただし、CVSS v3は9.8と最高クラスで、公開直後は詳細が広まりやすい時期です。条件に当てはまるサイトは、早めに更新しておくほうが安全です。
攻撃の流れ
-
1
公開ページに到達
ログインしていない訪問者が、プラグインのフォームを扱うページにネットワーク経由でアクセスします。
-
2
検証をすり抜ける
フォームの設定値が十分に検証されないまま、フィールドの設定に混ざります。
-
3
条件がそろう
対象フォームで `shortcode_preview` が有効か、サーバーにOpenSSLの関数がない状態が前提になります。
-
4
関数が実行される
`call_user_func_array` を通じて、任意のWordPress関数が制御された引数で呼ばれます。
-
5
サイトに影響
呼ばれた関数に応じて、情報の読み取り、改ざん、停止などが起こりえます。
どう悪用されるか
攻撃にログインは要らず、ネットワーク経由で届き、サイト管理者や訪問者の操作も必要ありません。CVSSの評価で攻撃の難しさが低いとされているのは、このためです。
ただし、次のどちらかの条件が必要です。1つは、管理者が対象フォームで、初期状態では無効の shortcode_preview を有効にしていること。もう1つは、サーバーにOpenSSLの関数がなく、ACF Proの acf_decrypt が検証のないbase64デコードに切り替わる環境であることです。どちらにも当てはまらないサイトは、悪用される可能性が下がります。
悪用されると、機密性・完全性・可用性のすべてに高い影響が出うると評価されています。実際に何が起きるかは、呼び出される関数と引数で決まります。データの読み取り、設定や内容の書き換え、サイトの停止などが考えられます。
今すぐやること
-
1
修正版に更新する
Advanced Custom Fields: Extended PROを、0.9.2.6より新しい版に更新します。更新前にバックアップを取り、可能ならテスト環境で動作を確認してください。版番号と変更内容は、ベンダーのchangelogで確認できます。
wp plugin list --fields=name,version,status -
2
悪用条件に当てはまるか調べる
フォームごとに
shortcode_previewの設定を見ます。あわせて、サーバーのPHPにOpenSSLの拡張が入っているかを確認します。更新が済むまでの危険度の見積もりに使えます。php -m | grep -i openssl -
3
不審な変更がないか見る
更新が遅れた期間があるサイトは、身に覚えのない管理者アカウントや、書き換えられた投稿・設定、見覚えのないファイルがないかを点検します。Webサーバーのアクセスログで、フォームを扱うページへの不審なリクエストが増えていないかも見ておくと安心です。
-
4
ベンダーとWordfenceの告知を確認する
ベンダーのchangelogとWordfenceの脆弱性情報で、修正された版と、追加の回避策や注意点が出ていないかを確認します。
すぐ更新できないとき
すぐに更新できない場合は、対象フォームの shortcode_preview を無効にします。あわせて、サーバーのPHPにOpenSSLの拡張を入れ、acf_decrypt が検証なしのデコードに切り替わらない状態にします。どちらも、更新までのつなぎです。公開ページでフォーム機能を使っていないなら、プラグインを一時的に無効化する手もありますが、サイトの表示や機能への影響を先に確かめてください。
背景
Advanced Custom Fields: Extended PROは、WordPressのカスタムフィールド管理プラグインAdvanced Custom Fieldsに機能を足す商用の拡張です。フィールドやフォームを管理画面から組み立てられるため、サイトの公開ページで訪問者の入力を受ける部分にも使われます。ログインしていない人が最初に触れる入口になるので、ここに実行の経路ができると影響が大きくなります。
今回の脆弱性は、外から来る設定値が検証されないまま、呼び出す関数の引数として使われる点にあります。PHPには、関数名や引数を実行時に組み立てて呼び出す仕組みがあり、入力の検証が足りないと意図しない関数が動くことが以前から知られています。今回は、その仕組みが、フォーム設定の受け渡しの検証不足とつながりました。
よくある質問
Q.無料版のAdvanced Custom Fieldsや、ACF Extendedの無料版も影響しますか。
Q.更新したあと、侵害されていないかをどう確認すればよいですか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| ACF Extended | Advanced Custom Fields: Extended PRO |
0.9.2.6 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Advanced Custom Fields: Extended PRO plugin for WordPress is vulnerable to Limited Code Injection in all versions up to, and including, 0.9.2.6 via the render_field function. This is due to insufficient validation of form configuration parameters before merging into field settings and passing to call_user_func_array in the render_field method. This makes it possible for unauthenticated attackers to call arbitrary WordPress functions with controlled arguments. Method 1 requires the administrator to enable the non-default 'shortcode_preview' setting for the target form, while Method 2 requires the server environment to lack OpenSSL functions, causing ACF Pro's acf_decrypt to fall back to unverified base64 decoding.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web security@wordfence.com
- web security@wordfence.com
- web nvd.nist.gov
- web github.com