Android 21 で新しくコンパイルされたコードの約 13% は Rust で書かれています

Google のエンジニアは、Rust 言語での開発サポートを Android プラットフォームに導入した最初の結果をまとめました。 Android 13 では、追加された新しくコンパイルされたコードの約 21% が Rust で書かれ、79% が C/C++ で書かれています。 Android プラットフォームのソース コードを開発する AOSP (Android Open Source Project) リポジトリには、UWB チップ (超広帯域) のスタックである Keystore1.5 暗号化キー ストアなどの新しいコンポーネントに関連する約 2 万行の Rust コードが含まれています。 、DNS-over-HTTP3 プロトコル、AVF (Android Virtualization Framework) 仮想化フレームワーク、Bluetooth および Wi-Fi の実験用スタックの実装。

Android 21 で新しくコンパイルされたコードの約 13% は Rust で書かれています

メモリ操作時のエラーによって引き起こされる脆弱性のリスクを軽減するという以前に採用された戦略に従って、Rust 言語は現在主に新しいコードの開発に使用され、最も脆弱で重要なソフトウェア コンポーネントのセキュリティを段階的に強化しています。 プラットフォーム全体を Rust に移行するという一般的な目標はなく、古いコードは C/C++ に残り、その中のエラーとの戦いは、ファジング テスト、静的分析、および同様の技術の開発での使用を通じて実行されます。 MiraclePtr タイプ (生のポインターをバインドし、解放されたメモリ領域にアクセスするための追加チェックを実行)、Scudo メモリ割り当てシステム (malloc/free の安全な代替品)、およびメモリ HWAsan (ハードウェア支援型 AddressSanitizer) を操作する際のエラー検出メカニズムを使用します。 GWP-ASAN と KFENCE。

Android プラットフォームの脆弱性の性質に関する統計に関しては、メモリで安全に動作しない新しいコードが減少するにつれて、メモリで動作する際のエラーによって引き起こされる脆弱性の数が減少していることが注目されています。 たとえば、メモリの問題によって引き起こされる脆弱性の割合は、76 年の 2019% から 35 年の 2022% に減少しました。 絶対数で見ると、2019 年に 223 件のメモリ関連の脆弱性が確認され、2020 年に 150 件、2021 年に 100 件、2022 年に 85 件ありました (指摘された脆弱性はすべて C/C++ コードにありました。Rust コードでは、これまで同様の問題はありませんでした)見つかった)。 2022 年は、メモリ関連の脆弱性が優勢でなくなった最初の年でした。

Android 21 で新しくコンパイルされたコードの約 13% は Rust で書かれています

通常、メモリ関連の脆弱性が最も危険であるため、全体的な統計では、重大な問題やリモートから悪用される可能性のある問題の数が減少していることも示されています。 同時に、メモリの操作に関係のない脆弱性の特定のダイナミクスは、過去 4 年間ほぼ同じレベル (月あたり 20 件の脆弱性) を維持しています。 メモリ操作時のエラーによって引き起こされる脆弱性のうち、危険な問題の割合も依然として残っています (ただし、そのような脆弱性の数が減少するため、危険な問題の数も減少します)。

Android 21 で新しくコンパイルされたコードの約 13% は Rust で書かれています

この統計では、メモリで安全に動作しない新しいコードの量と、メモリ関連の脆弱性 (バッファ オーバーフロー、すでに解放されたメモリへのアクセスなど) の数との間の相関関係も追跡します。 この観察は、特定された脆弱性の大部分が新しいコードにあるため、安全なプログラミング技術を実装する際の主な焦点は、既存のコードを書き直すことではなく、新しいコードを削除することであるという仮定を裏付けています。

Android 21 で新しくコンパイルされたコードの約 13% は Rust で書かれています


出所: オープンネット.ru

コメントを追加します