twitterにどうぞ。この広告は、90日以上更新していないブログに表示しています。先日、非常に珍しい、GPSつかったチャットの脆弱性を発見したので、ここに注意もかねて書いておく。簡単に言うと、WebSocketに生で自分でGPS座標を送り、相手との距離差を何度でも取得できる脆弱性で、離れてる、近いくらいしか分からないことを前提にGPS使用を許可してる時に〜町にいる、とわかってしまうという、聞いたことない感じの珍しい脆弱性である。websocketでイベント駆動にしてるとついうっかりステート管理があやふやになりがちである。下記は脆弱性の存在したchatpad.jpのサポートに送ったメールである。GPSを使用した機能に関する脆弱性について初めまして。いつも楽しくChatPad使わせて頂いております。件名の通り、GPSに関する脆弱性を発見しました。これは相手の住所が相手の意図に反し高精度(最大で市町村程度まで)特定できてしまうというもので、重大だと思われます。相手との距離が表示される機能があることに気がつきました。自分の居場所に関わらず相手の住所を高精度で特定できる手法があることに気づきました。具体的な手法サーバーに複数回フェイクのGPS座標を送りつけ、得た距離から逆算し、住所を得ます。多くの場合2回、最大で3回座標を送るだけで相手のGPS座標が特定できます。大西洋から同距離の円周上に相手の位置があることがわかります。z全て、すなわち相手の座標を手に入れることが出来ます。実証コードは下記です。直接的な対策は、同じルームに対して1度しか距離を返さないようサーバーのコードを修正することです。これによって、近くにいない人が相手の居場所を手探りに特定することが困難になります。一つ間接的な対策は、相手との距離が一定以下の場合にサーバー側でランダムに15km〜30km程度の誤差をもたせることです。近所同士であっても相手の居場所が詳しく伝わりすぎることがなくなります。Injectionなどの脆弱性と違いシステムにダメージを与えるものではありません。XSSとも違い位置情報を得る以上のことはできません。表示がkm単位であるため家が特定されるといったこともおそらくありません。対応よろしくお願いします。修正され、1度しか距離が送られないようになった。(2013年3月8日夜頃)id:qnighyが距離から位置を計算するエレガントな手法を教えてくれた。doの見分け方と使い方についてなどArchiveはてなブログをはじめよう!javascripterさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。