ニュース

sudoとsuがRustで書き直される。メモリ安全性向上へ

 非営利団体のInternet Security Research Group(ISRG)のProssimoプロジェクトにおいて4月26日(米国時間)、UNIXおよびLinux系OSに使われるsudoおよびsuをRust言語に書き直して再実装する作業をはじめたと発表した。

 sudoは1980年代に開発され、何十年にも渡りOSへのリスクを最小限に抑えながら変更を実行するためのツールとして活用されてきたが、sudoはC言語で記述されており、メモリの安全性に関連する脆弱性の問題を過去に経験してきたという。

 Prossimoプロジェクトでは、どのようなソフトウェアに投資するべきかを考慮する際に、1.非常に広く使われており、2.重要な境界線において、3.重要な機能を実行していて、4.メモリセーフではない言語(C、C++、asmなど)で書かれている、という4つのリスク基準を考慮しているが、sudoはこのリスク基準に完全に適合し、sudoやsuよりもはるかに重要なソフトウェアを想像するのは困難であることから、投資ならびに作業が決行した。

 作業はFerrous SystemsTweede Golfの共同チームによって行なわれ、Amazon Web Servicesからの資金提供を受ける。作業計画およびGitHubのリポジトリも公開している。

 Rustプログラミング言語は、コーディングエラーを早い段階で検出し、タイプセーフかつメモリセーフで高い安全性を実現しているほか、並列プログラミングの処理のために設計され、並列性のバグを最小限に抑えた。さらに、ランタイムやガベージコレクタによって速度が低下せず、パフォーマンスと効率も重視しているという。

 余談だが、Windowsにおいても一部重要なプログラムが順次C++からRustに置き換わっている。Microsoftが2023年3月29日~30日にイスラエルで開催したセキュリティ研究コミュニティ「BlueHat IL」において、テキストの分析/レイアウト/レンダリングを行なう「DWrite」、およびDWriteがWindowsから分離した「DWriteCore」が、C++からRustに順次置き換わっていることが明らかにされた。また、実験的にWin32k GDIもRustへのポーティングを実施し、今後数週間~数カ月以内に有効になるという。