ホワイトハウスは開発者に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などのマルチモーダルモデルの評価レポートはこちら

ブログ    

推薦する

ゲーム「原神」では実際に深層強化学習が使われ、オープンソース化されている

[[425402]] 『原神』で魚が釣れないとまだ悩んでいますか?テイワットでの釣りについての遅れば...

人工知能翻訳は、障害なく外国人と恋に落ちるのに役立ちます

AI 音声翻訳の分野では、ノイズは対処しなければならない主要な課題の 1 つです。この装置は研究室や...

会話型AIチャットボットの成功を測定する方法

[[385791]] 【51CTO.com クイック翻訳】組織は、特にヘルスケア分野において、データ...

ディープラーニングはフロントエンド開発ツールになりました:UI設計図に基づいてコードを自動生成します

UI デザイナーとフロントエンド エンジニアの間にニューラル ネットワークが必要になる場合があります...

マイクロモード動的顔認識制御システムソリューション

マイクロモードの動的顔認識制御システム、インテリジェントビデオ監視は、元のビデオ監視に基づいてインテ...

量子コンピュータ、モノのインターネット、サイバーセキュリティの相互作用

量子コンピュータは多くの産業の運営方法を変えるでしょう。量子コンピューティングは社会に大きな影響を与...

長文情報の精度はChatGPTを上回る、Metaは大規模モデルの幻覚を軽減する新手法を提案

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

TENSORFLOW に基づく中国語テキスト分類のための CNN と RNN

[[211015]]現在、TensorFlow のメジャーバージョンは 1.3 にアップグレードさ...

...

南京科技大学とオックスフォード大学は、1行のコードでゼロショット学習法の効果を大幅に向上させるプラグアンドプレイ分類モジュールを提案した。

ゼロショット学習は、トレーニングプロセス中に出現しなかったカテゴリの分類に重点を置いています。意味記...

宜春市はファーウェイと提携し、ビッグデータと人工知能で市のデジタル変革を推進

2019年11月21日〜22日、第一回ファーウェイ宜春市ビッグデータ・人工知能サミットフォーラムと宜...

AIは当面、都市のゴミ出しを支援できないかもしれない

上海がゴミの分別を推進し始めて以来、クレイジーな上海寧は多くのジョークや絵文字を投稿し、大多数のネッ...

スタートアップ企業がAIを活用して声優の「デジタルツイン」を開発し、声優自身の声を使ったコンテンツを生成する

ブルームバーグが14日に報じたところによると、声優のシッキー・ジョーンズがAIスタートアップ企業モー...

...

AI が Sogou 入力方式の新バージョンを強化: 音声認識は 9 つの言語をサポート

最近、Sogou 入力方式がバージョン 10.8 に更新されました。新バージョンでは、主に音声入力と...