1000本以上のAndroidアプリが認証情報を無防備な状態で保存、Comparitechが調査:認証情報やWebフックを平文でハードコード
人気のAndroidアプリケーション2500本について機密認証情報の扱いをComparitech.comの研究者が調べたところ、1057本では少なくとも1つの機密認証情報が無防備な状態で保存されていることが明らかになった。
「Google Playストア」で提供されている人気アプリケーション2500本のうち1057本では、少なくとも1つの機密認証情報(アクセストークンやパスワードなど)が無防備な状態で保存されていた。比較サイトComparitech.comが2021年4月19日(現地時間)、同社の研究者の調査結果として明らかにした。
「認証情報」は、エンドユーザーがアプリケーションやWebサイトにログインする際に必要な電子メールアドレスやパスワードといった情報と思われがちだ。だが、アプリケーション自体がファーストパーティーやサードパーティーのサーバ、API、その他のエンドポイントへの接続認証に使用するパスワードやトークンなども認証情報に含まれる。
Comparitech.comの研究者は、多くのアプリケーションが認証情報やWebフック(トリガーの対象となったときにアプリケーションから送信される自動メッセージ)を平文でハードコードしていることを発見した。このため、ユーザーはもちろん、同じ端末にインストールされている他のアプリケーションから簡単にアクセスできてしまう。研究者はオープンソースツールの「APKLeaks」と「Quark Engine」を使って、Google Playストアの人気アプリケーション2500本について、機密情報の保存方法を分析した。
分析対象のアプリケーションが無防備な状態で保存していた認証情報には、次のようなものがあった。
- Amazon Web Services(AWS)APIキー
- Facebookトークン
- GitHubトークン
- Google APIキー
- Twitter OAuthトークン
- PayPal APIキー
- Twilio APIキー
- Slack Webフック
- Heroku APIキー
- MailChimpキー
- 他の汎用(はんよう)APIキー
- アプリケーションの機密情報
- カスタムAPIキー
この他、無防備なFirebaseサーバやAWSバケットを指すIPアドレスも発見した。
このような欠陥のある認証情報ストレージは、悪意あるハッカーによって悪用される恐れがある。アプリケーションAPIへの不正アクセスと悪用、機密データの窃盗、ユーザーに対するフィッシング、マルウェアの拡散などの危険性がある。
Comparitech.comは、アプリケーションによるAPIトークンとWebフックの保存方法に見つかった問題点を次のように説明している。
APIトークンが悪用される
多くのAndroidアプリケーションはAPIを用いて、他のアプリケーションのデータや機能にアクセスしている。例えば、ホテル比較アプリケーションは各ホテルのAPIを使って、予約可能日や宿泊料金のデータを取得する。APIアクセスには通常、機密のAPIキーまたはトークンによる認証が必要になる。
Comparitech.comの研究者は、API認証情報を無防備な状態で保存しているアプリケーションが多いことを発見した。あるアプリケーションは、認証情報を定数として保存していた。これでは、他のアプリケーションから読み取られたり、悪意のある操作によって変更されたりする可能性がある。
研究者は、ハードコードされた認証情報を実際に操作して、「アプリケーションがトークンをリクエストし、取得するプロセス」をさかのぼることに成功した。あるケースでは、米国の有名な配送サービス会社のAPIトークンを発見し、これを用いて、荷物を追跡するためのプライベートAPIエンドポイントにアクセスできた。研究者はそこで調査作業をストップしたが、「攻撃者が同じ脆弱(ぜいじゃく)性を突いて、機密の顧客情報を盗む可能性がある」と指摘している。
APIトークンは、認証情報スタッフィング攻撃に使われることが増えている。認証情報スタッフィングは通常、盗まれた認証情報を使って、botがそれらのパスワードやトークン、キーを共有する他のアカウントにアクセスすることを含む。APIエンドポイントは、認証情報スタッフィング攻撃の標的になりやすい。
Webフックの危険性
WebフックはSMS通知に似ている。カスタムコールバックを利用して、アプリケーションの動作を補強することが可能だ。
カスタムコールバックはサードパーティーのユーザーや管理者によって管理され、これらのユーザーや管理者は、元のアプリケーションの開発者とは無関係な場合もある。Webフックは多くの場合、「Facebook Messenger」や「Slack」のようなチャットアプリケーションで使われるが、バグ追跡やバージョン管理の自動化にも用いられている。
Comparitech.comの研究者はハードコードされたWebフックに対する攻撃手法を発見した。
ビジネスチャットアプリケーションとして広く使われているSlackは、ユーザーのフィードバックを受け入れるために、ハードコードされたWebフックを使用する。研究者は、大量のリクエストをWebフックに送り付け、サーバに過負荷をかけ、サービス妨害(DoS)攻撃を引き起こすことに成功した。
研究者によると、サイバー攻撃者が同様のリクエストを用いてマルウェアペイロードを仕込み、データベースを勝手に公開したり、アプリケーションサーバに悪意あるスクリプトをアップロードしたりする恐れがあるという。
SlackのWebフックに対する別の攻撃も考えられる。実在しないユーザーからの偽フィードバックを送信することで、開発者を誤解させる可能性もある。さらに、攻撃者が悪意あるWebサイトへのリンクを含むフィッシングメッセージを送信する危険性もある。
Androidアプリケーションの機密情報を安全に保存するには
Comparitech.comの研究者はAndroid開発者に対し、認証情報を保存する際に役立つアドバイスを示した。
- 必要な認証情報保存機能の大部分を、「Android Keystore API」を使って実装する
- コミット時には認証情報とWebフックを除外する。後で全ての必要なキーを「apikey.properties」に追加し、アプリケーション自体の中から適切な方法でそれを読み込むようにする
- 認証情報スタッフィング攻撃で使われないように、認証情報は必ず固有のものを使用する
- 「ProGuard」を使って難読化し、デコンパイルによる機密情報の抽出を困難にする
- アプリケーションの一部をネイティブコードで実装するためのツールセット「Android NDK」(Android Native Development Kit)に機密情報を保存し、デコンパイルやリバースエンジニアリングを困難にする
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- CTF問題「攻撃者は機密情報ファイルのURLをどうやって特定した?」から学べる知識とは
情報セキュリティの技術を競うコンテスト「CTF」の問題から情報システムの仕組みやセキュリティを理解する連載。初回は、「攻撃者は機密情報ファイルのURLをどうやって特定したのか?」という問題について解説します。 - 盗まれた個人情報はダークウェブ市場でどう扱われるのか、Comparitechが調査
比較サイトComparitech.comは、盗まれた個人情報の価格を調査した結果を発表した。盗難クレジットカードやハッキングされたPayPalアカウント、社会保障番号などが40以上のダークウェブ市場でどう扱われているのかが分かる。 - 「中古HDDの6割」に個人情報が残存、英Comparitech
comparitech.comは、eBayのようなマーケットプレースで購入した中古HDDの59%に問題があると発表した。HDDの内容が完全に消去されていないため、5台のうち3台では前の持ち主のデータを復元できた。