著者:Katanoda, Wada, Sota Sugiyama, Satoki
はじめに
はじめまして。リチェルカセキュリティのKatanoda Takumiです。業務ではWeb脆弱性診断やセキュリティコンサルティングを行っています。
近頃は、QRコード *1 を用いて特定のWebサイトやアプリへユーザーを案内するサービスが広く普及しています。レストランのメニュー閲覧から企業の販促活動まで、私たちの日常生活に深く浸透したQRコードですが、実は思わぬリスクが潜んでいることをご存知でしょうか。
QRコードは、株式会社デンソーウェーブが開発した2次元コードであり、PythonやGoogle Chromeを使って生成できるほか、各種Webサービスでも簡単に作成可能です。一般に、QRコードにはURLが埋め込まれており、そのURLに基づいて目的のWebサイトへ誘導されます。本来は目的のURLを直接埋め込みますが、代わりにリダイレクトするURLを埋め込むことで、後から遷移先を変更することもできます。
本記事では、こうしたリダイレクトを伴うQRコードを悪用した「ランサムQRコード」のリスクについて、実際の事例を交えて解説します。
*1:QRコードは株式会社デンソーウェーブの登録商標です
事例の概要
本記事で取り上げる事例では、QRコードの遷移先を 人質 に取られ、再有効化を条件に料金を請求されるという、ランサムウェアに類似した被害が確認されました。以下に概要を述べます。なお、実際の事例をもとにしていますが、特定を避けるため一般化しています。
弊社と包括的なコンサルティング契約を結ぶA社は、イベント出展に向けてチラシを作成することになりました。作成はデザイナーに外注し、納品物は問題なく受領しています。チラシにはA社公式サイトのURLを埋め込んだQRコードが掲載されており、納品時には正しく遷移することを確認しています。
ところが、すでに印刷されたチラシをイベント主催者に送る段階になって弊社の診断員が改めてQRコードを確認したところ、A社公式サイトではなく以下のようなページが表示されました。
このページには、当該QRコードは現在無効化されており、再有効化には料金の支払いが必要である旨が記載されていました。また、説明文には 時間経過と共に誰でも再取得が可能になる旨 も表示されていました。弊社チームが即座に調査を開始しました。まず、表示されているページのURLを確認したところ、設定していたA社の公式サイトとは全く異なるドメインを指していることが判明しました。 また、念のためA社の公式サイトを検査しましたが、脆弱性や改ざんは確認されませんでした。後述の調査の結果、QRコードに問題があることが判明し、A社は急遽チラシを修正・再印刷する運びとなりました。
当該QRコードは、納品時には正しく動作しており、また静的な情報(URL)を埋め込んだものであるため、通常であれば後から改変されることはありません。それにもかかわらず、なぜこのような 乗っ取り の被害が発生したのでしょうか。本件の原因や攻撃の手法、背景にある仕組みについて、弊社診断員が詳細な調査を実施しました。
原因の調査
1.原因の分析
本件は「チラシのQRコードを読み取るとA社公式サイトではないページが表示される」という事象であり、その一次分析として考えられる原因は以下の2点に集約されます。
-
QRコードに埋め込まれているURLがA社公式サイトと異なる
埋め込まれたURLを確認したところ、A社公式ドメインではなく第三者のドメインを指していたことがわかりました。
-
複数のURLに解釈されうる細工されたQRコードが使用された
QRコードの仕様上、条件次第で異なるURLに解釈させる攻撃手法「気まぐれなQRコード」やQRコード内部に別のQRコードを入れ子にした攻撃手法も存在しますが、本件では意図的に加工された形跡は確認できませんでした。
参考:https://news.yahoo.co.jp/expert/articles/c9457520e065bc619c99d05570b13929f6c95a9a
ここまでの一次分析を踏まえ、なぜ第三者のドメインを指すQRコードがチラシに掲載されたのかを把握するため、A社にヒアリングを実施しました。その結果、A社が外注したデザイナーが利用したWebサービスに原因がある可能性を見出し、追加の調査を進めました。
2.利用したQRコード作成サービスの検証
外注先のデザイナーの利用したサービスは、サインアップ後に以下のようなページでQRコードを作成する形となっていました。
実際に、https://ricsec.co.jp/
を指定したQRコードを作成して読み取ってみると、正しく遷移するため、一見すると問題はないように見えます。しかし、QRコードに埋め込まれているURLを確認すると、実際にはhttps://[第三者のドメイン]/2CBkkR9
となっており、指定したURLとは異なっていることがわかりました。
https://[第三者のドメイン]/2CBkkR9
では、JavaScript(CORS経由)で以下のようなJSON(一部省略)を取得し、それを用いてhttps://ricsec.co.jp/
へリダイレクトしていました。
{
"id": 12345678,
"uid": "2CBkR9",
"name": "QRcode-0001",
"data": {
"url": "https://ricsec.co.jp/",
"status": true
"is_expire": false,
}
}
QRコードを作成したユーザが期待した挙動は以下のシーケンス図になります。
一方、実際のQRコードの挙動は以下の通り複雑怪奇なものとなっていました。一見するとユーザが後から遷移先を変更できる便利な機能に見えますが、これはサービス運営の匙加減で、QRコードの遷移先を勝手に変更される可能性があることを意味します。事実、本事例では14日間の「お試し期間」が秘密裏に設定されており、それを超過するとQRコードが無効化され、料金請求ページへと遷移させられてしまいます。
3.調査結果および本事例の実態
当該QRコード作成サービスは、読み取り時に特定のサイトを経由してリダイレクトすることで、ユーザが指定したURLに遷移します。そして一定期間が経過すると、このリダイレクト先を料金請求ページに変更し、QRコードの再有効化を条件に支払いを求めるというものでした。
QRコード作成ページにはお試し期間に関する注意表示がなく、本事例のように利用者が気づかずに使用してしまうケースが十分に考えられます。また、QRコードは印刷物に掲載されることが多く、差し替えには多大なコストと時間がかかります。加えて、一定期間は正常に動作するため、配布後に被害が発覚することも想定されます。その場合、回収は困難であり、結果として料金を支払ってしまうユーザも多いのではないでしょうか。
このように、QRコードを 人質 にして料金を要求する手口は、まさに「ランサムQRコード」と呼べる悪質なビジネスモデルです。なお、先述のとおりQRコードに埋め込まれているURLはユーザーが指定したものとは異なりますが、QRコードスキャナによっては読み取ったURLを表示せずに即座に遷移してしまうものもあります。加えて、作成時にはリダイレクトにより一見正しく遷移しているように見えるため、ユーザーがこの仕組みに気づくのは困難です。
被害に遭わないために
先の事例では、QRコード作成サービスの仕様を十分に確認せず、不適切なサービスを利用したことが被害の発生を招きました。そのため、QRコードを作成する際には、信頼できるサービスを利用するほか、Chromeの機能やPythonなどを活用することが推奨されます。
さらに、検収側の対策として、QRコードに埋め込まれた情報を生で表示するツールを使って確認することも求められます。iOSの標準搭載のカメラアプリなどでは確認が難しいため、対応しているリーダーアプリを導入する必要があります。手続きが煩雑となるデメリットもありますが、URLクエリを介した攻撃への対策なども見込めます。
本事例は外注先デザイナーの対応に起因しており、サプライチェーン上のリスクが顕在化したケースでもあります。したがって、自社内部にとどまらない包括的なセキュリティ対策が求められます。
おわりに
本記事では、QRコードの遷移先を 人質 に料金を請求されてしまった事例について、調査の経緯を交えて解説しました。QRコードを利用して特定のサイトへ誘導する仕組みは、今や雑誌や広告だけでなく飲食店などでも広く普及しています。誰でも簡単に作成・利用ができる一方で、一部の悪質なQRコード作成サービスによって、思わぬ被害を受けるリスクがあることに注意が必要です。
リチェルカセキュリティでは、セキュリティの専門家によるコンサルティングサービスを提供しています。本事例のように、セキュリティ診断の枠組みでは捉えきれない脅威や、セキュリティポリシーでは見逃されてしまう脅威への包括的な対応も可能です。
特に、企業内で利用されている外部サービスの網羅的な把握とリスク評価は重要な課題となっています。無料で提供されているサービス、利用規約が曖昧なサービス、データの保管場所が不明なサービスなど、一見無害に見えるサービスでも重大なリスクを内包している可能性があります。弊社では、セキュリティポリシーの包括的改善、セキュリティ組織の立ち上げ支援とともに、こうした外部サービスの棚卸しから管理体制の構築、サービス利用ポリシーの策定まで、トータルでサポートいたします。お気軽にお問い合わせください。
No comments:
Post a Comment