かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress 4.7, 4.7.1 はAPIに致命的なバグがあって認証無しで誰でも記事を改ざんできちゃうっぽい!

WordPress 4.7, 4.7.1 のサイトは直ぐに4.7.2にアップデートするのです!

Twitterで大学や国会議員や公的機関のサイトが大量に改ざんされてるという情報を朝から目にした日でした。

どうやら改ざんされていたのはWordPressのサイトの様で、事の顛末は、
WordPressはアップデートの際には何を修正したかを公開していたのですが、今回はWordPress 4.7.2で修正をしたバグが致命的なものだったために直ぐにセキュリティに関わるアップデートの内容を公開せずに1週間後に情報を公開したようです。( WordPress 4.7.2のリリースが1月26日、バグの情報が公開されたのが2月1日 )
そして、それ以降もWordPressをアップデートせずに、4.7、4.7.1のバージョンのままだったサイトが軒並みこのバグを利用されて記事を改ざんされていったと言うのが今回の件のようです。

今回の話題になってるバグとは?

特定のAPIのURLにPOSTでデータを送るだけで、WordPressのログインも認証もなしに投稿内容を更新することができてしまうというバグ…そしてバグの内容が公開されていて、少しググれば簡単に攻撃スクリプトが解ってしまうというくらい簡単なもの。
これはWordPress 4.7 で導入された投稿の取得や新規追加、更新を行うことができるREST APIに含まれていたバグ。なので、4.7より古いバージョンのサイトはこの攻撃で改ざんされないっぽい。古いのはあまり良くないけど、結果的に今回は良かったみたいな…

ローカル環境で試してみました。

WordPressのバージョンは管理画面 >ダッシュボードで確認ができます。 f:id:kikiki-kiki:20170206143252p:plain
※ ここが、4.74.7.1 の人はすぐにアップデートしましょう!

バグの具体的な内容はWordPress公式のリリースノートの記事や、そこにある報告者のリンク先の記事内に書かれています。
攻撃したいWordPressのサイトのAPIのURLに、改ざんしたい記事の投稿IDを紐付けて、データにタイトルと本文を持たせてPOSTするだけ。

なので、こんなサイトに…
f:id:kikiki-kiki:20170206150323p:plain
次のような公式の記事とかを参考に作った攻撃コード ( 調べればすぐ解りますがキーとか隠しておきます )
f:id:kikiki-kiki:20170206150202p:plain
これをリクエストすると…

f:id:kikiki-kiki:20170206150331p:plain
はい。認証も何もなしに記事を書き換えることができました。
このAPIを利用して記事を改ざんするとWordPress管理画面から見れる投稿のリビジョンでは、ユーザー名が表示されないようです。
f:id:kikiki-kiki:20170206151734p:plain

ね?簡単でしょ!?

_人人人人人人人人人人人人人人人_  
> 簡単でしょ!?じゃねーよ!!!! <  
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄  

試してみた所、HTMLタグも入れ放題なんですよ。
そして、攻撃に必要になる「WordPressの投稿ID」なのですが、デフォルトとか多くのテーマだとHTMLタグにid名やclass名で投稿IDが出力されています。
HTMLに出力されていなくてもRSSを利用している場合RSSに出力されているURLはパーマネントリンク設定で変更されたURLではなく?p=1の形式になっており投稿IDが丸わかりなのです…

このバグ
f:id:kikiki-kiki:20170206142825p:plain

はてなブックマーク - WordPress 4.7.1 の権限昇格脆弱性について検証した | 徳丸浩の日記
👆 コトの重大性に溢れたコメントが並んでいます。マジやばくね?

解決方法

こちらの記事にあるように、下記の方法を取ればこの致命的なバグには対応することができそうです。

  1. WordPressを最新の4.7.2にアップデートする
  2. ただちに最新版へアップデートすることが困難な場合、REST APIを無効化するプラグインを使用する

そして、可能な限りWordPressの自動更新をONにしておくのが良いのではないかと思いました。
しかし私の持っていたサイトの中には更新の通知が来ても実際には更新されなかったサイトもあったので自動更新機能を過信しすぎてもダメかもしれません。

改ざんされたサイトの対応

改ざんされた記事そのものはリビジョンから直ぐにもとに戻すことが可能です。
今回のAPIを利用した攻撃の場合、できても記事のタイトルと本文の更新のようなので記事内にスクリプトやiframe埋め込むことはできると思うのですが、サイトのテーマ自体にコードを追加したり、DBからデータを抜き取ったり、ログイン情報を取得したりとかは難しいのかな〜?と思っているのですが、これは私もハッキリとした事が言えないので、むしろ教えてほしい部分です!!

WordPressのような既に多くの人がコミットしているプロジェクトでもこんな重大な脆弱性が発生したりするんだなぁ〜って驚きました。
それより、WrodPressのサイトを持っている方は直ぐにチェックしてみることをオススメします。  
 
追記
REST APIのバグを利用しての改竄は観測している中ではISISを中傷する改竄が多かったのですが、中には「私はホワイトハッカーだ。君のサイトのWordPressアップデートした方が良いぞ。」と注意喚起のような記事を改ざんするハッカーも観られるようになってきました。
f:id:kikiki-kiki:20170206200127p:plain
まぁ いずれにせよ、改ざんされちゃってるわけですけどね。。。


[参考]

👇 徳丸 先生のありがた〜い本 👇