モバイルアプリでOTPをバイパスする方法:成功したVAPTシナリオ

はじめに

Resecurityは、Fortune 100の大企業から、本番公開前にサイバーセキュリティ統制をテストしたい新興スタートアップまで、規模やプロファイルの異なる顧客に対して数百件のVAPT(脆弱性評価およびペネトレーションテスト)を実施してきました。興味深いことに、企業の成熟度にかかわらず、特にアプリケーションが第三者によって開発されている場合、APIや認可に関連する問題が多くのケースで特定されました。

本ホワイトペーパーでは、テストが成功した結果として特定された最も一般的な問題について説明します。すなわち、当社の専門家が重大な脆弱性を特定し、それらを緩和するための道筋を推奨することで、現実の攻撃がこれらの脆弱性を悪用し、企業がデータ侵害や顧客データの漏えいを被る可能性のある損害を防ぐことを目的としています。

これらの脆弱性は、多数の顧客に提供されている多くのモバイルアプリおよびSaaSベースのアプリケーションで確認されています。適時に修正しない場合、特にフィンテック分野では重大なリスクにつながり得ます。攻撃者がこの種の欠陥を不正取引に悪用し、MFAを回避して顧客アカウントを自己利益のために利用する可能性があるためです。 

MFAとは?

多要素認証(MFA)または二要素認証(2FA)とは、システムに認証するために、ユーザーが複数種類の証拠を提示することを求められる仕組みです。証拠(要素)には5種類があり、これらの任意の組み合わせを使用できますが、実務上、Webアプリケーションで一般的なのは最初の3種類のみです。

なお、同一の認証要素を複数回要求すること(例:パスワードとPINの両方が必要など)はMFAには該当せず、追加のセキュリティ効果も最小限です。使用する要素は互いに独立しているべきであり、同一の攻撃で同時に侵害されないものである必要があります。以下のセクションでは、さまざまなMFAの欠点や弱点について述べますが、多くの場合、これらは標的型攻撃に対してのみ関連します。

OTPとは?

ワンタイムパスワード(OTP)トークンは所持要素に基づく認証の一形態で、認証のために常に変化する数値コードの提出がユーザーに求められます。最も一般的なのは時間ベースのワンタイムパスワード(TOTP)トークンで、ハードウェア型とソフトウェア型の両方があります。

ハードウェアトークンのより安価で簡単な代替手段は、ソフトウェアを用いて時間ベースのワンタイムパスワード(TOTP)コードを生成することです。通常、ユーザーは携帯電話にTOTPアプリをインストールし、Webアプリケーションが提供するQRコードをスキャンして初期シードを取得します。認証アプリは、その後ハードウェアトークンと同様に、60秒ごとに6桁の数字を生成します。

多くのWebサイトは標準化されたTOTPトークンを使用しており、ユーザーはTOTPをサポートする任意の認証アプリをインストールできます。しかし、一部のアプリケーションは独自の派生方式を使用しており、サービス利用のために特定のアプリのインストールをユーザーに要求します。これは標準ベースのアプローチを優先し、避けるべきです。

SMSメッセージや電話通話も、追加要素としてユーザーが提出しなければならない単回使用コードを提供するために使用できます。これらの方法がもたらすリスクのため、個人を特定できる情報(PII)を保持するアプリケーションや、金銭的リスクがある場合には使用すべきではありません。例:医療や銀行。NIST SP 800-63は、PIIを含むアプリケーションに対してこれらの要素を認めていません。

メール認証では、ユーザーがコードを入力するか、メールアドレスに送信されたリンクをクリックする必要があります。メールがMFAの一形態に当たるかどうかについては議論があります。ユーザーがメールアカウントにMFAを設定していない場合、単にユーザーのメールパスワード(多くの場合アプリケーションのパスワードと同一)を知っていることが要件になるだけだからです。

また、常に変化する数値コードを生成し、認証時に提出しなければならないハードウェアOTPトークンもあります。最もよく知られているのはRSA SecureIDで、60秒ごとに変化する6桁の数字を生成します。実装によってはバックエンドサーバーが必要であり、新たな脆弱性や単一障害点を招く可能性もあります。

OTPを利用している業種

OTPバイパスの脆弱性

OTPバイパス脆弱性の主な根本原因は何でしょうか?

1. クライアント側の判断への盲目的な信頼

多くのアプリはクライアント(モバイル端末)を信頼できるものとして扱います。サーバーが「OTP検証に失敗しました」のような応答を返すと、アプリはそれをそのまま受け入れます。攻撃者はこれを悪用し、応答を傍受して「OTPの検証に成功しました」へ改ざんし、アプリが盲目的に従うことでセキュリティを回避します。

2. ステートレス、または弱いセッション追跡

一部のシステムは、OTP検証が本当に完了したかどうかの記録を保持しません。OTPを送信した後、サーバーはコンテキストを忘れてしまいます。サーバーがOTP手順が正当に完了したかを二重確認しないため、攻撃者は検証を完全にスキップできます。

3. 応答の完全性チェックの欠如

サーバーからの応答には、デジタル署名や改ざん防止が欠けていることがよくあります。データが真正であることを証明する暗号学的な封印がないため、攻撃者は応答を自由に編集(例:「false」「true」に変更)できます。

以下では、Resecurityが、OTPバイパスの悪用を成功に導く最も一般的な攻撃ベクトルを概説します:

1- パスワードリセットにおけるOTPバイパス

Image

手法の説明

攻撃者はパスワードリセット時に無効なOTPを送信し、その後、次のいずれかを操作します:

  1. 応答success: falsetrueに変更)、または
  2. リクエスト(OTPパラメータ自体を完全に削除)。

悪用される主要な欠陥

  • クライアント側での強制:アプリが、サーバーでの再確認なしに改ざんされた応答を信頼する。
  • 任意のOTPフィールド:OTPが欠落したリクエストをサーバーが拒否しない。

影響

  • OTPにアクセスできなくてもパスワードを完全にリセット可能。
  • 即時のアカウント侵害。

手順

1- OTPリクエストをトリガー

アプリを開く → 「パスワードを忘れた」 → 被害者のメールを入力 → Burpでリクエストをキャプチャ:

Image

2- 無効なOTP(例:1111)を送信 → Burpでキャプチャ:

Image

3- リクエストを変更してこの応答を取得し、その後応答を編集する

Image

4- 応答の改ざん:trueをfalseに変更し、エラーメッセージを削除

サーバー応答を変更

応答が表示されるまでリクエストを転送します:

{“success”:false}

{“success”:true}

右クリック → 「Do Intercept」 → 「Response to this request」 → 改ざんした応答を転送

Image

5- バイパスを確認

新しいパスワードの設定に進むと、
サーバーは改ざんされた応答を受け入れ、パスワード変更を許可します

Image

6- 新しいパスワードを入力

Image

7- アプリが有効なOTPなしでパスワードリセットを許可するようになったことを確認する。

新しいパスワードでログイン 新しいパスワードを使用してログインします。 アカウントへの完全なアクセスが付与されます

Image

2- アカウント検証におけるOTPバイパス

Image

手法の説明

攻撃者はメール/電話の検証中にサーバーの応答を傍受し、結果をverified: falseからverified: trueへ改ざんします。これはアプリがクライアント側の検証に依存していることを悪用し、有効なOTPを提出せずにアカウント検証を可能にします。

悪用される主要な欠陥

  • ステートレスな検証:応答後にサーバーがOTPステータスを再確認しない。
  • 署名のない応答:暗号学的署名がないため改ざんが可能。

影響

  • 偽の検証により不正が可能(例:不正取引、偽プロフィール)
  • 機微な機能が不正アクセスにさらされる

1- メール検証をトリガー 

  • メールを検証 → リクエストをキャプチャ:
Image

2- サーバーの応答を傍受する。

Image
Image

3- falsetrueに変更し、エラーメッセージを削除する。

Image

4- アプリは有効なOTPなしでメールを検証済みとしてマークする。

Image

他に何をテストすべきか?

OTPバイパス脆弱性の主な根本原因は何でしょうか? 本ホワイトペーパーで説明した手法は、OTPバイパスにつながり得る脅威や攻撃ベクトルの非常に広いスペクトラムの一部にすぎません。 

Resecurityは、OWASP Web Application Security Testing(WSTG)に従って、以下のフェーズを含む詳細な評価を実施することを推奨します:

4.1 情報収集
4.2 設定およびデプロイメント管理テスト
4.3 アイデンティティ管理テスト
4.4 認証テスト
4.5 認可テスト
4.6 セッション管理テスト
4.7 入力検証テスト
4.8 エラーハンドリングのテスト
4.9 脆弱な暗号のテスト
4.10 ビジネスロジックテスト
4.11 クライアント側テスト
4.12 APIテスト

当社の専門家は以下の業界認定資格を保有しており、Fortune 500の主要企業および政府機関との成功実績を豊富に有しています:

  • CISSP
    (Certified Information Systems Security Professional)
  • CEH
    (Certified Ethical Hacker)
  • CISA
    (Certified Information Systems Auditor)
  • GIAC
    GCIH(Certified Incident Handler)
  • Offensive
    Security Certified Professional(OSCP)
  • GIAC
    Web Application Penetration Tester(GWAPT)
  • eLearnSecurity
    Certified Penetration Tester eXtreme(eCPTX)
  • eLearnSecurity
    Web Application Penetration Tester Extreme(eWPTXv2)
  • eLearnSecurity
    Certified Professional Penetration Tester(eCPPTv2)
  • Attify
    Certified IoT Security Pentester(ACIP)
  • eLearnSecurity
    Mobile Application Penetration Tester(eMAPT)
  • Certified
    Red Team Professional(CRTP)
  • CREST
    Registered Penetration Tester(CRT)
  • CREST
    Practitioner Security Analyst(CPSA)

[email protected]まで、いつでもお気軽にお問い合わせください。当社の専門家が、Webアプリケーションセキュリティ、モバイルアプリテスト、APIテストについて喜んでご支援いたします。ResecurityによるVAPT(脆弱性評価およびペネトレーションテスト)サービスの詳細については、こちらのページをご覧ください。

翻訳元: https://www.resecurity.com/blog/article/methods-to-bypass-otp-in-mobile-apps-successful-vapt-scenarios

ソース: resecurity.com