安全性とセキュリティを向上させるためにサードパーティの Rust ライブラリの使用を許可する Chromium

Chromium プロジェクトは、Rust ツールチェーンをビルド システムに追加して、Rust で記述されたサードパーティ ライブラリの統合を可能にし、セキュリティ、安全性を向上させ、開発をスピードアップすることを目指しています。

Rust は Mozilla がブラウザーの作成に使用するために特別に開発したものであるため、Chromium が最終的にこのテクノロジーにも依存し始めるのは非常に適切です。 システムソフトウェア業界への多大な貢献に対して Mozilla に感謝します。 Rust は、言語が安全性を提供すると同時に成功することを期待できるという信じられないほどの証拠です。

Rust が Chromium プロジェクトにもたらす約束は、Chromium セキュリティ チームのメンバーである Dana Jansens が、解析、評価、または処理するコードの記述方法を管理する Chromium の「2 つのルール」を満たすためのよりシンプルで安全な方法を提供することであると説明しています。安全な方法でインターネットからの信頼できない入力。

この規則では、次の条件のうち 2 つだけが同時に保持されると規定されています: 信頼されていない入力、安全でない言語の使用、および高い実行権限。 たとえば、本質的に安全でない C/C++ プログラムは、信頼できない入力を非常に低い権限のプロセス、つまりサンドボックスでしか処理できません。 信頼できる入力を処理する代わりに C/C++ コードのみを使用する場合、サンドボックスは必要ありません。

Rust の導入により、IPC よりも単純なメカニズムを使用できること、言語レベルでの複雑さが軽減されること、記述およびレビューするコードが少なくなること、バグ密度が減少することなど、チームが目指している多くの利点があります。コード。 これらは、Chromium の全体的な安全性、セキュリティ、および開発速度に貢献するはずです。

Chromium プロジェクトは Rust ライブラリの統合のみを検討しており、Rust を開発言語として広く採用することは考えていないことに注意してください。

現時点では、サードパーティ ライブラリのみをサポートします。 サードパーティのライブラリはスタンドアロン コンポーネントとして記述されており、Chromium の実装に関する暗黙の知識を保持していません。 これは、よりシンプルで単一のタスクに焦点を当てた API を持っていることを意味します。 別の言い方をすれば、それらは通常、複雑なポインタ グラフや共有所有権のない狭いインターフェイスを持っています。

さらに、Rust ライブラリが統合のために考慮されるケースは一定数しかありません。 特に、Rust の実装は、速度、メモリ、およびバグの点で最高である必要があります。 IPC または C++ のメモリ安全性緩和のコストを削減するために、タスクをより高い特権を持つプロセスに移動できるようにする必要があります。 ただし、代替手段と比較して、バグのリスクの点で有利になるはずです。

Rust と C++ コードの共存への段階的なアプローチと対称的に、Chromium チームは、C++ から Rust への相互運用のみが許可されるように制限しています。 Jansens は、Rust から C++ への呼び出しが許可されている場合、安全な Rust コードが本質的に安全でない C++ コードに到達する可能性や、C++ 開発者が Rust のルールに違反しないように理解する必要があることなど、完全な相互運用性を可能にすることに固有の複雑さの合理的な概要を提供します。 .

いずれにせよ、完全な相互運用性が将来的に除外されるわけではありませんが、すべてがスムーズに機能するようにするには、相互運用性ツールへの多額の投資と進化が必要になります。 一方、Chromium チームの決定は、大きなペナルティを負うことなく、Rust エコシステムによって提供される豊富なクレートにアクセスできるようにすることを目的としています。

.

Leave a Comment

Your email address will not be published. Required fields are marked *