8月4日、海外メディアのThe Registerが報じたところによると、DARPA(米国防高等研究計画局)は既存のCコードをRustに自動変換することを目的としたプロジェクト「TRACTOR(TRanslating All C TO Rust)」を発表した。
DARPA(米国防高等研究計画局)は、メモリ安全なプログラミング言語への移行を加速するためにTRACTORというプログラムを開発している。これは、機械学習ツールを使用して、既存のCコードをRustに自動的に変換することを目指すプロジェクトである。
この取り組みの背景には、メモリ安全性の問題がある。バッファオーバーフローなどのメモリ安全性バグは、大規模なコードベースにおける主要な脆弱性の多くを占めている。DARPAは、AIモデルがプログラミング言語の変換を支援することで、ソフトウェアの安全性を向上させることを期待している。
「AIチャットボットに『このCコードをRustコードに変換してください』と言えば、何かが出てきます。それはしばしば非常に良いものですが、常にそうとは限りません」と、DARPAのTRACTORプロジェクトマネージャーであるダン・ワラック氏は述べる。
過去数年間、GoogleやMicrosoftなどのテクノロジー大手は、メモリ安全性バグによる問題を公表し、CやC++以外の手動メモリ管理を必要としない言語の使用を推奨してきた。これにより、ホワイトハウスや米国サイバーセキュリティ・インフラセキュリティ庁(CISA)は、主にRust、C#、Go、Java、Python、Swiftなどのメモリ安全なプログラミング言語の使用を推進している。
しかし、CやC++の管理に関わる人々は、ISO標準に適切に従い、テストツールを慎重に適用することで、Rustですべてを再発明することなく、同等の結果を達成できると主張している。
「CとC++のメモリ安全性の問題に20年以上取り組んだ結果、ソフトウェアエンジニアリングコミュニティは「バグ検出ツールに頼るだけでは不十分」だという合意に達しました」と、DARPAは述べており、国家サイバーディレクター室がソフトウェアの安全性を向上させるためにさらに努力するよう呼びかけていることを指摘している。
Rustは2015年に初の安定版がリリースされ、Cのデビューから40年以上が経過しているが、メモリ安全性を組み込んでおり、低レベルでパフォーマンス重視のシステムプログラミングにも適している。このプログラミング言語の特徴と人気により、Prossimoなどのイニシアチブが生まれた。これは、インターネットを支える重要なライブラリやコードをRustで書き直すための非営利のインターネット研究グループの取り組みである。
「今日のインターネットインフラで稼働している大量のCコードは、翻訳ツールの使用を魅力的にしています」と、Prossimoプロジェクトのエグゼクティブディレクターであるジョシュ・アース氏は述べた。「最近のCベースのAV1実装をRustに翻訳するなど、実験を行っています。現世代のツールは、結果を正確かつイディオマティックにするためにかなりの手作業を必要としますが、さらなる投資によりそれらを大幅に効率化できると期待しています。」
Code MetalのCEOであるピーター・モラレス氏は、DARPAのプロジェクトは有望であり、タイミングも適切であると述べた。「TRACTORは、実現可能性の観点から非常にしっかりしていると思いますし、サイバーセキュリティの分野で大きな影響を与えるでしょう」と述べた。
DARPAの提案に対して、モラレス氏はCとC++を完全に否定するのもまた違う、と述べた。「すべての言語にはトレードオフがありますが、カーネルレベルではコードの一部をRustに移行するのが理にかなっています」と述べた。
自動コード変換の可能性について、モラレス氏は「これは確かにDARPAの難題です」と述べた。異なる言語のステートメントを変換するためのルールを定式化する際に発生するエッジケースの数は膨大であると述べた。
TRACTORプロジェクトを監督しているワラック氏は、高度な自動化を実現することが目標であり、それには技術的な課題を克服する必要があると述べた。「例えば、LLMはコードの翻訳を依頼すると驚くほど良い回答を返しますが、誤った回答を生み出すこともあります。もう一つの課題は、Cがポインタを使用して行うことをRustは禁じていることであり、このギャップを埋めるにはCからRustへの単なる翻訳以上のものが必要です」と説明した。
詳細は[DARPA suggests turning legacy C code automatically into Rust]を参照していただきたい。