非常に人気のある C++ プログラミング言語の開発に取り組んでいるグループは、この言語を「メモリ セーフ」にする道筋を示しました。
Rust は、Microsoft、AWS、Meta、Google の Android オープン ソース プロジェクト、C++ が主流の Chromium プロジェクト (一種)、Linux カーネルなどに採用されており、メモリ セキュリティの欠陥を減らすのに役立っています。 国家安全保障局 (NSA) でさえ、開発者が戦略的に C++ から離れ、C#、Java、Ruby、Rust、および Swift に移行することを推奨しています。
C++ のセキュリティに関する広範な警告により、C++ の作成者である Bjarne Stroustrup を含むグループが C++ Standards Committee Working Group 21 (WG21) に提出した論文で詳述されている「C++ の安全性」への道筋を描く動きが促されています。が今月リリースされました。
この論文は、技術的な変更を主張し、C++ がその「イメージの問題」に安全に対処する方法を検討しています。
また: プログラミング言語: この古くからの人気が再び上昇している理由
Apple は、オペレーティング システムの C/C++ コードのセキュリティ問題を浮き彫りにした最新のテクノロジ ジャイアントです。 同社は、iOS、macOS、watchOS などのカーネルである XNU のメモリの安全性に取り組んでいます。
「今日のほぼすべての一般的なユーザー デバイスは、C や C++ などのプログラミング言語で記述されたコードに依存しているため、”メモリが安全でない” と見なされます。つまり、特定のクラスのソフトウェア バグを防止する強力な保証を提供していないため、メモリの安全性が向上します。業界全体のエンジニアリング チームにとって重要な目標です」と Apple は 10 月に説明しました。
C++ は 1985 年に登場し、そのパフォーマンスも理由の 1 つであり、現在でも最も人気のある言語の 1 つです。 これは国際標準化機構 (ISO) によって標準化されており、その最新バージョンは C++20 であり、2020 年 12 月に最終化されました。次の標準は C++2023 と呼ばれる可能性があります。 一方、Rust は 2015 年にバージョン 1.0 に達し、標準化されていませんが、貢献者のコミュニティによって推進されています。
Stroustrup と彼の仲間の論文では、組み込み、医療、航空宇宙、アビオニクスなどの安全性が重要な分野での C++ の使用について取り上げています。 彼らは、自動運転車、コネクテッド クリティカル インフラストラクチャ、メッセージング アプリなどの台頭により、「安全性に関するより正式な制約に対する要求が高まっている」ことを認めています。
「組み込み、自動車、アビオニクス、医療、原子力などのアプリケーションは、C++ でプログラムされた場合に安全性を必要とする明らかなアプリケーションでした」と著者は書いています。
「その過程で、これらのほとんどに対して開発された安全ガイドラインがありました。インターネットの爆発により、ブラウザーを介した商取引が増えるにつれて、ハッキングの標的となるブラウザーが増えました。元は Mozilla で、C++ の上に構築された Rust がポスターになりました。安全なブラウザー言語の子. ドライバーや Linux カーネルなど、ブラウザーを超えたより多くのアプリケーションで RUST の安全性の主張がテストされるのをますます見てきました.”
この論文は、NSAが組織に向けた最近の勧告に言及し、「C/C++などの固有のメモリ保護をほとんど、またはまったく提供しないプログラミング言語から、可能な場合はメモリセーフ言語への戦略的移行を検討する」ことを検討しています。
「最近では、NIST と NSA からの C/C++ を使用しないよう安全アプリケーションに助言する米国政府の出版物に関する 2 つの進展があり、C++ 内の安全性に関する幅広い議論に火をつけたようです。NIST と NSA の両方が、別の言語を使用することを提案しているようです。」紙は言います。 リスクは、「非政府組織が政府の指令を無視する可能性があります AND/OR、政府の指令が C++ を特定の市場から締め出し、間接的に C++ から遠ざけることにつながる」ということです。
この論文は、安全性に関してC++にはイメージ上の問題があると指摘していますが、それは他の言語が安全であると売り込んでいることに起因していると述べており、著者は、C++が近年達成した安全性の進歩を無視していると主張しています.
「少なくとも公共のイメージでは、C++ は安全性に関して他の言語よりも競争力がないように見えます。これは、C++ よりも積極的に/積極的に/厚かましく/有能に自分自身を宣伝する言語と比較すると特にそうです。ある意味では、それらは特にエグゼクティブ スイートの安全性の定義を満たしているようであり、エグゼクティブが C++ からの切り替えを求めるのは魅力的です」と論文は述べています。
また: ローコードは、まだ働きすぎの IT 部門の治療法にはなりません
「しかし、ノイズの中で失われたのは、C++ が、ぶら下がっている問題、リソースとメモリの安全性の問題で近年大きな進歩を遂げたことです…C++ は、仕様、ユーザーと実装者のアクティブなコミュニティを持つことから恩恵を受けています。他の「安全な」言語少なくともまだ仕様さえないかもしれません.安全性に関するこれらの重要なプロパティは無視されています.広告についてはあまり関心がありません.C++はまた、半世紀近くにわたって何百万行ものコードで長年のテストと戦いのテストを受けています.”
他の言語はそうではないと主張しています。
「C++がそのトーチを別のより優れた言語に引き継ぐ時が来るかもしれませんが、現在の競争相手はどれもそのようなものではありません.私たちは何百万行もの既存のコードを決して放棄すべきではありません。そのうちのいくつかは安全のために叫びません.私たちはC++ で安全性をサポートすることは、私たちの時代の問題の 1 つであることを認識する必要があります。」
この論文によると、C++ 標準委員会 WG21 は、安全性のための変更は、過去に多くの作業を行ってきたツールだけでなく、言語/コンパイラおよびライブラリでも「目に見える」ように採用する必要があるという考えを支持しています。安全性に関して C++ のイメージに対処するのに役立ちます。