Androidの署名鍵漏えいで278アプリが偽アップデートの危険にさらされる

デジタル署名は、あるAndroidアプリが本当にオリジナルの開発者に由来することを証明するはずのものです。しかし新たな研究によって、たった1つの署名鍵の漏えいが、この信頼メカニズムをサプライチェーン上の弱点に変えてしまう実態が明らかになりました。A Longitudinal Study of Android Apps Signing Key Protectionと題されたこの研究では、著者らが公開GitHubリポジトリを対象に、外部に露出しているキーストアファイルをスキャンしました。その結果、数十億人が利用する実在のアプリにまで露出の影響が及んでいることを突き止めています。

概要

  • 研究者らは、Androidアプリの署名に関連するGitHub公開キーストアファイル56,510件を発見
  • このうち46,619件は、同じリポジトリ内に平文のパスワードが併置されていた
  • 重複を除去した結果、5,673件のキーストアと6,602件の署名鍵の侵害を確認
  • 検証済み証明書は、7社の端末メーカーによるプリインストールアプリ252件を含む、実在のアプリ278件に紐づく
  • 影響を受けたアプリの利用者は、合計で100億人を超える
  • Baidu Keyboardアプリに対する概念実証(PoC)攻撃により、この脆弱性が実際に悪用可能であることを確認

署名鍵はどのように漏えいしたのか

具体的には、研究者らはAndroidアプリの署名に関連するキーストアファイルを求めて、公開GitHubリポジトリを徹底的に調査しました。その結果、合計56,510件ものファイルが見つかっています。憂慮すべきことに、このうち46,619件のキーストアは、そのパスワードと平文のまま同じ場所に置かれていました。重複エントリーを除去した後、研究チームは5,673件のキーストアの侵害を確認しました。これらのキーストアには、6,602個の異なる署名鍵が含まれていました。

漏えいした署名鍵がAndroidの信頼モデルを崩壊させる理由

Androidのアップデートの仕組みにより、この漏えいは特に危険なものとなっています。具体的には、Androidは元のインストール時と同じ開発者署名が付いている場合に限り、アプリのアップデートを受け入れます。したがって、秘密鍵とそのパスワードの両方を入手した攻撃者は、偽のアップデートを作成できてしまいます。その偽アップデートは正しい署名を持っているため、端末側はそれを正規の新バージョンとして扱ってしまうのです。

現実世界での露出——278アプリ、利用者100億人超

検証の結果、侵害された証明書26件が、実在するアプリ278件に紐づいていることが判明しました。このうち26件は公開アプリストアで配布されているものです。一方、残る252件は、7社の端末メーカーによるプリインストールアプリでした。影響を受けた開発元にはBaidu、Ctrip、Kwai、Xiaomiなどが含まれます。これらのアプリの利用者を合計すると、100億人を超えます。

プリインストールアプリに潜む追加的な危険性

プリインストールアプリやシステムアプリには、それ特有のリスクが伴います。特に、こうしたアプリはユーザーへの個別の確認なしに、昇格した権限を取得することがあります。そのため、こうしたアプリの1つが偽アップデートに置き換えられた場合、悪意あるコードが機密データにアクセスしたり、端末の動作を妨害したりする恐れがあります。研究者らはまた、権限同士の競合によって引き起こされる、持続的なサービス拒否(DoS)のリスクについても指摘しています。

概念実証——武器化されたBaidu Keyboard

実際の悪用可能性を検証するため、研究チームはBaidu Keyboardアプリを標的としました。まず、アプリを再パッケージ化し、追加のDEXコードを注入しました。次に、漏えいした鍵を使って改ざん済みのパッケージに署名しました。インストール後、この偽バージョンはキーボード入力を密かにファイルへ記録し、そのファイルを連携アプリへ送信していました。なお、この実証実験は、実際に大規模な攻撃キャンペーンが進行中であることを示す証拠ではありません。とはいえ、この脆弱性が実際に悪用可能であることは証明されています。

スマートフォンを超えて——Baidu CarLifeのリスク

この漏えいの影響は、スマートフォン以外にも及んでいます。具体的には、露出した鍵の1つは、車載インフォテインメント向けプラットフォームであるBaidu CarLifeに直接紐づいています。各メーカーはCarLifeを1,100種類を超える車種に搭載しています。このシナリオでは、偽のスマートフォンアプリが車のインターフェースに干渉したり、ドライバーの行動を気づかれることなく監視したりする可能性があります。

開示対応と、足並みの揃わない是正措置

研究者らは、この調査結果を影響を受ける関係者に報告しました。加えて、公表前には標準的なレスポンシブル・ディスクロージャー(責任ある開示)の猶予期間を設けています。公表の時点で、一部のチームはすでに露出していたリポジトリを非公開にしていました。しかし、業界全体で見ると是正措置の進捗にはばらつきがありました。実際、鍵のローテーションを完全に完了させたサードパーティ開発者は、わずか1社のみでした。

開発者・OEM向けの緩和策の推奨事項

今後、開発者はキーストアのパスワードをプロジェクトファイル内に保存することを避けるべきです。また、キーストアと署名鍵にはそれぞれ別のパスワードを使用すべきです。加えて、多要素認証(MFA)を導入することで、有用な追加の防御層を確保できます。可能であれば、各チームは署名業務を、マネージド署名サービスに委ねることも検討すべきです。

端末メーカー側にも、これに準じた推奨事項があります。すなわち、公開されているAOSPの鍵でシステムコンポーネントに署名することは、決して行うべきではありません。また、過剰な権限を持たせた状態でサードパーティ製アプリをOSイメージに組み込むことも避けるべきです。

翻訳元: https://meterpreter.org/android-signing-key-leak/

ソース: meterpreter.org