気を付けろ!QRコードに脆弱性? その深刻さと騙されないための対策
この記事およびNHKでの2018年6月23日(土)午後6時のニュース映像の通りなのですが、開発者本人から説明し、その深刻さとどのように悪用されるのか、さらにQRコードを利用している一般の人がとるべき対策について解説します。
【7月3日付記】上記のNHK記事はすでに消去されています。ここにもNHK記事の概要があります。
一言でいうと、まったく同一のQRコードで、AというURL(ウエッブサイト)に飛ぶ時もあれば、BというURLに飛ぶ時もあるという、いわば「気まぐれなQRコード」を開発したということです。それぞれのURLに飛んでいく確率を制御することができます。このQRコードをここでは「偽装QRコード」と呼ぶことにします。これを悪用すれば、通常は正常なサイトに飛んでいくのですが、何百回、何千回に1回は、悪性サイト、たとえばその正常なサイトを模したフィッシングサイトに飛ばされて詐欺に遭うことになるのです。そのような面倒なことをすることなく、最初からフィッシングサイトに飛んでいくQRコードを作り、それを配布すれば良いではないかと思われるかもしれません。それでは配布してもすぐに発見されてしまいます。特に不特定多数に告知するウェッブ等に張り付ける際は顕著です。この偽装QRコードを使えば、最初に配布された偽装QRコードを注意深く調べた、つまり正常なサイトに飛んでいくか否かを逐次調べたとしても、まったく気付かれることはありません。何百回、何千回も使っていると、突然、悪性サイトに飛ばされるのです。多数の人に利用させることができれば効果はてきめんです。もし悪性サイトに飛ばされ、再度、チェックしても再現性はなく、今度は正常なサイトに飛ぶことに確認することができません。
この偽装QRコードを作成できることの深刻さについて説明します。まず、すでに利用されている(張り付けられている)QRコードについて、そのQRコードと同一のQRコードで、他のURLに飛ばすことは、改ざんされたデコーダー(QRコード認識アプリ)を配布しない限り当然不可能です。この偽装QRコードが深刻な脆弱性に結び付くのは、新たなQRコードを配布する場合です。例えば、新規サイトに誘導するQRコードを作成する場合、QRコードを作ることができるシステム開発会社に依頼するか、もしくはフリーのQRコード作成プログラム、さらにQRコード作成サイトを利用して作成します。このとき、依頼したシステム開発会社やQRコード作成サイト等に悪意があったり、不正アクセス等を受けて、QRコード作成プログラムが改ざんされている場合、上述の偽装QRコードが作成されてしまいます。その偽装QRコードを配布した場合、当初は問題なく正常なサイトに誘導され、時間が経ってから、悪意のある別なサイトに誘導されてしまうことになるのです。これはほとんど再現性がないため、チェックを行っても発見が難しく、対策を取ることを遅らすことが可能です。特にその悪意のある別なサイトが、識別が難しいフィッシングサイト(正常なサイトににして作られ、詐欺をはたらくサイト)であれば、さらに発見が困難で、被害を広げることになります。
現在開発中であり、詳細をここで報告することはできませんが、例えば以下のQRコードは、ほとんどの場合は正常なサイト(神戸大学での私の研究室のサイト)に誘導しますが、確率1/5~1/10で悪性サイトを模したサイト(研究室で用意した無害なサイト)に誘導されます。ただし初期バージョンのプロトタイプなので、QRコードアプリ(ソフト)によっては、その確率はかなり変動します。任意のURLで、任意の悪性サイトに誘導する技術と、この確率の制御をQRコードアプリの認識アルゴリズムに依存することなく、正確に行う技術を開発し、それに成功しています。
では、一般の人がとるべき対策ですが、QRコード認識アプリでURLを読み込む際には、必ず認識したURLを確認してから、そのURLを表示させるということです。QRコード認識アプリによっては、QRコードを撮影すると、自動的にそのサイトを表示するものがあります。それは非常に危険です。かならず、QRコードを撮影した場合、QRコード認識アプリが読み取ったURLを、目で見て確認するべきです。
これは偽装QRコードへの対策に限ったわけではありません。QRコードの最大の欠点は人間が理解できないことです。つまりQRコードにどのような情報が格納されているか、目で見てもわからず、QRコード認識アプリやソフトを使わなければならないということです。このことが最大の脆弱性につながっています。