M10 - 余計な機能
脅威エージェント
アプリケーション依存
一般的に、攻撃者はバックエンドシステムの隠し機能を発見するためにモバイルアプリ内の余計な機能を理解しようとします。攻撃者は一般的にエンドユーザーが関与することなくシステムから余計な機能を直接的に悪用します。
攻撃手法
悪用難易度 容易
攻撃者は自分のローカル環境内でモバイルアプリをダウンロードして調べます。ログファイル、設定ファイル、おそらくバイナリ自体も調べて、開発者が残した隠しスイッチやテストコードを発見します。これらのスイッチやバックエンドシステムの隠し機能を悪用して攻撃を実行します。
セキュリティ上の弱点
普及度 中 検出難易度 普通
モバイルアプリにインタフェース経由でユーザーに直接公開されていない余計な機能が組み込まれている可能性が高くなります。この追加コードの大半は本質的に無害であり、攻撃者にバックエンドの機能に関する補足的な洞察を与えるものではありません。但し、一部の余計な機能は攻撃者に非常に役に立ちます。バックエンドテスト、デモ、ステージング、UAT 環境に関連する情報を公開する機能は製品ビルドに組み込んではいけません。さらに、管理 API エンドポイントや非公式のエンドポイントは最終製品ビルドに組み込んではいけません。余計な機能を検出することは困難である可能性があります。自動化された静的解析ツールや動的解析ツールは低い位置にぶら下がる果物 (ログステートメント) を拾うことができます。しかし、一部のバックドアは自動化された手段では検出が困難です。したがって、手動のコードレビューによりこれらを検出することが常に最善となります。
技術的影響
影響度 深刻
余計な機能による技術的影響には以下があります。
バックエンドシステムの仕組みを開示する
不正な高特権アクションが実行される
ビジネスへの影響
アプリケーション / ビジネス依存
余計な機能によるビジネスへの影響には以下があります。
機密性の高い機能への不正アクセス
風評被害
知的財産漏洩
'余計な機能' の脆弱性はあるか?
開発者は製品環境にリリースされることを意図しない隠しバックドア機能やその他の内部開発セキュリティコントロールを組み込むことがよくあります。例えば、開発者はハイブリッドアプリのコメントにパスワードをうっかり入れてしまうことがあります。他にはテスト中の2要素認証の無効化があります。
このリスクの特徴は、アプリで有効でありリリースすることを意図していない機能が残存しているということです。
'余計な機能' を防ぐには?
この脆弱性を防ぐ最善の方法はこのコードで最も知識のあるセキュリティ担当者や対象分野の専門家により手動でセキュアコードレビューを行うことです。以下を行うべきです。
隠しスイッチを発見するためにアプリの設定を調べる
すべてのテストコードがアプリの最終製品ビルドに含まれていないことを確認する
モバイルアプリがアクセスするすべての API エンドポイントを調べて、これらのエンドポイントが十分に文書化されており公開されていることを確認する
すべてのログステートメントを調べて、バックエンドについて過度に説明的なものがログに書き込まれていないことを確認する
攻撃シナリオの例
シナリオ #1: 管理エンドポイントの開示:
モバイルエンドポイントのテストの一環として、開発者はモバイルアプリに管理ダッシュボードを表示する隠しインタフェースを組み込みました。このダッシュボードはバックエンド API サーバー経由で管理情報にアクセスします。製品版のコードには、開発者はいつでもダッシュボードを表示するコードを組み込みませんでした。ただし、バックエンド管理 API にアクセスできる基となるコードが組み込まれていました。攻撃者はバイナリの文字列テーブル解析を実行して、管理 REST エンドポイントへのハードコードされた URL を発見しました。その後、攻撃者は 'curl' を使用してバックエンド管理機能を実行しました。
開発者はネイティブインタフェースから直接アクセスできないコードを含む、余計なコードをすべて削除しておく必要があります。
シナリオ #2: 設定ファイルのデバッグフラグ:
攻撃者はローカルアプリの .properties ファイルに手動で追加した "debug=true" を試みます。アプリケーションは起動時に過度に説明的であり攻撃者がバックエンドシステムを理解するのに役立つログファイルを出力しています。その後、攻撃者はログによりバックエンドシステムの脆弱性を発見します。
開発者はモバイルアプリの製品ビルド内では 'デバックモード' を有効にさせないようにする必要があります。
参考資料
OWASP
Last updated