Google は、Gemini を使用して広く展開されている C ライブラリを Rust で書き直すパイロット プロジェクトを完了しました。そして、この実験は誰も計画しなかった形で成果を上げました。同社が実稼働システムを AI 生成の GIF 処理ライブラリ giflib のメモリセーフな書き換えに移行した直後、CVE-2026-26740 が割り当てられた元の C コードで、新たな境界外ヒープ書き込みの脆弱性が明らかになりました。 Google のシステムはすでに影響を受けていませんでした。
同社は、パッチ適用ではなくアーキテクチャを通じてゼロデイ脆弱性を効果的に無効化しました。 Google のセキュリティ エンジニアリング チームが Bug Hunters ブログへの投稿で説明したように、チームは書き換えの実行中に保留中の開示についてまったく知りませんでした。この保護は、メモリ安全でないコードを排除することによる構造的な副作用でした。 AI がどのように再形成されているかについて詳しくは、AI 研究とエンジニアリング、AI Buzz Wire をフォローしてください。
なぜ今メモリの安全性が重要なのか
Google 独自の調査によると、メモリ安全性の脆弱性は、C および C++ コードベースの脆弱性の約 70% を占めています。サードパーティのライブラリは、信頼できないデータを定期的に解析するため、特に弱点があります。同時に、脆弱性の発見から兵器化までの間隔は短縮され続けており、攻撃者は AI 自身の支援をさらに受けて、従来のパッチ サイクルよりも速く行動するようになっています。
Googleは長年、Rustのようなメモリセーフな言語を優先する「セーフコーディング」戦略を提唱してきた。未解決の問題は、単純に削除できない C および C++ 依存関係の膨大なインストール ベースです。パイロットは直接的な質問をしました。LLM は、何も壊さずにこれらの依存関係を迅速に Rust に変換できますか?
ターゲット: giflib
Google は、もともと Eric S. Raymond によって開発され、広く使用されている GIF 画像処理ライブラリである giflib を選択しました。このライブラリは、最初の試行に理想的な複雑さのプロファイルを提供しました。コードは約 3,000 行で、SIMD やアセンブリの最適化はなく、安定したコードベースでした。重要なことに、giflib は非サンドボックス環境で信頼できないデータを処理することがよくあります。まさに、セキュリティ チームが最も懸念している種類の攻撃対象環境です。
その目標は野心的でした。それは、依存するサービスを中断することなく Google の実稼働インフラストラクチャ全体に展開できる、メモリ安全で ABI 互換のドロップイン代替品を作成することでした。ライブラリのロジックの最初の変換は、LLM の支援によって迅速に完了しましたが、チームは、決定的であることが証明された 2 つの要件にフラグを立てました。それは、FFI 境界の慎重な管理、ポインタのライフサイクルと既存の C 呼び出し元とのインターフェイスにおける Rust の所有権セマンティクス、そして Google が「セキュリティのソーシャル コンポーネント」と呼ぶもの、AI によって生成された書き換えを重要なサービスに展開するために必要な人間の信頼です。
検証ガントレット
本番環境の信頼を得るために、Rust 実装では徹底的なテストが行われました。
- 大規模な回帰テスト: 3,000 万を超える現実世界の GIF のデータセットに対して検証され、出力が元の実装と同一であることが確認されました。
- 差分ファジング: オリジナルと Rust のファザーを 6 日間以上継続的に実行し、2 億回以上繰り返しましたが、ロジックの逸脱は見つかりませんでした。
- 敵対的 AI レビュー: 特殊な LLM プロンプトを使用して、従来のテストでは見逃される可能性のある 2 つのコードベース間の微妙な動作の違いを探しました。
パイプラインは展開前にその価値を証明しました。これにより、LZW デコーダのエッジ ケースが特定され、さらに注目すべき点として、元の C ソースに対する Google 社内のレガシー パッチによって導入された既存の範囲外書き込みの脆弱性が明らかになりました。チームは Rust の書き換えで修正しました。
パフォーマンスは低下しませんでした
メモリセーフ言語に対する一般的な反対意見は、実行時の境界チェックのコストです。 Google が自社のグローバルな画像処理サービス全体を監視したところ、Rust の実装はオリジナルの C に比べてパフォーマンスに中立であることがわかりました。同社は、この結果を Rust への移行で繰り返し観察してきたと述べています。
思いがけないボーナスがありました。 Rust ライブラリは構造的にメモリ セーフであるため、Google は、一部の運用サービスが以前は C ライブラリを分離するために必要としていた、リソースを大量に消費するサンドボックスを廃止することができました。このアーキテクチャの簡素化により、画像デコード タスクのテール レイテンシが大幅に短縮されました。
オープンソース — 正直な警告あり
Google は Rust のリライトを github.com/google/giflib-rs で公開し、その結果をコミュニティに貢献しています。同社はまた、Trifecta Tech Foundation による zlib の Rust への手作業による書き換えなど、人間主導の補完的な取り組みにより、パフォーマンスが大幅に向上したことも、ソリューションの広範なエコシステムの一環として評価しています。
注意事項は注目に値します。書き換えには、動作の等価性を検証するために大量の実世界のデータまたは強力な既存のテスト スイートが必要です。また、言語を変更して上流プロジェクトから逸脱すると、特にアクティブな開発中の依存関係については、実質的なメンテナンス コストが発生します。つまり、AI 支援翻訳は加速しますが、エンジニアリング上の判断に代わるものではありません。
全体像
このパイロットは、LLM がコードの提案だけでなく、構造的なセキュリティの改善を大規模に提供できることをこれまでに最も明確に実証したものの 1 つです。 Google は、LLM 主導の翻訳の速度と、差分テストおよび安全境界の専門家による人間によるレビューを組み合わせることで、次にどの CVE が登場するか誰もが知る前に、あらゆる種類の脆弱性を本番インフラストラクチャから廃止できると主張しています。
出典: Google Bug Hunters ブログ「Scaling Memory Safety: AI-Assisted Rewrite of C/C++ dependency to Rust」。
---
AI の先を行く最新の AI ニュース、分析、画期的な情報をすべて 1 か所で入手できます。
AI ニュースをもっと読む→