問い合わせフォーム用プラグインContact Form 7の6.2〜6.2.3で、ログインしていない人でもサーバーにファイルを置けてしまう脆弱性が見つかりました。修正版の6.2.4は2026年10月29日に公開されており、現在の最新版は6.2.4.1です。

まず必要なのは、「6.2.4.1への更新」と「更新後の添付ファイルの届き方の確認」の2つです。6.2.4では安全対策としてファイル名の扱いが変わりました。WordやExcelを受け付けるフォームでは、届く添付ファイルの名前が「見積書.xlsx_.txt」のようになります。更新後は、テスト送信まで行ってください。

プラグインの更新を任せたい方へ

当社の保守サポートでは、プラグインのセキュリティ更新から毎日のバックアップ、24時間の監視まで月額3,800円から対応します。更新後にフォームが動かないときは、トラブル対応でも承ります。

▶ 保守サポートの料金とプランを見る

この記事の情報は2026年11月10日時点のものです。

Contact Form 7の脆弱性(6.2〜6.2.3)はどのような問題?

公式の告知で示されているのは、認証なしの任意ファイルアップロードという問題です。6.2〜6.2.3に含まれる複数の不具合が組み合わさると、通常なら入力チェックで拒否されるファイルを送り込めます。さらに、送信直後に削除されるはずのファイルも残せてしまいます。発見したのはShinya Murakami氏とJakub Herman氏で、脆弱性データベースのWPScanを通じて報告されました。

項目 内容
対象バージョン 6.2〜6.2.3
修正版 6.2.4(2026年10月29日)。現在の最新版は6.2.4.1
深刻度 WPScanによる評価はCVSS 7.5(High)
CVE番号 CVE-2026-114432
攻撃に必要なもの ログインは不要

6.2の公開日は10月6日で、問題のあった期間は約3週間にあたります。Contact Form 7は有効インストール数が1,000万以上にのぼり、国内でも広く利用されているフォームプラグインです。公式は対象を6.2〜6.2.3に限定しつつ、利用者全員に6.2.4への更新を推奨しています。6.2.4.1で変わったのは同梱ライブラリの更新だけなので、これから更新する場合は6.2.4.1を選んでください。

自分のサイトが対象か、3つの条件で確認する

公式によれば、狙われる可能性があるのは「ファイル添付欄があるフォーム」のうち、「ディレクトリの中身を一覧で表示する設定のサーバー」に置かれたものです。理論上、この条件を満たすフォームはすべて対象になります。

確認すること 確認する場所 該当する場合
バージョンが6.2〜6.2.3 管理画面の「プラグイン」 すぐに更新
フォームにファイル添付欄がある 「お問い合わせ」→ 各フォームの編集画面で [file] タグを確認する 狙われる条件の1つ
サーバーがフォルダの一覧を表示する ブラウザで https://自分のドメイン/wp-content/uploads/ を開く ファイル名が一覧で並ぶ場合は一覧表示がオン

添付欄がなく、一覧表示もオフになっているサイトなら、狙われにくいと考えられます。ただし、それを理由に更新を見送ることはできません。6.2.4で公式が追加した安全対策は全バージョンに向けたものであり、今後ほかの問題が見つかった場合も、修正には最新版への更新が必要です。

6.1以前から更新できていないサイトの場合

今回の脆弱性が生じたのは6.2からなので、6.1以前は対象に含まれません。一方、6.2からはPHP 8.3以上とWordPress 7.1以上が必須となっています。古いPHPを使っているサイトでは、更新ボタンを押しても6.2以降には上げられません。今回は影響がなくても、そのままでは今後の修正をすべて受け取れなくなります。

当社の保守先にも、PHPが古く、Contact Form 7を6.2に更新できないサイトが以前はありました。11月上旬までにすべてPHP 8.3以上へ更新し、Contact Form 7も最新版にしています。ファイル添付欄のあるフォームを含め、6.2.4以降への更新は完了しています。PHPの更新手順や更新時に起きたことについては、PHP 7.4から8への移行事例とPHPバージョンアップ後のトラブル10事例にまとめました。

更新後の確認ポイント:WordやExcelの添付が「.txt」に変わる

6.2.4では、アップロードされたファイルの名前を整える処理が変更されています。従来は「プログラムとして動きそうな拡張子」だけが書き換えの対象でした。6.2.4からは、許可リスト(safelist)に含まれない拡張子をすべて書き換える方式になっています。

フォームから送った添付ファイルのうち、写真やPDFはそのまま届き、許可リストにない形式のファイルは名前が変わって届く様子

当社で6.2.4.1のコードを確認したところ、許可リストの初期設定に含まれるのは画像・音声・動画の拡張子と、pdf、txtだけでした。docx、xlsx、zip、csvは含まれていません。リストにない拡張子を持つファイルは、保存時に名前の末尾へ「_.txt」が追加されます。

送信したファイル 6.2.4以降で受け取る名前
写真.jpg 写真.jpg(変更なし)
資料.pdf 資料.pdf(変更なし)
履歴書.docx 履歴書.docx_.txt
見積書.xlsx 見積書.xlsx_.txt

ファイルの内容が壊れたわけではないため、名前から「_.txt」を取り除けば開けます。ただ、採用応募や見積もり依頼のフォームで毎回この状態になると、受け取る側にとっては困りものです。WordやExcelを受け付けるフォームでは、更新後に実際のファイルを添付し、テスト送信を行ってください。名前が変わって届く場合は、次の章で紹介する方法で許可リストに追加できます。

運営者が行うことを整理

  • Contact Form 7を6.2.4.1へ更新する
  • ファイル添付欄のあるフォームから、WordやExcelを添付してテスト送信する
  • ブラウザで /wp-content/uploads/ を開いて、ファイルの一覧が表示されないか確認する
  • 6.1以前で更新が止まっている場合は、PHPのバージョンを確認して更新計画を立てる

ここからは、サイトの管理を担当する技術者に向けた内容です。

技術者向け:Contact Form 7 6.2.4で変わった点と対策

拡張子を許可リストに追加する

許可リストの変更には、wpcf7_file_extension_safelist というフィルターを使えます。公式の告知にはzipを追加する例が掲載されています。WordとExcelを追加する場合は、子テーマの functions.php または小さなプラグインに、次のように記述します。

追加する拡張子は、そのフォームで実際に受け付けるものに限ってください。フォームの [file] タグにある filetypes で種類を制限していても、許可リストはそれとは別の仕組みで動きます。両方の設定をそろえることで、受け付けたファイルが意図しない名前で届くのを防げます。

コードから利用している場合の変更点

  • wpcf7_antiscript_file_name():書き換えの方式は、危険な拡張子を列挙するリスト(unsafelist)から、許可リスト(safelist)へ変更されました
  • wpcf7_unship_uploaded_file():2つ目の引数 $options が必須となり、3つ目の引数 $uploaded_files(参照渡し)が追加されました。独自コードからこの関数を呼び出している場合、引数を修正しないと動作しません
  • UTF-8の扱い:正規表現を適用する前に、wp_scrub_utf8() で文字列を整える処理が入っています。WPScanの告知の題名にも「不正なUTF-8のファイル名」と記されています

フォルダの一覧表示を無効にする

今回、狙われる条件の1つになっていたのは、サーバーでフォルダの一覧表示が有効になっていることです。Contact Form 7の問題に限らず、一覧が表示される状態ではバックアップファイルなどの置き場所も知られてしまいます。Apacheの場合は、サイト直下の .htaccess に次の1行を記述します。

Nginxでは、初期設定で autoindex がオフになっています。サーバー会社のコントロールパネルに「ディレクトリの一覧表示」といった設定があれば、あわせて確認してください。設定を反映した後は /wp-content/uploads/ を再度開き、一覧が表示されず、403などのエラーになることを確認します。

Contact Form 7でよく寄せられる「迷惑メール」と「届かない」の相談

Contact Form 7について保守の現場でよく寄せられるのは、脆弱性よりもメールに関する相談です。reCAPTCHAを導入しても迷惑メールが届き続けたり、問い合わせの控えメールがGmailに届きにくかったりするケースがあり、当社ではその都度、原因を調査して対応しています。迷惑メールへの対策は問い合わせフォームにスパムが大量に届くときの対策に、メールが届かない場合の対応はフォームからメールが届かない原因と解決策にまとめています。

よくある質問

Q. ファイル添付欄のないフォームも更新が必要ですか?

はい。公式では、問題のある6.2〜6.2.3以外を使っている方にも、6.2.4への更新を推奨しています。添付欄がないフォームは今回の条件に該当しませんが、6.2.4で追加された安全対策は全バージョンに向けたものです。

Q. 更新後、届いた添付ファイルを開けなくなりました

ファイル名の末尾に「_.txt」が付いていないか確認してください。6.2.4からは、許可リストにない拡張子のファイルがこの名前で届きます。名前を元に戻すと開けます。繰り返し起きる場合は、技術者向けの章を参考に、拡張子を許可リストへ追加してください。

Q. 管理画面から6.2以降へ更新できません

PHPが8.3未満、またはWordPressが7.1未満である可能性があります。サーバーのPHPのバージョンは、管理画面の「ツール」→「サイトヘルス」→「情報」で確認してください。PHPの更新によってほかのプラグインやテーマが動かなくなることもあるため、検証環境で試したうえで本番を更新すると安全です。

プラグインの更新と、更新後の不具合をお任せください

Contact Form 7では、10月6日の6.2公開後も、6.2.1から6.2.4.1まで5つの版が公開されています。更新のたびにフォームから実際に送信し、メールが届くことまで確認する作業は、本業で忙しい運営者にとって負担になります。

当社の保守サポートでは、プラグインとWordPressのセキュリティ更新、毎日のバックアップ(7日分)、24時間365日の監視を月額3,800円から承っています。更新後にフォームを送信できない、添付ファイルが届かないといったときは、トラブル対応でも承ります。

▶ 保守サポートの料金とプランを見る

▶ 更新後にフォームが動かないときのトラブル対応

更新履歴

  • 2026年11月10日:作成(公式の告知、WordPress.org、WPScanを確認。6.2.4.1のコードでファイル名の書き換えを確認)

この記事を書いた人

矢部 敦

矢部 敦合同会社Edel Hearts 代表

WordPress専門の開発会社を経営。プラグイン開発・カスタマイズ・保守を専門とし、18時間におよぶUdemyのWordPress講座を開講。出典付きで回答するAIチャットボット「Edel AI Hybrid Chat」開発者。著書『WordPress はじめての最小プラグイン』(Kindle)。本ブログの記事は、実際の開発・運用で得た一次情報をもとに執筆しています。会社情報はこちら

この記事をシェア