編集部からのお知らせ
新着・電子インボイスの記事まとめ
記事まとめDL:オンライン確認「eKYC」

グーグル「Androidオープンソースプロジェクト」が「Rust」言語をサポート

Chris Duckett (ZDNet.com) 翻訳校正: 編集部

2021-04-08 12:46

 Googleはメモリー安全性に関するバグの低減を目指す取り組みとして、「Androidオープンソースプロジェクト」(AOSP)で、「Rust」によるOS構成要素の開発をサポートしていることを明らかにした。

Rust

 Androidで動作するアプリは、JavaやKotlinといったマネージ言語で記述できるが、こうした言語はAndroid OSの開発に用いられているCやC++といった低水準言語並みの「統制と予測可能性」を持ち合わせていない。

 AndroidチームはGoogleのセキュリティ関連ブログに、「CやC++のような言語は、リソースに対する負荷が低く、パフォーマンス面での予測が容易だという性質を有している。その一方で、開発者にはメモリーの寿命を管理するという責任が課される。しかし残念ながら、そういった管理にはミスが発生しやすく、複雑なマルチスレッドのコードベースでは特にその傾向が大きい」と書いている

 そしてチームは、「Rustにより、コンパイル時点でのオブジェクトの寿命/所有に関するチェックの強化と相まって、実行時点でのメモリーアクセスの有効性を確実化できる結果、メモリー安全性が保証されるようになる。RustではCやC++と同等のパフォーマンスを確保しながら、このような安全性が実現できる」とも記している。

 Androidでは現在、信頼性の低い入力をC/C++で記述されたプロセスで取り扱う場合、それらをサンドボックス内で処理している。これは性能面でコストの高い処理となる上、セキュリティ脆弱性に対する連鎖的な攻撃を受けた場合、システム侵害につながるという恐れも残されているとGoogleは説明している。

 またGoogleによると、メモリー関連のバグの半数は開発後1年未満のコードに存在しているため、OS自体をRustで記述し直すよりも、新規コードの開発でRustを採用する方がより理にかなっているという。

 チームは、「Android開発チームの総力をそちら(OSの再開発)に振り向けたとしても、数千万行ものコードを記述し直すというのはまったく現実的ではない」としている。

 また、「メモリー関連のバグが古いコード上で見つかるのは比較的まれだという事実は、一部の人々にとって驚きかもしれないが、われわれの分析によると、古いコードは大急ぎで改善していくべき対象とはなっていない。ソフトウェアのバグというものは、時がたつとともに発見され、修正されていくため、活発に手が入れられていない保守段階のコードに潜んでいるバグの数は次第に減っていくと考えている」という。

 Rustでの開発が考えられているシステムの1つに、Androidの新しいBluetoothスタックとされている「Gabeldorsche」がある。

 Androidチームは、メモリー関連のバグの修正を可能にするために、その種のバグの検出および再現という問題についても説明している。

 「複雑なC/C++のコードベースで、フィックスを開発し、レビューできるのは一握りの人のみだ。バグの修正に多くの労力を費やしても、修正は不完全な場合もある」とし、「バグの検出が最も効果的となるのは、バグが比較的珍しい状況下で、危険なバグに対して相応の緊急性や高い優先順位を与えられる場合だ。われわれがバグ検出の改善という利点を享受する上で、新たなバグを作り込まないようにすることを最優先にする必要がある」と書いている。

この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

特集

CIO

モバイル

セキュリティ

スペシャル

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]