QRコードは、ユーザーに素早く情報にアクセスするための手段を提供する優れたツールである。しかし、その便利さを逆手に取って悪事を働こうと狙っている攻撃者もいる。サイバーセキュリティに関する情報サイトのeSecurity Planetはこのほど、「QR Codes: A Growing Security Problem|eSecurityPlanet」において、QRコードに潜むセキュリティリスクについて警告した。

QRコードは、異なる2色(通常は白と黒)のピクセルの組み合わせによって0と1を表現することで、内部にさまざまな情報を埋め込むことができる。埋め込める情報の容量はバージョンや誤り訂正レベルによって異なるが、バージョン40で誤り訂正レベルが最低(L)の場合、バイナリデータで最大2953バイト、かな・漢字を含むShift-JISの文字列で最大最大1817文字となっている。

例えば、次の画像はマイナビニュースのTECH+のURL(https://news.mynavi.jp/techplus/)を埋め込んだQRコードの例である。

  • TECH+のURLを埋め込んだQRコードの例

    TECH+のURLを埋め込んだQRコードの例

このコードをスマートフォンのカメラアプリで読み込めば、ブラウザで埋め込まれたURLにアクセスすることができる。ユーザーがURLを閲覧するための情報だけでなく、電子決済や会場への入場パス、飛行機の電子チケット、多要素認証のための認証コードといった用途にも広く利用されている。

eSecurity Planetは、このQRコードを悪用した典型的な攻撃として、特に次の2つを挙げている。

  • 偽造コード
  • QRLハイジャック

偽造コードは、正規のWebサイトのように見せかけた偽のWebサイトに誘導するQRコードを作成して配布する手法である。QRコードは人間が読み取ることは困難な上、カメラアプリで読み取ると自動的に埋め込まれたURLにアクセスするため、フィッシングキャンペーンなどに悪用されるケースがあるという。

QRL(QRログイン)は、名前とパスワードを入力する代わりにQRコードを読み取らせることでログインを行う認証方式。通常はログインする度に新しいQRコードを生成するが、攻撃者はさまざまな手法を用いてQRコードを盗み出し、認証済みセッションの奪取を試みる。

その他、悪意のあるペイロードをQRコードにエンコードしてユーザーに読み取らせることでマルウェアを実行したり、不正な形式のQRコードを生成してXSS(クロスサイトスクリプティング)やSQLインジェクションといった攻撃を行ったりすることが可能と指摘されている。

eSecurity Planetは、このような攻撃を防止するために、従来のフィッシング防止に加えてセキュリティ意識の中にQRコードを含める必要があると指摘している。加えて、信頼できる情報ソースによるもの以外のコードを共有しないことや、アクセスするURLをよく確認すること、QRコードからアプリをダウンロードしないことといった注意事項が挙げられている。開発者に対しては、認証処理には動的QRコードを使うなど、セキュリティを考慮した適切な実装を行うことを呼びかけている。