BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Android Pがコンパイラベースのセキュリティ対策を拡大

Android Pがコンパイラベースのセキュリティ対策を拡大

原文(投稿日: 2018/07/02)へのリンク

最近ベータ版がリリースされたAndroid Pは、今後のリリースでコンパイラーベースのセキュリティー対策を強化する予定であると、GoogleのエンジニアであるIvan Lozano氏は述べている。また、同氏によると、今後のリリースで、制御フローの完全性と整数オーバーフローのサニタイズも含まれるとのこと

コンパイラベースの対策は、LLVM/Clangコンパイラによって一連の機能として提供される。対策の基本的なアイデアは、コンパイル時にランタイム操作を計測し、未定義の動作を引き起こす操作をキャッチし、安全に失敗させることである。LLVM/Clangは、ゼロ除算、NULL可能性違反、負の配列境界、制御フローの完全性を含む、いくつかのサニタイザをサポートする。

GoogleはAndroid Nougat(Android 7としてリリースされた)の時代にLLVM/Clangのサニタイズを利用し始めた。その後、Android O (Oreo、Android 8.0)で制御フローの完全性チェックを追加した。Android Pに対してGoogleは、メディアフレームワークやBluetooth、NFC、カーネルなどのセキュリティに不可欠な他のコンポーネントを含む、OSのさまざまなコンポーネントにわたって、サニタイザと制御フローの完全性の両方をサポートを拡大した、とLozano氏は述べている。

制御フローの完全性は、攻撃者が既存のコードを活用するコードリユース攻撃に対処する。たとえば、ret命令で終了する短いコードシーケンスを見つけ、それらを任意の順序で実行することによって実現される。これにより、攻撃者はコードを注入することなくスタックを制御でき、そのような攻撃を検出する複雑さが大幅に増加する。この種の攻撃に対処するために、制御フローの完全性は、コンパイル時に決定した、パスを限定したコールグラフに、プログラムの制御フローを限定することを目的としている。プログラムが予期しない呼び出し先に分岐しようとすると、安全な方法で中止される。制御フローの整合性には、コンパイル時と実行時の両方でコストがかかるが、AndroidでのGoogleのテストでは無視できることが分かったとLozano氏は述べている。

サニタイザに関して、Googleは、整数オーバーフローサニタイザの使用をlibui、libnlなどのライブラリにも広げた。整数オーバーフローは、攻撃者がプログラムの制御を奪う一般的な手段であり、以前のバージョンのAndroidに影響を与えたStagefright脆弱性の中心であった。Googleの貢献は、LLVM整数オーバーフローサニタイザを改善し、多くのケースで75%以上のオーバーヘッドを減らしたことである。

Pixel携帯電話や他のサポートされている端末を所有している場合は、Android P Betaプログラム登録することでAndroid P betaにアクセスできる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT