情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Gunosyユーザーの興味関心情報が外部サイト管理者に漏洩する仕組みと想定される悪用例

Gunosy (7) セキュリティ (62) ビッグデータ (1) プライバシー (4) 個人情報 (6)

このブログの記事Gunosyに掲載されたことがきっかけで、Gunosyユーザーの本名フルネームと思われる文字列が、このブログのサーバーログに大量に記録されていることに気が付きました。Gunosyのサービスの特徴から、(非公開設定で使っているGunosyユーザーであっても)その利用者の興味関心に関する情報の一部が、外部サイトの管理者に漏れているとも考えられます。そこで今回は、その仕組みと、それを悪用するプロセスの例について考えてみたので、紹介します。

gunosy-img-access-referrer-log-sample

今回紹介する問題は、以前このブログで指摘し、すぐに修正された非公開アカウントの情報が漏れる問題(Gunosy経由で記事を読むとTwitterアカウントやFacebookアカウントが推測可能な情報がサイト側に提供される仕組みについて)と類似の問題です。前回の指摘で少々改善されていたものの、結局同じようなリスクが発生しているとわかりました。

ただ、危険具合やリスクを紹介しますが、「今すぐ使うのをやめて!」のような話ではなく、程度を考えて、利用を継続するか考える、という程度です。ただ、以前指摘した類似の問題についてはすぐ修正が入ったので、多少なりとも「良くないこと」としてGunosyが扱っていたことは確かです。

ポイント

  • ニュースサイトの管理者に、Gunosyのユーザー名と、記事一覧に表示されたニュースの情報が提供される
  • Gunosyの公開設定が「非公開」でも提供される
  • Gunosyの管理者にではなく、外部サイトの管理者に提供される
  • アクセスについて、Facebookアカウントの特定などにつながる
  • 「IPアドレス→Gunosyアカウント→Facebookアカウント→個人」のようにして、個人とIPアドレスが関連付けられてアクセスログが分析可能に。
  • 個人とIPアドレスが結びつくので、その個人の居住地域や所属団体(企業・大学など)を推定するヒントになる。

今回「非公開のはずなのに漏れた」と考えられる情報が、Gunosyのアルゴリズムで個人の行動を分析した結果の趣味嗜好を表すもの、なので、ビッグデータとプライバシーというキーワードが思い浮かびました。

前提知識

最近は、円谷プロ(ウルトラマン)とコラボしたテレビCMを流したりKDDI株式会社から大型出資を受けたり、海外進出を発表したりと知名度&話題性が急上昇中のGunosyなので、どこかで名前を聞いたことがある人は多いかと。

Gunosyの最低限の仕組みを補足しておくと、Gunosyは、独自のアルゴリズムを活用し、各ユーザーの行動などから興味関心を分析し、それに合わせたニュース記事を配信してくれるサービスのことです(ざっくり)(最近は、それとは関係なくアクセスが多い記事も表示しているそうです)

つまり、「各ユーザーにどのニュースが配信されているか」には、「ユーザー個人の興味関心」が反映されている、というわけです。

私なんかは、WordPressやWEBデザインの記事が沢山配信されてきます。スポーツニュースはほとんど配信されてきません。こんな感じ。

Gunosyの非公開設定

「そういうのが知られたくない!」という人は、自分の記事一覧を非公開に設定できます

非公開設定なら、そのURLへ誰かが勝手にアクセスしても、興味関心が反映されたあなたの記事一覧は表示されません(ちなみに、存在しないユーザーなら404 URL Not Foundと表示されるので、アカウントが存在することの判別が可能です)

gunosy-private-page

GunosyのURLの特徴

さて、そんなGunosyの配信記事は、個人のページで一覧表示されます。

以前の記事でも紹介したように、そのURLは、次のような形式です。

http://gunosy.com/did2memo/2014/05/11/1

ユーザー名を含んだ形式になっています。

この「ユーザー名」は、例えばFacebookでGunosyに登録した場合、自動的にFacebookのユーザー名(URL)が設定されるため、自動的に本名そのものになっている場合があります。こういうわけで、「Gunosyのユーザー名がバレる」が、「Facebookのアカウント名がバレる」になってしまうわけです。

リファラとは

サイトにアクセスすると、IPアドレスやブラウザの種類、どのページ(ファイル)にアクセスしたかとともに、「どのURLからやってきたか」という情報が記録されます。

この情報を「リファラ(Referrer)」と呼びます。

つまり、ページを移動するたびに、「どのページから来たよ」という情報が、移動先のサイトのサーバーに通知・記録されるわけです。

以前指摘したGunosyの問題

以前、このブログで指摘したGunosyの問題は、個人ページから特定のニュースページに飛んだときに、個人ページのURL(アカウント名・本名を含む可能性)がリファラとして、そのニュースサイトに提供されてしまうという問題でした。

これにより、たとえGunosyの個人ページを非公開にしていても、読者がどのサイトを読んでいたのかがバレてしまうというものでした。Gunosyが個人の趣味嗜好を反映するのなら、個人の趣味嗜好の一部が漏れることになりますこのちょっとふわっとした個人に関する情報って、ビッグデータとプライバシー/個人情報みたいな文脈で出てきそうな話です。

詳しくはコチラ:Gunosy経由で記事を読むとTwitterアカウントやFacebookアカウントが推測可能な情報がサイト側に提供される仕組みについて

これは指摘後すぐ修正された

これについては、指摘後すぐに修正され、連絡も来ました。確認してみると、リダイレクトでリファラが引き継がれないようになっていました。

すぐ修正された、というところから、「このような動作が問題である」とGunosy側が認識していた、ということがわかります

実は少し未修正だった

実は、修正連絡が来た後も、少し穴があったのですが、まぁいいか、と思っていました。

しかしせっかくの機会なので指摘しておくと、サイトの記事URLには、Refererを引き継がないタイプのリダイレクトが挟まれるように修正されていたのですが、サイトのドメイン名のリンクには、そもそもリダイレクトが挟まれていませんでした。

なので、サイトのドメイン名をクリックした場合、やはりリファラ情報によって誰がどの「サイト(ページ、ではなくなった)」にアクセスしたかがそのサイト側に提供されていました。

今回のきっかけ:「あれ?またGunosyのURLに本名っぽいのがあるぞ???」

今回の問題は、アクセスログを見ていて、「あれ?またアクセスログに本名っぽいのがあるぞ?」となったのがきっかけです。

それをよく見てみると、【記事のサムネイル画像】へのアクセスについて、リファラにGunosy個人ページURLが残っていました

記録されていたログ

記録されていたログはこんな感じです(今回はそれっぽく生データで載せてみます)。

隠してある部分に、Gunosyのユーザー名が書かれています。そして、それがFacebookアカウント名だったりするので、本名のフルネームが並んでしまっているわけです。

gunosy-img-access-referrer-log-sample

1行が1アクセスに相当し、具体的に1行を抜き出すと、こうなっています。

w.x.y.z - - [12/May/2014:00:00:00 +0900] "GET /wp-content/uploads/2014/05/ilovemusic-ranking-2-300x300.png HTTP/1.0" 200 71601 "http://gunosy.com/myouji.namae/2014/05/11/1" "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0"

このログの形式は、標準的なもので、多くのサイトでこのような形式のログが記録されているはずです。

記録されていた中身はこちら。

  • IPアドレス:w.x.y.z (警察の力がなければ通常個人特定不能・会社や大学は特定できる可能性)
  • アクセス時刻:[12/May/2014:00:00:00 +0900]
  • アクセスしたファイル: /wp-content/uploads/2014/05/ilovemusic-ranking-2-300x300.png (実際は冒頭に http://did2memo.net/ が付くイメージ)
  • リファラ:http://gunosy.com/myouji.namae/2014/05/11/1 通常、ただのアクセス元ページのURLだが、今回はGunosyの個人ページURLで、本名らしきものが

ここで注目すべきは、Gunosyの個人ページURLに、個人が特定できそうなフルネームが残されているという点です

Gunosyのサイトが、直接ニュースサイトの画像のURLを埋め込んでいた

どういうことかと思い、GunosyのページのHTMLをチェックしてみました。その時の画像がコチラ。

gunosy-thumbnail-img-tag-sample

画像左がGunosyの私の個人ページ(http://gunosy.com/did2memo/2014/05/11/1)で、右が、その中身をChrome Developer Toolsで表示したウィンドウです。

これを見ると、Gunosyのページが、私の借りているサーバーに設置している画像ファイルのURLを直接imgタグで埋め込んでいることがわかります。

つまり、

私の記事が表示されたGunosyの個人ページが開かれるたびに、私のブログの設置してあるサーバーから、画像ファイルがダウンロードされ、その都度ログに個人ページのURLが記録されていた

ということになります。

このアクセスが自動的に発生していたために、先ほどのようなアクセスログが次々記録されていたのです

なので、Gunosyを非公開設定にしているアカウントでも、関係なくアクセスログが記録されてしまいます

直接わかること

このような分析から、アクセスログを見たサイト管理者は、直接次のことが分かります。

サイト管理者は、「http://gunosy.com/myouji.namae/2014/05/11/1」に、記事のサムネイル画像が埋め込まれている、つまり、myouji.namaeというユーザーのGunosyに、アクセスされているサムネイル画像を使った記事が表示されているということがわかる。

さて、これは直接わかることなのですが、これだけでは大したことがなさそうな情報から、いろいろなことを推測できます。

もちろん、友達がいないか、ログを友達のfacebookアカウント名で検索して探してみる、なんてこともできるかもしれません。ただ、このログからもっといろいろなことがわかる可能性があります。

Gunosyユーザーに関する情報をたどってみる

さて、先ほど紹介した、Gunosyからのアクセスログ1行から、どんなことがわかるか紹介します。今回アカウント名は「taro.sato.99」は架空としますが、実際に発見できた例です

Gunosyユーザー名を特定

今回は、「http://gunosy.com/taro.sato.99/2014/05/11/1」というURLがアクセスログに残っていたとします。

この時点で、taro.sato.99さんは、私のブログ記事がGunosyに推薦されるような興味関心の持ち主ではないか、と推測できます。

非公開設定か確認

続いて、とりあえず、そのGunosyのURLにアクセスしてみます。すると、PRIVATEと表示され、非公開設定(記事がばれないようにしている)であるとわかりました

つまり、この非公開情報が外部から見られることを拒否したいユーザーだ、ということです。しかし、それに反して外部サイトの管理者から、その一部とはいえ、見えてしまっているのが現状です。

また、このことから、このリファラからアクセスしていれば、おそらくアクセスしているのはアカウントの持ち主本人なのだろう、と推定できます。

※ただ、たしかにtakapon_jp(ホリエモン)など、一部のgunosyのページは大人気でいろいろな人が利用しています。ただ、そういう有名人のgunosyアカウントでなく、しかもアクセスが1人分しかなさそうであれば、アカウントが1アクセスしているのは本人だと考えてよい気がします。

Facebookアカウントを特定

次に、フルネームかつドットを含むことから、Facebook連携でアカウントを作成したと推定して、「http://facebook.com/taro.sato.99」にアクセスしてみます。

すると、Facebookアカウントの特定ができました(taro.sato.99は架空のfacebookに出てこないユーザ名を使っていますが、実際には次々facebookアカウントが出てきます)

もちろん、ただのフルネームだと、同姓同名の人で、あくまでFacebook以外の手段でフルネームのユーザー名が登録されただけという偶然の可能性もありますが、フルネーム+数字とかだと、その確度はだいぶ高いと思われます。

同様にして、もしピリオドではなくアンダースコア(_)だったりすれば、http://twitter.com/taro_sato_99 にアクセスしてみて、Twitterアカウントを特定することもできます(もちろんこちらも偶然の一致や悪意あるなりすましなども否定しきれませんが…)。

おまけ:ページを開いたことの確認

さて、これだけだと、Gunosyに表示されただけ、という情報で、以前の問題のように、どのページを開いたかまではわからない気がします。しかし、そのあたりも実は分析可能です

まず、アクセスログでIPアドレスを確認します。

そして、近い時刻に同じIPアドレスから、gunosyのリダイレクト用URL経由でアクセスが記録されていないかをログ内検索します)。

これでもし、そのようなアクセスが発見できたならば、おそらく、同じ人がページを開いたのだろう、と推定できます。

何が漏れたと考えられるか

まず、非公開設定のGunosyアカウントの個人ページに、特定の記事が表示されていたことが漏れています

また、通常、IPアドレスから個人を特定することはできませんが、IPアドレス→Gunosyアカウント→Facebookアカウント→個人 のように今回はIPアドレスと個人が関連付けられるのがポイントです(FacebookでGunosyアカウントを作成していた場合)。

悪用例:転職サイトの管理人

別のこのプロセスだけだと、あまり「悪用」という感じはしないのですが、「ここまでのプロセスから得られた情報を、サイトの管理人が悪い人だったら、こんな風に使えるかも」という話をします。

たとえば、わかりやすそうな転職のコツ解説サイトだった場合を考えます。

すると、まずFacebookアカウントがわかっているので「あ、この人、○○社に勤めてるのに、転職サイトに興味があるってことは、転職考えてるのかな?」ということが分かります。秘密にしたかった興味関心が、漏れてしまう例です

転職サイトなら、「誰が転職サイトに興味を持っている」という情報を、これまた悪い人材紹介会社(ヘッドハンティング業者)に販売して、その結果、そんな業者が「転職に興味ありませんか?」なんていう連絡に使うことも考えられます。

アクセスが多ければ、そのような本名と興味関心との関連付け情報が大量に入手できることになります(が、実際転職業界でそんなに役に立つのかは知りません。あくまで想像です)。

この例でなくても、「本名でアクセスしてきてくれている」と意識すれば、他にもいろいろなパターンが考えられそうです(公開ユーザー・非公開ユーザー問わず)。現実味があるのかどうかはさっぱりわかりませんが。

原因となるGunosyの特徴

どうしてこうやっていろんなことがわかってしまうのか、その原因となる特徴は、こんなところだと思います。

  • Gunosyが個人ページのURLに、別サービス(Facebook・Twitter)のユーザー名を直接使っていること(←最大の原因)
  • 自分だけが閲覧する目的で非公開に設定できる
  • のだけれど、imgタグで外部サーバーの画像を直接読み込むので、リファラ経由でユーザー名が外部に提供されてしまい、非公開の中身がバレる(ブラウザにもよりそうだけど)
  • その非公開の中身が、ユーザーの興味関心趣味嗜好を分析した結果(個人の情報)

たとえば、imgタグで画像を直接読み込むだけで、URLが全然ユーザー名を含まなければ今回の問題は発生しないし、非公開設定がなければだいぶ状況は違ったかな、っていう気もします。

ユーザーができる対策(追記)

ユーザーができる対策としては、Facebookアカウント名やTwitterアカウント名をコピーして自動設定されていた「Gunosyユーザー名」を、設定画面の「プロフィール>ユーザー情報>ユーザー名」で、無関係なものに変更する対策がありそうです。

ただし、今までの個人ページすべてのURLが変更になるため、Gunosyから過去に送られてきていたメールのリンクなどは使えなくなります(困る人はほとんど居ないと思いますが一応)。

また、対策の効果に関する勘違い回避のために一応書いておきますが、既に外部サイトのサーバーに記録されたログが書き換わるわけではありません。

iPhoneアプリ版Gunosyについてのメモ(追記)

iPhone版GunosyについてWiresharkでパケットキャプチャしてみたところ、ニュースの横に表示される画像は、gunosy.com.images.s3.amazonaws.com から取得されており、コピーがAmazon S3上に設置されていることが分かりました。ちなみにユーザーエージェントは gunosy/4.0.8 CFNetwork/672.1.14 Darwin/14.0.0 でした。

また、記事を開いたときに送信されたリファラは「http://gunosy.com/g/ABCDE」という形式でした。「http://gunosy.com/rd/ABCDE」という形式もログにはあったので、rdがWEB版Gunosyなのかな。

所感

最初に言っておくと、「おいGunosy致命的な欠陥/脆弱性/危険があるぞ!」って自分個人として怒ってる、とかそんなのはそんなになくて、今後もGunosyから送られてくるメールでニュースを見たりするつもりです(ちなみに自分は非公開設定)。

ただ、非公開に設定しているユーザーかなりいるようなので、"今回紹介したようなことが起こらないと信じて使っている非公開設定ユーザーがいるのであれば"、「実は起こるんだよ」と言ってみたくなり、その結果がこの記事です。最初のきかっけは、アクセスログにフルネームがたくさんあるのが気になって仕方なかったから、ですけど。

今回もし修正するのだとしたら、一体どうするんだろう、っていうのが少し気になるところです。

関連

修正対応

修正対応が行われました。その内容についてはこちらから→「修正対応について

コメント(0)

新しいコメントを投稿