以前、掲載しましたエディターズ・ノートに続き、Androidのセキュリティーについて書かせていただきます。Androidを機器に搭載し、セキュアにしていくためには、特にrootと呼ばれる特権やSystem権限で不正なプログラムやコマンドを実行する、いわゆるroot化を防ぐ必要があります。rootやSystem権限で不正なプログラムが動作できてしまうと、アプリを不正コピーできてしまったり、各種のインターネット・サービスに接続するためのアカウントを盗まれてしまったりします。知的財産で保護されたようなプログラムも流出してしまう可能性もあります。最悪の場合は、端末自体が犯罪者の支配下に置かれるという状況になります。

 root化を防止する最も有効な手段はデバイス・ドライバーを含むAndroidのシステムの中にroot化につながるような脆弱性を一切残さないことです。とはいえ、膨大なプログラム・コードから構成されるAndroidに脆弱性を残さないことは至難の業です。Androidの脆弱性を多数発見しているイエラエセキュリティ技術顧問の佐藤勝彦氏(ハンドルネーム:goroh_kunで有名な方です)は、最新のバージョンのAndroidであっても、root化できる脆弱性は残っていると言います。

 そこで、脆弱性を突かれても、深刻な事態を招かないような仕組みを用意しておくことが次善の策として考えらえます。具体的には、不正なプログラムがroot権限で動作しても、Androidの根幹をなすシステム領域を書き換えられないようにするといった機構を盛り込むのです。現在、日本のスマートフォン・メーカーの多くはLSM(Linux Security Modules)と呼ぶセキュリティー機構を利用して、root権限奪取による不正行為を防御しています。LSMは、例えば、プログラムの実行やファイルやI/Oへのアクセスがあると、それをフックして、その実行や呼び出しが正しいかをチェックする枠組みを提供しています

 このLSMはAndroidがカーネルとして採用しているLinux自体には含まれているのですが、採用しているファイル・システムでは対応していないなどの理由があり、AndroidではAndroid 4.1以前までソース・コードに含まれていませんでした。こうした状況であるため、日本のスマートフォン・メーカーはLSMの機能を独自に実装してきたわけです。

Android 4.1からソース・コードにマージされる

 ところが、Android 4.1からLSMを使った「SEAndroid」と呼ばれる機能のソース・コードが統合されました。SEAndroidは米国家安全保障局(NSA)が開発したもので、同局が開発したLinuxのセキュアOS機能SELinuxをAndroid環境向けにカスタマイズしたものです。SEAndroidでは例えば、どのプロセス(プログラム)が、どのファイルにアクセスできるかを定義しておいて、これに反するアクセスは排除するといったことが可能です。結果としてroot権限やSystem権限を持ったプログラムだとしても、この定義の中に含まれていなければコマンド発行やファイル変更をできません。もちろん、SEAndroidの機能を使うかどうかは実装するメーカーによりますが、これによって、メーカーごとに独自実装をしなくてもよくなり、Androidに統一的なroot化防止機構が実装されると期待されています。

 一方で、SEAndroidは「過剰仕様だ」という声もあります。SEAndroidの源流となっているSELinuxはNSAが開発していることからも分かるように、国防レベルのセキュリティーを想定して作られています。そのため、SEAndroidは許可した以外の動作はさせないという考え方で設計されています。オープンなシステムにおいては許可リストを試行錯誤しながら作る必要があり、設定が煩雑になり、セキュリティー・ポリシーを組むのが大変です。あまり厳しいセキュリティー・チェックをすると動作が遅くなり、消費電力が増大するといった懸念もあります。SEAndroidを過剰仕様だと考える人たちは、国防レベルの複雑な仕組みではなく、民生機器の身の丈に合った必要最低限のroot化対策を施したLSMの実装が必要だと訴えています。

 このSEAndroidの詳細を学べるセミナーと、SEAndroidは過剰実装ではないかと考える人たちが講演するセミナーがあるので、ここで宣伝させてください。前者は2013年2月20日にITライターの末安泰三氏が講演する「SEAndroidとTOMOYO Linux」(講演概要)です。LinuxとAndroidに精通した同氏に、今回、新たな調査を含め、デモを交えながら、SEAndroidに加え、日本のスマートフォン・メーカーの一部が採用しているLSMを使ったセキュリティー機構の一つ「TOMOYO Linux」の詳細をついて語っていただきます。

 後者は2013年2月27日のKDDI研究所の竹森敬祐氏とシャープの重田大助氏の「Android端末堅牢化手法」(講演概要)です。竹森氏はKDDIの端末や各種サービスのセキュリティー設計などに携わっており、重田氏はシャープのスマートフォンのセキュリティー設計などを行っている現役の技術者です。両名はSEAndroidではなくLSMを使ったスマート家電向けの実装「Security Spiced Smart OS(3S-OS)」を提唱しており、今回は、この3S-OSなどを使った端末堅牢化法を中心に語っていただきます。

 共に有料のセミナーではありますが、興味のある方はぜひご参加ください。