2020年12月16日、ファイアーウォールサービスなどを提供するAstraのSecurity Researchチームが、WordPressの人気フォームプラグインである Contact Form 7に無制限にファイルをアップロードできる脆弱性があることを発見したというニュースがあり、ウェブ制作界隈は騒然としました(と思います)。
Unrestricted File Upload Vulnerability in Contact Form 7
Contact Form 7は500万以上のサイトで有効インストールされているフォーム系で最も人気のプラグインです。ちなみに海外では利用者が多いWPFormsは400万、Ninja Formsは100万インストールです。
ファイルを無制限にアップロードできる脆弱性
Contact Form 7のファイルアップロード機能を使って、無制限に悪意のあるファイルをアップロードすることができるようになります。
本来ならば、Contact Form 7はアップロードするファイルを制限できるのですが、それを迂回できる脆弱性があり、無制限にファイルのアップロードが可能になるようです。
上記Astraのブログ記事によると、
Contact Form 7のバージョン 5.3.1以下かつファイルアップロード機能が有効になっているサイトにおいて、悪意のあるファイルがアップロードできるとのことです。
Further, it allows an attacker to inject malicious content such as web shells into the sites that are using the Contact Form 7 plugin version below 5.3.1 and have file upload enabled on the forms.
https://www.getastra.com/blog/911/plugin-exploit/contact-form-7-unrestricted-file-upload-vulnerability/
上記説明からは、ファイルアップロード機能を有効にしていなければそもそもファイルをアップロードできないため影響はないかと考えられますが、
プラグイン公式サイト側にはそれに関して特に記載はありませんでした。
付け加えて、Contact Form 7の脆弱性に関しての詳細なレポートを記述しているセキュリティ系プラグインで有名なWordFenceのブログでは、ファイルアップロード機能を有効にしていないサイトでは攻撃者に対して脆弱性はないと言っています。
If you are using Contact Form 7 without the file upload functionality, your site is not vulnerable to attackers looking to exploit this vulnerability.
https://www.wordfence.com/blog/2020/12/a-challenging-exploit-the-contact-form-7-file-upload-vulnerability/
現在稼働しているフォームにファイルアップロード機能がなければそこまで危険ではない
このことから、現在サイト内で利用しているフォーム内に特にファイルアップロードのフォーム項目がなければ、そもそもファイルをアップロードできないため、現状においてもリスクはないという可能性が高いです。
とはいえ、公式の記載もないですし完全にそうだと言い切れるわけではないため、一番安全なのはWordPressを最新にした上で、Contact Form 7を最新版にアップデートすることです。
Contact Form 7を最新のバージョンにするためにはWordPress 5.4以降のバージョンが必要となり、また、Contact Form 7公式ページ内にも検証済み最新バージョンは5.6と明記されています。
基本的にファイルアップロード機能がなければ上記の通りおそらく問題はないのでしょうが、ファイルアップロード機能があるフォームを使っているサイトにおいて、「WordPress 5.6にも5.4にもアップデートできない問題がある…」という場合は、年末年始で対応もできないことが想定されるため、一旦はフォームのページに現在停止中といったような文言を掲載し、Contact Form 7プラグインを無効化(もしくは一時削除)するのが安全面からしておすすめです。
実際に不正利用するのは相当に難しいという見解
前述のWordFenceのブログ記事によると、実際にContact Form 7のファイルアップロードの脆弱性を使って攻撃することは結構難しいんじゃないかという意見が書いてあります。
要約すると、
- 仮にファイルをアップロードされたとしてもそのフォルダ名はランダムな名前となる
- ファイルはフォーム受信者にメール送信された直後に削除される
- フォルダ名を確認するにはディレクトリを一覧で見られるインデックスリスティングを有効にしないといけない
- Contact Form 7はアップロードされたファイルへの直アクセスを禁止している
- つまり、攻撃者はメール送信完了までの短い時間の間にランダムなフォルダ名を見つけ出す必要がある=実際に不可能では?
開発者の方のブログによると、WordFenceのこの記事を書いた方がここまで理解していることに感銘を受けているのと同時に、国内の有名ホスティング事業者がリリースした記事との差を書いていて面白いです。
かたや、自らコードを精査し、公正性を疎かにせず、過度の不安や楽観を招かないよう表現を選んで記事を書いた Wordfence。かたや、適当にググって拾ってきた(であろう)情報を元に無責任な記事を書いて流した日本のホスティング会社。どちらもそれでメシ食ってるプロフェッショナルなんでしょうけど、仕事への取り組み方がこうも違うものかと愕然とするのです。
https://ideasilo.wordpress.com/2020/12/19/professional-work/
問題は一面的ではなく多面的なので、表面だけすくってみていては気づかないものですね。
2020年ももうすぐ終わります。今年は新型コロナウイルスで大変な世の中でしたが、来年はよい方向に動いてくれることを願います。
個人的にはたくさんWordPressに関わった濃密な1年でした。WordPressを取り巻く状況も徐々に変化してきていて、Gutenbergといった機能性のあるエディターがますます進化していくことが予想されます。来年も楽しみにしています。
良いお年をお迎えください。
コメントを残す