純真なユーザーに悪質なWebサイトのリンクをクリックさせる犯行手段は、数えきれないほどある。それらの一部は技術的で、ほかは心理作戦的だ。しかしこの記事でご紹介する手口は、ブラウザーの、あまり知られていない機能を利用(悪用)するという意味で、興味深い。
Webサイトの名前に、英語のアルファベット以外の文字が使われていることがある。ロシアのWebサイトならキリル文字を使いたいし、日本のサイトは漢字を使いたいだろう。今は、テキストを表示するための世界的なスタンダードとしてUnicodeがあるから、ほとんどの言語をサポートできる。
でも残念ながらURIは、すべてのUnicode文字を使える、という状況ではない。ASCII文字しか使えないシステムも、まだ世の中にはある〔DNSなど〕。そこで考えられたのが、“punycode”(ピュニコード)と呼ばれる方式だ。これによって、国際的な文字をASCII文字だけで指定できる。URIがピュニコードを使っていることは、その文字列の冒頭に“xn--”があることで分かる。
その処理が、ユーザーに知らされることはない。“JP納豆.例.jp”が“xn--jp-cd2fp15c.xn--fsq.jp”というピュニコードに変換されて送られてきても、ブラウザーはそれらを元の文字に戻してから表示する。だからこれは、ほとんどのユーザーが知らないシステムだ。
ピュニコードのこのような透明性、それを使っていてもユーザーには知らされない、という特性が、フィッシング犯罪に利用される。犯人はピュニコードを使ってURIを作るが、ユーザーは実際にそんな文字のサイトがある、と思う(実は別の文字だ)。Pedro UmbolinoがHackadayで、そのやり方を示しているが、確かにそれは、ぼくでも騙されてしまうだろう。
FirefoxやChromeなどいくつかのブラウザーは、下図の最初のパラグラフのリンクをapple.comのように見えるように、インラインでもリンクのプレビューでも表示する。しかしそれをクリックすると、Appleのサイトapple.comへは行かない。犯人たちが仕掛けた罠へ、行ってしまう。
そのパラグラフの後の方に書いてあるし、ブラウザーの設定を変えても分かるが、apple.comのように見える文字はxn--80ak6aa92eというピュニコードをブラウザーが変換した文字なのだ。
ブラウザーはapple.comに見える文字に変換して表示したが、このURIをモノタイプフォントのどれかで表示すると、小文字の”L”に見える文字が実はキリル語の文字であることが分かる:
やられた、ね。ハッカーがメールなどの中でこんなリンクを使っていると、疑わしいリンクに対して日ごろから用心深い人でも、クリックしてしまうかもしれない。別の問題としては、Umbolinoが示しているように、その偽サイトは本物のサイトのHTTPSステータスを模倣していて、URIの横にグリーンの鍵が表示され、ユーザーを安心させるだろう。
じゃあどうすればよいのか?
今のところFirefoxとChromeだけの問題だから、両ブラウザーがピュニコードのデフォルトの表示方法を変えるべきだ。でも最新のChrome 58は、リンクURLのプレビューでピュニコードそのものを表示する。Firefoxにも、そうさせる設定がある。about:confighへ行って“punycode”で検索し、出てくる設定項目〔network.IDN_show_punycode〕の値をfalseからtrueに変える。そうするとピュニコードそのものが表示されるようになる。でも、そのほとんどはまともなURIだ。ただし、アヤシイと思える状況では、用心しよう。
インターネットは毎日々々が勉強だね。そう、ときにはね。