さて読者の皆さんはFacebookに何枚くらい写真を保存しているだろうか? そのうちで安全にバックアップされているのは何枚くらいだろうか?
先ほど明らかになったFacebookのバグは、攻撃者に多少の知識さえあれば、他のユーザーのアルバムを好き勝手に削除できるという致命的なものだった。
幸いなことに、このバグの発見者(インド在住のLaxman Muthiyah)はただちにFacebookに通報した。その結果、バグ通報報奨金として1万2500ドルを得たという。もちろんこのバグが放置されていたら生じたであろうFacebookの大損害に比べれば1万2500ドルは安すぎだが、報奨金システムというのはそういうものでやむを得ない。
いずれにせよFacebookは大急ぎで―正確には2時間ほどでバグを修整した。
Laxmanはバグの詳細をこちらで公開しているが、一言でいえば、Facebookの Graph APIがリクエストの処理にあたってユーザー認証を怠っていたのが原因だった。誰かが他人のアカウントのアルバムを削除するリクエストを送信するとGraph APIは送信者が誰かを確かめず無条件にリクエストを実行してしまう。
攻撃者のアルバム削除リクエストはたとえばこんな感じだ。
Request :-
DELETE /[相手の写真アルバムID] HTTP/1.1
Host : graph.facebook.com
Content-Length: 245
access_token=[Your(Attacker)_Facebook_for_Android_Access_Token]
犠牲者の側からみると、アルバムはある瞬間に突如消えることになる。
あまりにも単純なバグだ。こんなリクエストが通るわけがないと普通思うが、実は通ってしまう。ひどい初歩的なミスだった。
一歩間違えれば大惨事が引き起こされていたところだ。Sophos Securityによれば、Facebookの写真アルバムは単純なシーケンシャルな数値IDで管理されているという。ハッカーが簡単なスクリプトを書いて、適当な数値から始めてIDが順次増加していくようにして削除リクエストを送り続けたら、Facebookが異常に気づく前に大量のアルバムが消去されてしまったことだろう。
注意を喚起しておきたいが、Facebookは決してバックアップドライブではない。今回は助かったが、Facebookのコードに別のエラーがあれば、あなたの写真は煙のように消えかねない。大切な写真は別途安全な場所にバックアップしておこう。
画像: mkhmarketing/Flickr UNDER A CC BY 2.0 LICENSE
[原文へ]
(翻訳:滑川海彦@Facebook Google+)