Rust での sudo と su の実装は、これらのユーティリティのセキュリティを向上させることを目的としています。
3か月前、私たちはこのブログで、Let's Encryptプロジェクトの創設者であり、インターネットセキュリティを高める技術の開発を推進するISRGによる「Sudo-rs」プロジェクトの創設に関するニュースを共有しました。
その出版物では、プロジェクトの詳細と特徴の一部を共有しました。このプロジェクトは基本的に、RustでSUDOおよびSUユーティリティの実装を作成することを目的としています(出版物は以下のリンクから参照できます)。
sudo-rs の最初の安定バージョン
このことを述べる理由は、Sudo-rsプロジェクトの最初の安定版が最近リリースされたためです。この開発には、Ferrous SystemsとTweede Golfのエンジニアが参加し、Google、Cisco、Amazon Web Servicesから資金提供を受けました。
「Sudo-rs」プロジェクトをご存知ない方のために説明すると、このプロジェクトの目的は、SUDOとSUユーティリティのRust版を開発することです。SUDOは、Unix系オペレーティングシステムにおけるコンソールユーティリティで、デフォルトではrootスーパーユーザーなどの他のユーザーの権限でコマンドを実行するために使用されます。
`sudo` および `su` 関数は、`sudo-rs` 内でRust 言語でゼロから書き直されました。Rust は、 Android の主要言語の 1 つとなり、Linux カーネルで補助プログラミング言語としてサポートされていることから、業界でますます使用され、推奨されている言語です。一方、Microsoft も、カーネルとそれに含まれる Windows ライブラリの一部を書き直す意向を何度か表明しています。
ユーティリティは可能な限り従来のSUDOおよびSUユーティリティと互換性があり、UbuntuおよびDebianのデフォルトの/etc/sudoers設定に一致する一般的なシナリオでは、SUDOの透過的な代替としてsudo-rsを使用できると述べられています。Wolfi Linuxディストリビューションでは、最高レベルのセキュリティを提供することを目的として、従来のSUDOパッケージの代わりにsudo-rsが既に実装されています。
SUおよびSUDOの開発にRust言語を使用することで、安全でないメモリ処理によって引き起こされる脆弱性のリスクを軽減し、解放されたメモリ領域へのアクセスやバッファ境界でのメモリ不足といったエラーの発生を排除できると考えられています。
さらに、適切なセキュリティレベルを確保するため、プロジェクトでは拡張されたテストスイートを開発しました。これにより、元のsudoユーティリティとの必要な互換性レベルの維持状況も監視できます。sudo-rsにおける攻撃対象領域と潜在的な脆弱性の数を減らすため、使用頻度の低いsudo機能の実装を断念することにしました。
SUDO との違いとしては、デフォルトの use_pty モードが含まれていること、根本的に未実装の機能としてmail_badpassや sendmail との互換性があること、まだ実装されていないが将来追加される機能として sudoedit ユーティリティ、NOEXEC および NOINTERCEPT モード、「default」構成ブロックを個々のユーザーやコマンドにリンクするサポート、PAM を使用せずに認証する機能などが挙げられます。
XNUMX 月には実装の品質を確認できる予定であり、sudo-rs コードベースの独立した監査も計画されていることに言及する価値があります。
さらに、第2バージョンでは、NOEXECモード、監査ログ、sudoersによるホストのマッピング機能、最大16のユーザーグループのサポートなど、マルチユーザー環境での作業を支援するツールを追加する予定であると述べられています。第3バージョンでは、Fedoraで使用されているsudoersの設定との互換性を確保し、 sudoeditユーティリティを追加するとともに、SELinuxとAppArmorのメカニズムを活用してセキュリティを強化する予定です。
最後に、これについてさらに詳しく知りたい場合は、以下のリンクから詳細をご覧いただけます。