BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RustがAndroid OSセキュリティのための新しい基盤を提供

RustがAndroid OSセキュリティのための新しい基盤を提供

原文(投稿日:2021/04/08)へのリンク

GoogleはAndroid OSのメモリバグを防止するためにRustを使用する。これは、セキュリティ脆弱性に関する最も頻度の高い原因の1つである。この方向への第一歩として、AndroidオープンソースプロジェクトはOS開発言語としてRustをサポートするようになった。

AndroidチームのエンジニアであるJeffVander Stoep氏とStephen Hines氏は次のように述べている。

CとC++のメモリ安全性のバグは、これまでと同様に、最も対処が難しい不正確であることが原因です。このクラスのバグの検出、修正、軽減には多大な労力とリソースを費やしています。これらの取り組みは、多数のバグがAndroidリリースに組み込まれるのを防ぐのに効果的です。

問題は、特に複雑なコードやマルチスレッドコードでは、C/C++を正しく理解するのが難しいことである。これにより、メモリのバグが発生し、あらゆる予防策にもかかわらず、Androidの重大なセキュリティ脆弱性の約70%を占めている

アプリやほとんどの高レベルフレームワークを含むAndroidエコシステムの大部分は、より安全なメモリ管理環境を提供するJavaまたはKotlinで記述されている。しかし、OSの低レベルコンポーネントはC/C++で記述されている。それらには、ブートローダー、ハイパーバイザー、ドライバーなどがある。

C/C++コードの誤りを減らして安全にするための従来のアプローチは、バグ検出である。これは、非効率的で費用がかかるものの、すべての言語で非常に重要であるとGoogleのエンジニアは言っている。これは主に、バグの検出が難しく、修正に費用がかかることが原因である。

C/C++コードの安全性を低下させる効果的なアプローチはサンドボックス化である。ただし、それ自体のコストが伴う。このように2人のAndroidエンジニアは言っている。このようなコストとして、オーバーヘッドと遅延の増加、およびメモリ消費量の増加がある。さらに、サンドボックス化は、さまざまなコンポーネントに存在する脆弱性を連鎖させる可能性を排除するものではない。

Rustの機能によって、Googleはバグの密度を減らせると期待している。これにより、サンドボックス化をより軽いメカニズムに置き換えることが可能になるはずである。

Rustで書き換えるAndroid OSの箇所を決める場合、重要な注目点は、通常、より古いコンポーネントの方が安全であるということである。

私たちのメモリバグのほとんどは、新しいコードまたは最近変更されたコードで発生し、約50%は1年未満です。 [...]古いメモリバグの比較的まれな点は、一部の人にとっては驚きかもしれませんが、古いコードは、私たちが最も緊急に改善を必要としている場所ではないことがわかりました。

Googleのエンジニアは過去18か月間AndroidプラットフォームにRustを追加する取り組みをしてきており、プロセス全体に数年かかると予想している。Rustで書き直された最初のプロジェクトの1つは、Android Bluetoothスタックであった。Rustで記述されたもう1つのAndroidコンポーネントは、Keystore 2.0である。

Rustがソフトウェアのバグを減らし、セキュリティを向上させる可能性を探求することに関心を示している企業がいるが、Googleの発表は、それらの企業の中で最初のものではない。2019年の終わりに、MicrosoftのエンジニアであるRyan Levick氏とSebastian Fernandez氏は、Rustで低レベルのWindowsコンポーネントを書き直すためのMicrosoftで行った作業を発表した。

この記事に星をつける

おすすめ度
スタイル

BT