noteが投稿者のIPを漏洩してた件でぐだぐだ

誰向けの記事だよこれ

はじめに

内容どっか絶対に間違えてるから俺のために突っ込んでほしい

概要

新進気鋭のコンテンツ共有サービスであるnoteが、登録ユーザの物と推測されるIPアドレスを誰でも閲覧可能な状態で8月中旬頃まで漏洩していたことが分かりました。
公開する必要性がまったくないと思われる情報も公開されていたので"漏洩"という書き方をしました。

note公式によるこの件に関する声明は以下になります。
note.jp
note.jp

発生条件

  • noteアカウントを所持している
  • 記事を2個以上投稿したことがある

(記事を2個投稿して、そのうち1個を削除した場合はどうなるんだろうか)

どのように漏洩していたのか

noteはjavascriptフレームワークであるnuxtを利用して記述されており、
bodyタグの末尾にnuxtが自動生成したscriptタグが挿入されています。
そして、上記scriptタグ内に投稿者の情報と思われる文字列が記述されています。
(ちなみにこの自動生成部分を見た目削除することは可能なはずです)

当該情報中に記述されている中にIPアドレスが含まれており、
note公式の声明により記事投稿者のIPアドレスであることが判明しています。
https://note.jp/n/n3e6451c9b147

IPアドレスのあれこれ

IPアドレス"のみ"で個人を特定することはできるのか

"個人"というのが例えば名前だったり住所だったりするならば、note公式が言及しているように一般的には不可能です。

一般的にはない状況ですが、公開サーバのIPアドレスであれば可能な場合があります。
そのIPアドレスDNSのPTRレコードが登録されていて、かつそのDNSサーバから逆引きが可能ならばホスト名が取得できます。
そのホスト名を登録する際に代行サービスを利用しなかった等の理由がある場合、
whoisから名前や住所等の個人情報が取得できる可能性があります。

また、いわゆる開示請求によりIPアドレスから個人情報を取得することができますが、
基本的には何らかの過失を働いたユーザの契約先ISPに請求し、ISPがかなり慎重な判断を以て開示するものなので、
単に漏洩されたIPアドレスからみだりに個人情報を取得することはできません。

IPアドレスから個人を特定することはできるのか

状況によっては可能です。
主にIPアドレスを状況証拠の一因として扱う場合です。

あくまでも状況証拠なので、100%特定というわけにはいかないかと思います。
あるコミュニティ上ではユーザの少ないレアなプロバイダ(地方CATV等)を利用しているのがその人しかいない、
ということになればそれは紐づいたと言えるでしょう。
どのような状況においても、個人の特定においてIPアドレスというのはプラスアルファの要素であると考えています。

IPアドレスが被るのは約43億分の1」

ヤフコメ等で散見されましたが大きな誤りです。
おそらくIPv4上の考え得るIPの個数 2^32 個を以てそのように捉えたのでしょうが、間違いです。

まず、一般ユーザはISPと契約することでアクセスポイントが利用でき、初めてインターネットに接続することができます。
ここで、通信というのは現実の郵便のように「宛先」が必要です。
何らかの情報を通信するのに必要ですし、それを受け取る際に相手が返信する際にも宛先が必要です。
その宛先となるのがIPアドレスです。

正直なところ、ネットワークの解説に"郵便"を用いるのは不適切と言えるかもしれません。
なぜかというと、現実の住所は一意に定まるのに対し、
現代のインターネットでは複数の人が同一の宛先を割り振られる可能性があるからです。
これをIPアドレス被りと呼んでいるはずです。

なぜ複数の人が同一の宛先を割り振られることがあるのかというと、大前提となる大きな問題としてIPが枯渇してしまうというものがあります。
もはや新規にIPを割り振ることは不可能であるという状況で、今あるIPを有効的に利用しようという流れになりました。
ある1つのIPアドレスを複数人で利用するための技術として、特にNATやNATPが挙げられます。

さて、ISPはどの程度の個数のIPアドレスを保持しているのでしょうか。
また、他のISPが所持しているIPアドレスとどのように被らないようにしているのでしょうか。
簡単に言えば、ISPごとに「1番から10番までは俺のIPアドレスな」と国際的に縄張りを決めて、上記の課題を解決しています。
上記の場合、このISPは10個のIPアドレスを所持していることになり、NAT等を利用することで実際のユーザ数を数百人数千人とすることができます。

もっと踏み込んでいうなら、ルーティングプロトコルBGPのAS単位で大きくIPアドレスを包括しています。
例として、ソフバン光(AS17676)なら 126.0.0.0/8 等がソフバン光から一般ユーザに割り振られるIPアドレスです。
https://awebanalysis.com/ja/ipv4-as-number-directory/17676/
みたいなサイトで確認できます。

以上により、他社ISPIPアドレスが割り振られるということは基本的にないということになります。
更に、1つのIPアドレスを複数人で利用しているということを考えると、IPアドレス被りはISP単位で起きる、という結論になります。

よって、自分のIPアドレスが被る確率は 契約しているISPが所持しているIPアドレスの個数分の1 になり、
冒頭の"約43億分の1"からかなり増大したことが分かります。
ISPによっては住んでいる地方等でIPアドレスの塊を割り振っていることがあり、その場合は更に被る確率は高くなります。

IPアドレスは変動する」

これは状況によって変わるとしか言いようがないです。

例として、前述(「IPアドレスが被るのは約43億分の1」の項)のNATですが、これを利用することによるトレードオフが存在します。
ロギング等を工夫しなければ、ISPがユーザ個人を特定することがより困難になるのです。
そのため、ほぼ変動がなく半固定の状態で割り振ってるというISPも存在しています。

今やスマホユーザの方が多いくらいになりましたし、
スマホのIPがかなり高い頻度で切り替わるのでIPアドレスは変動するものという認識が強くなっているのでしょう。
公開サーバに割り振るのは固定IPの方が取り回しが楽だったりもしますし、一概には言えない、という認識です。

固定IPアドレスを割り振っているISPの場合、
ユーザがモデムの再起動をしても変更できないことが多いんじゃないかと思います。
もし抜け道を見つけて変更できたとしても、即座に抜け道が潰されているのではと。

IPアドレスは個人情報なのか?

note公式は個人情報として名前や住所を挙げてましたが、IPアドレスは個人情報なのでしょうか?

これは国によって解釈が分かれるため、日本国の解釈として以下の記事に丸投げします。
https://news.yahoo.co.jp/byline/kusunokimasanori/20200815-00193383/
読み間違ってたら申し訳ないのですが、今回のnoteのケースだと"投稿者によっては"個人情報に該当するのではと思います。

ちなみに、GAFAMは全社においてIPアドレスを個人情報として認識しています。
批判の多いことで有名なGDPRでもIPアドレスは個人情報として定義されています。

note公式が流出したIPアドレスを棚に上げて「名前や住所には結びつかないからセーフだよ!」と喧伝しているのは不可解で仕方ないです。
わざわざこんな一文を入れる必要あるのか、何か別の意図があるのかと思ってしまいます。
こんな企業体質でいるならずっと非上場でいてほしい。

わからん

あんまソース読み解いてないんだけどフロントに出力されてたこの辺のクレカ情報は何?
ユーザ登録するとマジでカード番号とセキュリティコード出力されるの?

user: {
    current: i,
    creditcard: {
        no: a,
        cvc: a,
        expiryMonth: a,
        expiryYear: a,
        name: a
    },
    errored: a
},

雑感

俺ネットワークと法律の話よくわかんねーんだけど
フロントエンドにゴミ出力しまくってんの生理的に受け付けないんだわ