Google Pushes Rust in Legacy Firmware to Tackle Memory Safety Flaws
2024/09/09 SecurityWeek — Google が推進しているのは、メモリ関連のセキュリティ対策の一環としての、既存の低レベル・ファームウェア・コードベースへの Rust の導入である。Google のソフトウェア・エンジニアである Ivan Lozano と Dominik Maier の最新ドキュメントによると、C や C++ で書かれたレガシー・ファームウェアのコードベースは、OS 以下の繊細なレイヤーでメモリ安全性を保証するために、“drop-in Rust replacements” を利用できるという。

Android チームは、Google のセキュリティをテーマとする、メモリ安全言語への移行の強化に関するドキュメントを公開し、「我々は、このアプローチがファームウェアでも可能であることを実証し、効率的かつ効果的な方法でメモリ安全性への道を提供することを目指す」と述べている。
さらに彼らは、「既存のファームウェアは、C や C++ のようなメモリ・アンセーフな言語で書かれた、大規模なレガシー・コードベースで構成されている。ファームウェアとは、ハードウェアと高位ソフトウェアの間のインターフェイスとして機能するものだ。しかし、高位ソフトウエアに標準装備されているソフトウエア・セキュリティ・メカニズムが、ファームウエア・コードには存在しないため、その脆弱性は、脅威アクターたちにとって魅力的なものであり、また、悪用されやすい」と述べている。
Google は、メモリ安全性の問題が、Android/Chrome のコードベースにおける脆弱性の、主な原因であることを示すデータを引用している。そして、同等のパフォーマンスとコードサイズを持つ、メモリセーフな代替手段として Rust を推進している。
同社は、最小限の労力で最大のセキュリティ効果を得るために、新しいコードや最もリスクの高い既存コードの置き換えに重点を置く、段階的なアプローチを採用していると述べている。
Android のソフトウェア・エンジニアたちは、「Rust で新しいコードを書くだけで、脆弱性の数を減らすことができ、時間が経過するにつれて、未解決の脆弱性の数も減らすことができる。この Shim は、Rust ライブラリ API のラッパーとして機能し、既存の C API と Rust API をブリッジする。それは、既存のライブラリを Rust の代替ライブラリに書き換える際によく使われる手法だ」と述べている。
彼らが、開発者たちに対して提案するのは、既存の Rust API とコードベースが期待する、C API の変換のための薄い Rust Shim を書くことで、既存の C 機能を置き換えることである。
Google は、Rust のようなメモリ・セーフ・プログラミング言語への移行と並行して、Android におけるメモリ関連のバグが大幅に減少していると報告している。同社によると、2019年〜2022年にかけて、モバイル・プラットフォームに参入するメモリ・セーフ・コードの量が増加したことで、Android で報告された年間のメモリ・セーフティ問題は、223件から85件に減少したという。
メモリ・セーフな Rust により、ファームウェアを書き換えるという Google の試みに拍手です。この考え方が明らかにされたのは、2023/04/14 の「Security-by-Design と Security-by-Default の原則:政府の調達力を用いて普及させる – CISA」ですが、それから1年半近くが経ち、ようやく、具体的な動きが見えてきたという感じです。期待して良さそうですね。よろしければ、2024/08/04 の「DARPA の TRACTOR プログラム:C → Rust 変換によりメモリ・セーフ言語へ加速」も、ご参照ください。
You must be logged in to post a comment.