Google shoehorned Rust into Pixel 10 modem to make legacy code safer | TechDistill
> Source: Ars_Technica
Execute Primary Source
// Problem
モデムは長年の技術的負債を抱えたC/C++のレガシーコードで動作しており、バッファオーバーフロー等のメモリ安全性の欠如がリモートコード実行(RCE)の標的となっている。しかし、膨大なコード量と機密性の高さから、全面的な書き換えは極めて困難である。
// Approach
全面的な書き換えを避け、攻撃対象になりやすいDNSパーサーに限定してRustを導入する「外科的手法」を採用。オープンソースのhickory-protoを利用し、標準ライブラリへの依存を排除してマシンコードへコンパイルすることで、リアルタイム性を維持しつつ既存のC/C++コードへ統合した。
// Result
Pixel 10において、悪意のあるDNSパケットによるメモリ攻撃を防ぐ安全な実装が実現した。追加されたバイナリサイズは371KBに留まり、実用的な範囲内である。今後は、よりリソース制約の厳しい組み込みシステムへの適用に向け、ライブラリのモジュール化などが課題となる。
Senior Engineer Insight
> 理想論としての「全面Rust化」ではなく、リスクの高い箇所をピンポイントで保護する極めて現実的かつ高度な戦略である。リアルタイム性が求められる環境において、GCを避け、コンパイル時に安全性を担保するRustの特性を最大限に活かしている。371KBというサイズ増は、リソースの乏しいマイコン等では無視できないが、Pixelのようなハイエンドデバイスにおいては、セキュリティ向上というリターンがコストを大きく上回る。レガシー資産を抱える大規模システムにおける、漸進的な近代化のモデルケースと言える。