ブログなどに使われるCMS「WordPress」のREST APIに発見された脆弱性が大きな問題になっている。

WordPressはオープンソースで基本的には無料で使えるCMSだ。
たいていのホスティングサービスで簡単にインストールできるよう準備されており、法人から個人まで利用しているユーザーは数多い。
ちなみにWordPress.orgはリアルタイムにダウンロード数がカウントされており、いま現在「32,981,972」となっている(※記事執筆時点)。

1月末にセキュリティリリースがアップデートされた件を発表。
その後、先のアップデートのアナウンスで深刻な脆弱性に対処したが、あえて伏せていたと発表した。

しかし、今週になって、セキュリティベンダーやIPAなどの情報セキュリティ機関から、当該の脆弱性を悪用したWebサイトの改ざん被害が多数あるとの情報を公開されたのだ。

これは一体どういうことなのだろうか?

◎REST APIとは?
そもそも、REST(Representational State Transfer)とは複数のソフトウェアを連携させるための考え方.だ。現在のWebサービスでは、多くがこのRESTに準拠する仕様で構築されている。

というのも、REST API(Application Programming Interface;使用可能なコマンド、規約などの集合)であれば、異なる複数のソフトウェア間の連携が非常にシンプルな形で可能になるからだ。

わかりやすくざっくりいうと、
HTTPメソッドを使ってサーバにアクセスすると、指定したパラメータに応じてXMLやJSONで記述されたメッセージが返ってくるという仕組みでデータのやり取りが可能なのだ。
これによって、ホスト側の汎用性の高い機能を外部から手軽に利用できるということになる。

HTTPメソッドには
「GET」(サーバからリソースを取得する)
「POST」(サーバにリソースを作成する)
「PUT」(リソースの変更・更新)
「DELETE」(リソースの削除)
があり、一般にREST APIではそれぞれのリソースに対して固有の一意なURI(エンドポイントと呼ばれる)が与えられる。そのエンドポイントに対してHTTPメソッドでパラメータを送ることでリソースに対する操作を行う。

仕組みとして非常にシンプルなこと、ホスト側のデータを容易に広く提供できることから、2000年代中頃から普及している。
Yahoo、Google、Facebook、Twitterなど大手のWebサービスが導入し、開発者向けにREST APIを公開したことも普及を促した要因だろう。

◎REST APIの危険性
REST APIは、シンプルな仕組みである一方、APIの実装によっては危険をはらんでしまう。
「外部からHTTPメソッドでリソースを操作できる」というのは、ブラウザのURL窓からも送れるわけで、極論すると、誰が何をしようとされるがままなんていうことにもなりかねないのだ。

実際、エンドポイントはブラウザから手動で叩くこともできる。
もちろん認証を通す必要もあり、リソースによりできることは制限されるが、ある程度の手順を踏めば誰でも可能となる。
そのため、多くの場合、認証を入れる、使用可能なコマンドやアクセスできるリソースを制限するなど、REST APIが悪用されないような作り方をしている。

◎自動アップデートでは無理だったのか?
今回発見されたWordPress 4.7/4/7/1のREST APIの問題は、「認証を回避してコンテンツを書き換えられる脆弱性が存在する」というものだった。

前述のようにシンプルな仕組みである上、認証なしで攻撃可能となれば、やろうと思えば誰でも攻撃者になり得ることを意味する。
そのため、WordPress側ではREST APIの脆弱性について、情報を公開することで悪用を助長しないように、あえて情報公開を1週間遅らせたのだ。

WordPressは、設定で自動バックグラウンド更新をオンにしていれば、新しいバージョンに自動的にアップグレードされる。

情報公開を控えたのは、自動バックグラウンドによる更新が行き渡るのを待ったということだ。

しかし、それでも冒頭で紹介したように被害が報告されているのだ(今回のWordpressのREST APIの脆弱性を発見したセキュリティベンダー「Sucuri」によると66,000ページ以上の被害があったという)。

WordPressは、多くの追加機能がモジュールで提供されていたり、テンプレートがカスタマイズできたり、Webに優れたデザインのテンプレートが豊富にあることも魅力の1つとなっている。
つまり、バージョンアップにより、これらがうまく動かなかったり、デザインが微妙に崩れたりする可能性を理由にして「自動バックグラウンド更新」をオフにしている人がいた可能性も高い。

WordPress.orgが
「自動バックグラウンドによる更新が行き渡った」のを見誤ったのか、
想定以上に自動バックグラウンド更新をオフにしている人が多かった
など、理由はいくつか考えられる。
WordPressを使っている場合は、至急のアップデートしておきたい。

WordPressに限らずだが、Webの場合、一度導入してそのままの状態で長く使い続けられることはまずない。アップデート情報にはこまめに反応し、対策を取ることは必須だ。

場合によっては、今後こうしたアップデートが緊急に必要な場合、被害を大きくしないように強制的なアップデートを実行する対処も、必要になっていくのかもしれない。


大内孝子