日経コンピュータ編集 記者 浅川 直輝

 今まで漠然と安全と信じていたものが、実は思ったほど安全ではなかった、という事実に直面すると、人は軽い虚脱感を覚えるようだ。相次ぐオンラインバンキング詐欺の手口を取材し、私はそんな感覚を何度も感じた。SSL通信、乱数表、ワンタイムパスワード…オンラインバンキングを支えるセキュリティ技術は、意外なほど脆弱だった。世界で頻発するオンラインバンキング詐欺の実態と、金融機関の対抗策を考えてみたい(関連記事:【動かないコンピュータ】[世界の金融機関]国内3銀行で不正送金420万円、欧米では2000億円の被害)。

 「SSL通信だから安全、と考えるのは危険です」。あるセキュリティベンダーへの取材で、HTTPSスキームによるSSL暗号通信の弱点について解説を受けたとき、私は自己嫌悪にも近い感覚に襲われた。「当サイトは、SSL通信を利用しているので安心です」といった売り文句を、大した根拠もなく盲信していた自分が恥ずかしかったからだ。

 2012年10月から11月にかけ、ネットバンキング利用者のブラウザーに偽のポップアップ画面を表示させて、乱数表などの認証情報をだまし取り、不正送金に利用する事件が国内で多発した。これは「Webインジェクション」と呼ばれる手口を応用したもので、利用者のPCに感染したウイルスが、銀行のサイトからブラウザーに送られたHTMLを改ざんし、不正なスクリプトを挿入したのだ。

 私が技術者の話を聞いて驚いたのは、SSL通信であっても、通常の通信と同じくらい簡単にWebインジェクションができてしまう、という点だ。

 バンキングサイトの認証画面では一般的に、URLが「https://…」となり、アドレスバーには錠前マークが表示される。通信がSSLプロトコルで暗号化されていることを示したものだ。私はこの表示は、ブラウザーが何らかの方法でセキュリティを保証している証拠で、「受信したデータは、改ざんの余地無く、確実に画面に表示されている」と思っていた。

SSL通信下でもデータの改ざんは起こる

 だが実際には、ブラウザーはSSL通信下でも、OSのAPIやブラウザー自身のプラグイン機能を通じ、受信したHTMLデータを他のプロセスとやりとりしている。ということは、このプロセスをウイルスが横取り(フック)すれば、通信データを容易に改ざんできてしまう。「Internet Explorerにおける『Browser Helper Object』などプラグイン機能を実現するインタフェース、ブラウザー専用のDLL、WindowsのAPIなどを乗っ取ることで、容易に通信を改ざんできる」(前述の技術者)。今回のウイルスも、こうした手段でHTMLに不正なスクリプトを挿入したと思われる。

 現状では、こうしたWebインジェクションを防ぎきるブラウザーを開発するのは難しいという。米グーグルで同社製Webブラウザー「Chrome」のセキュリティを担当するイアン・フェッティ シニアプロダクトマネージャーは、「PCにウイルスが侵入した後では、Webブラウザーでできる防護策はほとんどない」と語る。

 これと同じような虚脱感を、ワンタイムパスワードなどの追加認証を無効化させる「MITB(Man in the browser)攻撃」を知ったときにも感じた。ワンタイムパスワードは、第三者には絶対に知り得ない1回切りのパスワードを使う。そのため、パスワードを生成するシード値が盗まれるなどしない限り破るのは難しい、と私は以前安易に考えていた。