BOOTH(&APOLLO)の個人情報漏洩の原因を素人なりに妄想してみた
11月28日(金)〜12月1日(月)に、ウェブ同人音楽即売会『APOLLO』が開催されました。
今まで同人イベントに比べて、地方の人も気軽に参加でき、実際のイベント参加時よりも試聴が圧倒的にし易いため多くの音楽に触れられるとても良いイベントでした。
いろいろと問題がありましたが、個人的にはこれからも続いて欲しいイベントだと思いました。
ただ、いろいろと問題が起こってしまっていて、ウェブサービスを日頃から触っている身としては人事ではないなと思ったので、自分の考え(妄想ともいう)を書き出してみることにします。
デザイン重視の設計と無理なスケジュール?
個人情報漏えい前から思っていたことです。
管理画面にAjax遷移を多用していて、見た目はかっこいいのですが、
等いろいろ問題があって、デバッグに回せる時間が少なかったことを感じさせるものになっていました。デザイナーさん寄りの企画者さんが無理なスケジュールを押し通した感ががが。。
BOOTHは決済情報や個人情報を扱うので、安定性を取るべきなのに、ajax遷移とか必要なのかな?ちょっと怖いな?と思っていました。管理画面なら尚更単純なものでよかったのでは…。
そんなフレームワークで大丈夫か?
BOOTHさんの公式発表では原因は次のように書かれています。
サーバ負荷を削減するために行った設定(キャッシュの設定)に誤りがあり、一部のユーザー様のログイン状態(クッキー)が他のユーザー様と共有されてしまう事態が発生いたしました。
ログイン状態(クッキー)が他の人と共有…が良く解らないのですが、キャッシュ設定により同じセッションが他人のクッキーにも入ってしまったということでしょうか。
ユーザー系の情報にキャッシュをかけるのは普通はやらないのですが、もしやってしまったとしても、リクエスト(ユーザーID)が異なれば呼び出されるキャッシュも異なるはずです。なんかフレームワークがその辺りまでサポートしていないか、バグが潜んでいたのか…という気がします。
BOOTH(pixiv)はどんなフレームワークを使っているのでしょうか。
自社製、Ruby on Rails…。
自社でクレカ情報を持つこと
今回、漏れた可能性のある情報の中に、クレジットカードの下4ケタが入っていてびっくりしました。今どき、クレカ情報は自社で管理せずに、管理会社に委託するのが普通だと思います。なぜ自前実装を頑張ってしまったんだ…
また、↓のツイートにも違和感を感じました。
本件に関しましてpixivのアカウントへの影響はございません。
プレミアム機能でご使用中のクレジットカードに関する情報の漏洩もございません。
https://t.co/Ha5hIx67r3
ご迷惑とご心配をお掛けしますことを、深くお詫び申し上げます。
— pixiv (@pixiv) 2014, 11月 29
pixivとBOOTH、サービスごとにクレカ情報を保持している…だと…?!
自社で管理するなら、専門の部署を作って一元管理した方がいいと思います。
サービスごとに管理していると、担当者の技量によって思わぬ事故にも繋がりそうです。
後手後手になってしまった事故後の対応
日曜日の夜19時ごろ、BOOTHとAPOLLOが障害から復旧しました。
その時に、障害の原因と保証内容が書かれたページが公開されました。
また、BOOTHの登録者全員に同じ内容が書かれたメールが送られ、それに加えて情報流出の可能性が有った125名には別途保証の詳細メールが送られたそうです。
この2種類のメールを送ってしまったことが問題でした。(しかも1種類につき複数通送られてきていてますますカオスに…)
自分がその125名に入るかどうかがどうもわかりにくかったのです。
「情報が流出していない」ことを確認したかったユーザーにとっては曖昧な案内でした。
たぶん、BOOTHのサポートセンターは問い合わせでパンク状態になってしまったと思います。
後から、情報が流出したかどうかがわかるページが作られましたが、これが最初からあれば…と思いました。
アクセスログにユーザー情報を
こういう事故が有った時のために、アクセスログにユーザーID的な情報を記録しておくともうちょっと細かいレベルで漏洩範囲が絞れたのではないかなと思います。
特に気になった部分は以上です。
個人的に、良かった安心したと思った所は、
原因がキャッシュとセッションクッキー(っぽい?)ことを復旧の段階で公式が語ってくれたことです。
これで、流出の範囲がなんとなく想像できたので安心しました。
結果的に障害対応に追われる形となってしまいましたが、BOOTH運営陣の皆様本当にお疲れ様でした。また、素敵なイベントを開いていただいたAPOLLO運営陣の皆様、ありがとうございました。次のイベントもできるだけ参加したいと思います!