C++ の作成者である Bjarne Stroustrup は、米国国家安全保障局 (NSA) が最近 C++ の使用を推奨しなかったことを受けて、由緒あるプログラミング言語を擁護しています。 NSA は、代わりにメモリセーフな言語を使用するよう組織にアドバイスしています。
1979 年に C++ を設計した Stroustrup は、ソフトウェア メモリの安全性に関する機関の 2022 年 11 月の速報に応えて、より優れた、より安全で効率的な C++ を実現するための数十年にわたる取り組みを強調しました。 「特に、C++ コア ガイドラインに関する作業は、そのような強力な保証がなくても管理できるコード ベースを中断したり、追加のツール チェーンを導入したりすることなく、静的に保証されたタイプ セーフでリソース セーフな C++ を必要とする人々に提供することを具体的に目指しています」と Stroustrup 氏は述べています。公開された応答で。
NSA の速報では、C/C++ の使用を推奨していません。プログラマーがコードの安全性を確認するために厳密なテストを頻繁に実行しているにもかかわらず、ソフトウェアのメモリの問題は、悪用された脆弱性の大部分を依然として把握しているからです。 「NSA は、C/C++ などの固有のメモリ保護をほとんど、またはまったく提供しないプログラミング言語から、可能であればメモリセーフな言語への戦略的移行を検討するよう組織にアドバイスしています」と NSA は述べています。
代理店は、C#、Go、Java、Ruby、Rust、Swift などのメモリセーフな言語を挙げました。」 NSA は、C や C++ などの一般的に使用される言語は、メモリ参照のチェックを実行するためにプログラマーに大きく依存している一方で、メモリ管理に自由と柔軟性を提供すると述べています。
しかし、Stroustrup 氏は安全性の向上を強調しました。 「今、私が気にかけている用途の範囲で、これらの「安全な」言語のいずれかが C++ よりも優れていると考えた場合、C/C++ の衰退を悪いこととは考えませんが、そうではありません。 また、説明したように、「安全」はメモリの安全性に限定されており、言語が何らかの形式の安全性とセキュリティに違反するために使用される可能性がある (そして違反する可能性がある) 他の多くの方法を除外しています。」
彼はまた、NSA のメモが C++ を古い C 言語と組み合わせていることを嘆いた。 C++ は、もともと C with Classes と呼ばれていましたが、C の拡張版です。「あまりにも一般的であるため、C と C++ を 1 つのカテゴリ C/C++ にひとまとめにし、30 年以上の進歩を無視しています。」 Stroustrup 氏は先週、InfoWorld への電子メールで次のように付け加えました。 これらの弱点の多くは、C++ では回避できます。 通常は、プログラマーの意図をより直接的に表現する、より効率的なコードを作成することによって行われます。」
Stroustrup 氏は電子メールの中で、安全性の定義を共有しました。彼は型とリソースの安全性を目指しており、すべてのオブジェクトがその型に従って使用され、リソースが漏洩することはありません。 C++ の場合、これは実行時の範囲チェック、ダングリング ポインターによるアクセスの排除、およびキャストとユニオンの誤用の回避を意味します。 C++ は、コンテナー、スパン、range-for ループ、バリアントなどの高レベルの機能を提供し、生産性や効率を損なうことなく保証を提供できます。 NSAが挙げたいわゆる安全な言語について、Stroustrup氏は、静的に検証されていないコードを通じてすべての言語が脆弱であると述べました。 さらに、すべてのシステムはハードウェアを使用する必要があり、効果的なハードウェア アクセスが安全であることはめったにありません。
Stroustrup は、C++ を安全に使用するための戦略を次のように概説しています。
- 安全でないコードが実行されていないことを確認するための静的分析。
- 産業規模の静的解析を実行可能にするためにコードを簡素化するコーディング ルール。
- このような単純化されたコードをかなり簡単に作成し、必要に応じて実行時チェックを行うためのライブラリ。
Stroustrup 氏によると、何百万人もの C++ プログラマーと数十億行の C++ コードが存在するという。 この言語の現在の主な用途には、航空宇宙、医療機器、AI/ML、グラフィックス、生物医学、高エネルギー物理学などがあります。
NSA は、メモリ管理が「メモリ セーフ」言語であっても完全に安全ではないこと、および静的および動的アプリケーション セキュリティ テスト (SAST および DAST) などのメカニズムを使用して、いわゆる非メモリ セーフ言語でメモリの安全性を向上できることを認めました。言語。 しかし、SAST も DAST も、非メモリセーフ コードを完全に安全にすることはできない、と NSA は述べています。
著作権 © 2023 IDG Communications, Inc.