ホワイトハウスは開発者にCとC++を放棄するよう求める声明を発表した。メモリの安全性のためにRustが「選ばれた」

ホワイトハウスは開発者にCとC++を放棄するよう求める声明を発表した。メモリの安全性のためにRustが「選ばれた」

最近、ホワイトハウスの国家サイバースペース局長室(ONCD)は、「基本的な構成要素への回帰:安全なソフトウェアへの道」と題した19ページの報告書の中で、開発者に対し、Rustなどの「メモリセーフなプログラミング言語」を使用するよう呼びかけた。レポートでは、最初からメモリセーフなプログラミング言語を選択することが、安全な設計方法でソフトウェアを開発するための重要な方法であると指摘しています。

さらに、ONCDは、報告書の推奨事項はテクノロジー企業、学界、その他の機関と連携して作成されたと述べ、報告書を裏付けるためにHP、アクセンチュア、パランティアを含む複数のテクノロジー企業から意見を集めた。

レポートアドレス: https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

実際、米国の公的機関が C および C++ の使用を中止するよう呼びかけたのは今回が初めてではありません。

昨年12月、米国サイバーセキュリティ・インフラ庁(CISA)などの機関は「メモリ安全性ロードマップガイド」を発行し、CとC++はメモリが安全でないプログラミング言語であると指摘し、ソフトウェア開発者にRustやJavaなど他のメモリが安全なプログラミング言語を採用するよう呼びかけた。

出典: https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf

メモリの安全性のためだけに、CとC++を捨ててRustに切り替えましょう

メモリセーフなプログラミング言語の使用を重視しているので、まずはメモリセーフティとは何かを理解しましょう。メモリの安全性とは、バッファ オーバーフローやダングリング ポインタなど、メモリ アクセスを処理する際のバグや脆弱性を防ぐことを指します。

記憶の不安定さはどれほど有害でしょうか? 2019 年に、Microsoft のセキュリティ エンジニアは、セキュリティ問題の約 70% がメモリの安全性の問題によって発生したと報告しました。 2020年に、GoogleはChromiumブラウザで見つかったバグについても同様のデータを報告しました。

プログラミング言語に関しては、C と C++ はどちらも、境界チェックなしで直接メモリ アドレスを使用した任意のポインタ演算を許可します。報告書は、一部のプログラミング言語にはメモリ安全性に関連する機能が欠けており、CやC++に代表される一部の重要なシステムに広く浸透していることを専門家が発見したと指摘した。したがって、C と C++ は「安全でない」プログラミング言語であると見なされます。

Rust は、C や C++ に匹敵するメモリセーフなプログラミング言語の典型的な例と考えられています。 Rust は安全性、特に並行性の安全性に重点を置いたシステム プログラミング言語です。関数型、命令型、汎用プログラミングパラダイムをサポートするマルチパラダイム言語であり、TensorFlow などのディープラーニングフレームワークでも優れたフロントエンド言語として使用されています。

プログラマー向け質疑応答サイト「Stack Overflow」の2021年開発者調査レポートでは、Rustが開発者の間で最も人気のあるプログラミング言語となった。 Rust がシステム プログラミング コミュニティで人気がある理由の 1 つは、メモリ関連のセキュリティ脆弱性を排除するのに役立つことです。

Rust のメモリ安全性機能は、業界で長い間検証されてきました。 2021 年 4 月、Google は Android に Rust 言語のサポートを追加すると発表しました。その理由は、C および C++ のメモリ安全性バグが、解決が最も難しいエラーの原因だからです。Google は、このようなバグを検出、修正、軽減するために多大な労力とリソースを投入し、多数のバグが Android バージョンに入り込むのを効果的に防いでいます。

しかし、こうした取り組みにもかかわらず、メモリ安全性のバグは依然として安定性の問題の主な原因であり、Android の重大なセキュリティ脆弱性の約 70% を占めています。そのため、Google はオペレーティング システム開発者向けに 3 番目のオプションとして Rust を追加しました。

ワシントン大学のコンピューターサイエンス教授であるダン・グロスマン氏は、C と C++ の危険性は何十年も前から誰もが知っており、実用的で成熟した代替手段が存在する今こそ、メモリセーフなプログラミング言語を推進するのに良い時期だと述べています。

彼は、特に組み込みシステムでは、C と C++ を一夜にして排除できるわけではないことに同意しています。しかし、Rust などの他のプログラミング言語がシステム ソフトウェアでより広く使用されるようになると、この進歩は加速すると予想されます。

C と C++ に対する公式の姿勢に賛同しない人が増えているようです。

現代の C++ はメモリ安全であり、すべてのオペレーティング システムは C または C++ でプログラムされていると信じている人もいます。 C++ はメモリ安全とは言えないとしても、現代の C++ にはより多くの「ガードレール」があり、コストは低いか無料であると考える人もいます。

メモリ安全性のために「選ばれた」Rustについては、サポートレベルがそれほど高くなく、政府システムに統合する価値がないと感じる人もいます。

Rust の他に、メモリセーフなプログラミング言語にはどのようなものがありますか?

2022年11月、国家安全保障局(NSA)は、メモリ安全とみなされるプログラミング言語の詳細を記載したサイバーセキュリティ情報シートを公開しました。

  • さび
  • 行く
  • C#
  • ジャワ
  • 迅速
  • JavaScript
  • ルビー
  • パイソン
  • デルファイ/オブジェクトパスカル
  • エイダ

上記のプログラミング言語はどれくらい人気がありますか? 2024年2月のプログラミング言語人気指数TIOBEによると、プログラミングに関しては、Pythonが1位、C#が5位、Javaが4位、JavaScriptが6位、Goが8位、Delphi/Object Pascalが12位、Swiftが16位、Rustが18位、Rubyがかろうじて20位となっています。

ご覧のとおり、NSA が選択した言語のほとんどがトップ 20 に入っていますが、Ada だけがそこになく、トップ 10 には 5 つしかありません。

出典: https://www.tiobe.com/tiobe-index/

この報告書では、ソフトウェアのセキュリティをより適切に測定することも求めています。 ONCD は、より優れたメトリクスにより、技術プロバイダーは脆弱性が問題になる前に、より適切に計画、予測、軽減できるようになると考えています。

報告書では、NASAが「成功した失敗」と分類したアポロ13号ミッションについても検証した。ミッション自体は壊滅的な失敗に終わり、3人の宇宙飛行士は即興で修理を行い、いくつかの問題を緩和して無事に帰還した。報告書には次のように記されている。「メモリセーフなコードは宇宙計画にとって極めて重要である。」人類による宇宙探査では、将来の事故を避けるために、できる限りカーネルに近いメモリセーフな言語を使用する必要があります。

世界がデジタル化されるにつれて、悪いコードが悪意を持って使用される可能性があるため、より優れたコーディングがますます重要になります。

さび

Rust は、Mozilla によって開発された汎用コンパイル型プログラミング言語です。設計原則は「安全性、並行性、実用性」であり、関数型、並行型、手続き型、オブジェクト指向のプログラミング スタイルをサポートします。

Rust 言語の最も顕著な利点は、追加のパフォーマンスの低下なしにメモリの安全性を保証できることです。従来のシステムレベルのプログラミング言語(C/C++)の開発プロセスでは、ヌルポインター、ワイルドポインター、メモリリーク、メモリ範囲外、セグメンテーション違反、データ競合、反復子障害など、さまざまなメモリエラーによるクラッシュやバグが頻繁に発生します。

メモリの問題は、プログラムの安定性とセキュリティに影響を与える大きな隠れた危険であり、開発効率に影響を与える大きな要因です。二大テクノロジー企業であるG​​oogleとMicrosoftは、自社の重要な製品プログラムにおけるセキュリティ問題の70%はメモリの問題が原因であると述べており、両社はメモリの安全性の問題を解決するためにRust言語の使用を検討している。

さらに、Rust は優れたクロスプラットフォーム機能を備え、クロスコンパイルをサポートし、組み込み環境にも適しています。

ただし、Rust 言語にはいくつかの厄介な欠点もあります。

まず、Rust には「lifetime」など特殊な構文があるため、初心者がとっつきにくい部分があります。それに比べて、PythonやJavaなどの言語はよりシンプルで、学習しやすいです。しかし、すでに C++ を知っていれば、Rust は C++ の構文を多く借用しているので、学習ははるかに簡単です。

第二に、Rust 言語のコンパイラ チェックは非常に厳格であり、開発プロセスの大部分はコンパイルの問題の解決に費やされます。ただし、コンパイルされると、開発者はメモリの安全性、メモリ リーク、その他の問題を心配する必要がなくなり、ビジネス ロジックにのみ集中できるようになります。

<<:  Microsoft の 37 ページの論文では、Sora をリバース エンジニアリングしています。どのような結論に達したのでしょうか。

>>:  能力と信頼性の両方を備えることはできますか? GPT-4やGeminiなどのマルチモーダルモデルの評価レポートはこちら

ブログ    
ブログ    
ブログ    

推薦する

...

...

声を上げてください! MakeItTalkの魔法でモナリザと会話できる

最近、マサチューセッツ大学アマースト校のヤン・チョウ博士とそのチームは、「MakeItTalk」と呼...

Pytorch の最も重要な 9 つの操作! ! !

今日は、pytorch についてお話します。今日は、9 つ​​の最も重要な pytorch 操作をま...

...

4つの基本的なソートアルゴリズムのPHPコード実装

アルゴリズムはプログラムの核であり、アルゴリズムの品質がプログラムの品質を決定すると多くの人が言いま...

人工知能技術は3つのレベルで社会を変える

[[282875]] 数十年前、日本は避けることの難しい一連の長期的経済課題に直面していました。 1...

APP はユーザーのプライバシーと顔認識生体認証情報を深く掘り下げ、「データ疫病」の到来に注意

315 Gala で摘発された企業は、業界内ではほんの少数派です。ユーザーのプライバシーを侵害するア...

NLP入門: 中国語のルールベースの単語分割法を3つ教えます

自然言語理解において、トークンは独立して動作できる意味のある最小の言語コンポーネントです。単語の識別...

ケーキを食べて、ケーキも残すことはできないのですか?清華大学チーム、非常に正確で解釈可能な分類モデルを提案

[[432462]]既存の機械学習分類モデルは、性能と解釈可能性に基づいて、大まかに 2 つのカテ...

AI 音声ジェネレーターとは何ですか? どのように機能しますか?

近年、AI 音声ジェネレーターは、人々が機械と対話し、デジタル コンテンツを受け取る方法を変える強力...

顔認識技術のまとめ:従来の方法からディープラーニングまで

1970 年代以来、顔認識はコンピューター ビジョンと生体認証の分野で最も研究されているトピックの ...

世界の自動運転事故を比較することで、そのデータと真実が明らかになった。

最近起きた自動車事故は、被害者の身元が明らかになったこと、運転支援技術の台頭と普及、中国の有名自動車...

はるか先へ! BEVHeight++: 道路脇の視覚的な 3D オブジェクト検出のための新しいソリューション!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

データ センターをよりスマートに: 人工知能はどのように役立つのか?

[[382637]]データセンターが国の経済の原動力となるにつれ、人工知能を導入することでより高い...