LinuxカーネルにおけるRust:なぜこれが重要なのか
写真:MakeUseOf

LinuxカーネルにおけるRust:なぜこれが重要なのか

カーネルにおける深刻な脆弱性の大部分は、メモリ関連のバグに起因しています。メモリ安全な言語を導入することは、根本的な解決につながるのです。

長年の議論を経て、Linuxカーネル内でRustでコーディングできるインフラが統合され、Rustで書かれたドライバが登場し始めた。Cのみが使用されてきた30年の歴史を持つプロジェクトにおいて、第二の言語が採用されたのはこれが初めてのことである。

技術的な理由

CおよびC++で記述された多くの大規模プロジェクトの統計データは、いずれも同様の結果を示しています。深刻なセキュリティ脆弱性の約3分の2は、メモリ関連のバグ――境界外アクセス、解放済みのメモリ領域へのアクセス、二重解放――に起因しています。

これはプログラマーの能力の問題ではありません。これらのプロジェクトには最高の人材が集まっているにもかかわらず、ミスが発生してしまうのは、単に人間には数百万行ものコードの中でメモリのライフサイクルを追跡しきれないからです。

なぜドライバなのか

ドライバはカーネルのコード量の大部分を占めており、さまざまな開発者によって記述されているため、品質にばらつきがある一方で、フル権限で実行されます。言い換えれば、リスクが最も高い領域であると同時に、新しいコードが絶えず生み出されている場所でもあり、新しい言語を試すには理にかなっています。

本当の困難

  • このモデルには独自のメモリ構造と規約があるため、Rustで使用できるように安全なレイヤーでラップし直す必要があります。この作業は非常に手間がかかります
  • メンテナンス担当者は、両方の言語を理解できなければなりません
  • カーネルの内部インターフェースは絶えず変化しており、変更があるたびにラップクラス全体を更新する必要があります
現実的な見通し:Rustはカーネル内のCに取って代わることはないだろう。Rustは、最大のメリットがあり、移行コストが最も低い、新規に記述される部分から徐々に浸透していくことになる。
Chia sẻ

Thảo luận