検索
連載

Androidマルウェアによるシステム改ざんを検知する技術「セキュアブート」「dm_verity」とはAndroidセキュリティ技術の最前線(6)(1/3 ページ)

Androidセキュリティをめぐる最新の状況を、各界のエキスパートたちが解説する本連載。今回はシステム改ざんを行うようなAndroidマルウェアを検知する技術を紹介する。

Share
Tweet
LINE
Hatena
「Androidセキュリティ技術の最前線」のインデックス

連載目次

ますます巧妙化するAndroidマルウェア

 Androidセキュリティの最新動向を紹介する本連載。前回はプライバシー情報などを取得しようとするアプリの挙動を監視する技術について解説した。今回のテーマは「Androidマルウェアによる“システム改ざん”の検知技術」だ。Androidスマートフォンのユーザーであるあなたは、自分の端末がマルウェアに感染していないと言い切ることができるだろうか?

 近年、Androidを狙うマルウェアはますます巧妙化してきており、AndroidのシステムやOSの脆弱(ぜいじゃく)性を使用してルート権限を奪取し、ユーザーの知らない間にシステムを改ざんするものも登場している。そのため、多くのユーザーは、自分がマルウェアに感染したことに気付かない。例えば、2015年のチェック・ポイントの報告によれば、表向きはゲームアプリだが、裏ではルート権限を奪取してシステム領域に不正なプログラムをインストールするマルウェアが観測されている。また、同様のマルウェアは他にも幾つか報告されている(関連リンク参照)。

 こうしたマルウェアは、主にサードパーティーのアプリストアやWebからのダウンロードなど、「Google Play」以外で配布される非公式アプリにおいて多く発見される。広告表示が目的のマルウェアなどであれば、不審な広告が目に見えて増えるためユーザーがマルウェア感染に気付きやすいが、ユーザーに隠れてシステムを改ざんし、ひそかに通信を行うようなマルウェアへの感染に気付くのは難しい。

 このようなマルウェアへの有効な対策技術としては、「Androidのブート時(電源を入れたとき)に、システムが正常な状態と比べて改ざんされていないことをチェックする」という方法がある。今回は、このAndroidブート環境におけるセキュリティ技術が、マルウェアによるシステム改ざんをどのように検出するのか解説しよう。

Androidのアーキテクチャとマルウェアの動作

 図1に示す通り、Android OSは幾つかのレイヤーから成り立っている。一番下には「OSカーネル(Linuxカーネル)」があり、その上にGoogleが開発したAndroidシステムである「ライブラリ層」「Androidランタイム層」「アプリケーションフレームワーク層」、そして最上位に「アプリケーション層」が存在する。

 権限としては、一番下のLinuxカーネルが最も強い権限である「カーネルモード」で動作しており、Linuxカーネルより上のレイヤーは、ユーザーモードで動作する。その中でも「ライブラリ層」から「アプリケーションフレームワーク層」までのAndroidシステム層は、ユーザーモードの中で最も強力な権限であるroot権限やsystem権限で動作し、最上位のアプリケーション層は、アプリごとに与えられるUID(User ID)を基にしたさまざまな制限下で動作している。

図1 Androidのアーキテクチャと動作モード
図1 Androidのアーキテクチャと動作モード

 このAndroidアーキテクチャは、ROM上の4種類のイメージファイル(bootloader.img、boot.img、system.img、userdata.img)から構成されており、これらが以下の順番で起動していくことで、Androidが立ち上がる(図2)。

  1. ブートローダがRAMにロードされ実行される(bootloader.img)
  2. ブートローダがOSカーネルをRAMにロードし、OSカーネルを実行する(boot.img)
    ※端末ごとに設定された特殊操作により、通常のOSカーネルを起動せずに開発者向けの「fastbootモード」に移行することもできる
  3. OSカーネルのFileSystem/systemに、Androidシステム(system.img)がマウントされる
  4. OSカーネルのFileSystem/dataに、ユーザーデータなど(userdata.img)がマウントされる
図2 Androidのアーキテクチャとブート
図2 Androidのアーキテクチャとブート

 「/system」にマウントされるのがAndroidシステムで、システムの動作に必要なバイナリやデータが格納されている。Androidの実行中、これらの情報は基本的に読込専用に設定されており、システムアップデートなどを除けば更新されることはあまりない。一方、「/data」はさまざまな設定情報やユーザーがインストールしたアプリ、ユーザーデータなどが格納される場所であり、Androidを使い続ける限り、頻繁に更新されていく。

 このアーキテクチャに対して、冒頭で説明したシステム改ざんを行うマルウェアは、典型的には以下のような手順で不正行為を行う。

  1. ユーザーがマルウェアのアプリケーションを実行する
  2. アプリケーションがLinuxカーネルの脆弱(ぜいじゃく)性を使用してカーネル権限でRAMを操作し、自身の権限をroot権限へと昇格させる
  3. /systemの内容を改ざんし、不正プログラムを配置する

 このときよく利用される不正プログラムが「su」である。これに必要な設定を施して「/system/bin」に配置しておくことにより、マルウェアはいつでもroot権限に昇格できるようになる(注)。

Android 5.0より前のバージョンの場合。Android 5.0以降はセキュリティが強化されたため、もう少し“工夫”が必要になっているが、システム改ざんを行うマルウェアは依然存在している。

 さて、それでは以下で、ROM上のイメージファイルの改ざんを検出する技術の1つである「セキュアブート」について解説しよう。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ

Security & Trust 記事ランキング

  1. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  2. 終わらせましょう。複雑過ぎるKubernetes/クラウドネイティブが生む心理的安全性の低下を――無料でクラウドセキュリティの勘所が分かる130ページの電子書籍
  3. 3割程度のSaaS事業者が標準的なセキュリティ対策をしていない アシュアードがSaaS事業者を調査
  4. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  5. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
  6. 増える標的型ランサムウェア被害、現場支援から見えてきた実態と、脆弱性対応が「限界」の理由
  7. 中小企業の20%の経営層は「自社はサイバー攻撃に遭わない」と信じている バラクーダネットワークス調査
  8. ゼロトラストの理想と現実を立命館大学 上原教授が語る――本当に運用できるか? 最後は“人”を信用できるかどうか
  9. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  10. 「SQLite」のゼロデイ脆弱性、GoogleのAIエージェントが見つける AIは脆弱性調査の課題をどう解決したのか?
ページトップに戻る