Rustコードはセキュリティを向上させ、DevOpsも効率化する

ナットとボルト上のRust

出典: Jirik V via Shutterstock

Rustプログラミング言語は、古くからありながら依然として非常に人気の高いCおよびC++言語に対して、勝利を積み重ね続けている。

テクノロジー企業や米国政府は、回避可能な種類の欠陥を排除するために、メモリ安全な言語を採用するようソフトウェア開発者に促してきたが、GoogleのAndroid開発チームが新たに公開したデータによると、Rustコードはセキュリティを向上させるだけでなく、コードレビューに必要な時間を短縮し、より安定した修正を生み出すことが分かった。

Googleによれば、プログラマはC++と比べてRustを使用した場合、バグが約1,000分の1に減少しただけでなく、DevOpsパイプラインのスループットが向上し、生成されるコードの安定性も高まったという。2025年におけるRustを用いた開発の分析でそう述べている。これらのパイプライン指標の改善は意外だったと、GoogleのAndroid向けソフトウェアエンジニアであるJeffrey Vander Stoep氏は述べ、企業はCおよびC++コードの一部を相互運用可能なRustコードに戦略的に置き換えることで、大きなメリットを得られると付け加えた。

「これまでに得られた知見から、既存のメモリ非安全なコードをすべて捨てたり書き換えたりする必要はないことが明らかになりました」と同氏は過去の研究を引用しながら述べている。「相互運用性は、メモリ安全な言語を採用するための現実的かつ段階的なアプローチを提供し、既存のコードやシステムへの投資を活かしつつ、新機能の開発を加速させることを可能にします。」

同社はAndroid LinuxカーネルをRustをサポートするよう更新し、現在ではRustで記述された初の本番ドライバが出荷されている。Googleはまた、PNGやJSONなど特定のファイルタイプ向けのパーサをRust実装に置き換えた。

勢いの増大

Googleは、セキュリティ上の利点からRustを採用している唯一の企業ではない。7月には、Microsoftが、自社のSurfaceノートPCおよびタブレット向けWindowsドライバの開発にRustを採用したことについて、アップデートを公開した。同社は、Rustのメモリ安全性、並行性の安全性、コンパイル時の保証、そしてForeign Function Interface(FFI)を用いたCおよびC++コードとの相互運用性を、開発をRustへシフトすることが理にかなう理由として挙げている。

9月には、インターネット配信およびサービス企業のCloudflareが、かつてFLとして知られていたネットワークの中核部分をRustとRustベースのプロキシサーバであるOyxを用いて再構築したと発表した。新しいFL2フレームワークには130以上のモジュールがあるが、Cloudflareは48時間以内に新機能をデプロイでき、何か問題が発生した場合にはフォールバックする能力も備えた。全体として、同社はRustベースのインフラへの移行により25%のパフォーマンス向上が見られたと述べている。

これらの企業におけるRust利用の軌跡は、Rust Foundationが会員企業全体で目にしている傾向と一致していると、同財団のエグゼクティブディレクター兼CEOであるRebecca Rumbul氏は語る。

「ほとんどの組織は、現実的なアプローチから始め、高リスクまたはパフォーマンスが重要なコンポーネントにRustを導入し、システム全体を書き換えることはしません」と同氏は言う。「そのようなターゲットを絞ったアプローチにより、混乱を招くことなくセキュリティと信頼性のメリットを享受できます。しかし時間の経過とともに、そうしたRustの“島”は拡大していきます。ある領域で成功すると、他の領域への展開を後押しする傾向があります。」

メモリ安全性だけの話ではない

CloudflareはRustで構築したプロキシサーバインフラによりパフォーマンスが向上したことを確認したが、Rustの利用が開発パイプラインを遅くするのか速くするのかについてのデータは、これまでほとんど公開されてこなかった。Googleの2025年のデータによると、Rustで書かれたコードベースに対する中規模または大規模な変更のレビューに要する中央値の時間は、C++での同様の変更と比べて25%短かった。さらに、開発者がチェックインしたコードの品質を逆から測る指標であるロールバック率もC++より大幅に低い状態が続いており、Rustによる変更の方が品質が高いことを示している。

スループットと安定性という2つの指標は、開発者がより効率的に作業できることを意味すると、GoogleのVander Stoep氏は述べる。

「メモリ安全性は重要であり、Rustを採用する主な動機ではありますが、Rustによる生産性向上は、メモリ安全性以外の多くの要因に起因していると考えています」と同氏は言う。

これはRust Foundationも確認している傾向だと、Rumbul氏は述べる。会員企業は一貫して、Rustが信頼性と保守性を向上させると語っているという。

「学習曲線がなだらかになるにつれ、得られる成果は、対処すべき“火消し”の減少と、より迅速で自信を持った開発です」と同氏は言う。

バグの一種にすぎない

Rust、Kotlin、Java、.NETといったメモリ安全な言語は、メモリ安全性に関する問題の削減に効果的である。こうした問題は、MicrosoftがRustで主要なドライバやコードを書き直し始める以前の2018年時点では、同社ソフトウェアにおける全問題の約70%を占めていた。CVE.icuの統計によると、2025年には、共通脆弱性タイプ(CWE)カテゴリが付与された約33,000件の脆弱性のうち、メモリ安全性の問題は約21%を占めている。

しかし、企業はそのような言語の採用に注力すべきである一方で、アプリケーションセキュリティの専門家は、その結果として生成されるコードが依然として他の種類の脆弱性にさらされる可能性があると強調する。Veracodeのプロダクトマネジメント担当バイスプレジデントであり、アプリケーションセキュリティ企業でもあるTim Jarrett氏は、Rustなどのプログラミング言語への移行は、セキュリティにとって万能薬ではないと述べる。開発者は、他の種類の脆弱性クラスに対するテストを引き続き組み込む必要がある。

Veracodeが最新の調査で明らかにしたところによると、メモリ安全な言語であるJavaアプリケーションの約35%、.NETアプリケーションの約60%には、1年以上修正されていない少なくとも1つの欠陥という形で、依然としてセキュリティ負債が存在している。

「メモリ安全な言語を使用することで、アプリケーションセキュリティリスクの重要なカテゴリの1つ、すなわちバッファエラー(オーバーフローなど)を排除できます。これらは攻撃者がホストマシンに任意のコードを実行させることを可能にします」とJarrett氏は言う。「しかし、メモリ安全性によって、インジェクション脆弱性、暗号の問題、認可の問題、エラー条件をチェックしないことに起因する問題などがなくなるわけではありません。これらはすべて、メモリ安全な言語でも十分に起こり得るのです。」

さらに、企業はRustやその他のメモリ安全な言語への移行方法について戦略的である必要がある。ゼロからの全面的な書き換えは通常必要ないと、GoogleのVander Stoep氏は述べる。

翻訳元: https://www.darkreading.com/application-security/rust-code-delivers-better-security-streamlines-devops

ソース: darkreading.com