NSAは開発者にメモリセーフ言語への切り替えを促している

アプリケーション開発者は、最新の言語に変更することで、メモリの脆弱性を含むコードの可能性を減らすことができると、米国国家安全保障局 (NSA) は述べています。

アドバイザリで、政府機関は開発者に C と C++ をやめて、C#、Go、Java、Ruby、Rust、Swift などの言語に移行することを検討するよう促しています。

これらの言語では、メモリは自動的に管理されると NSA は述べています。 メモリ保護を実装するためにプログラマがコードを追加する必要はありません。

「悪用可能な脆弱性の大部分を含むソフトウェアのメモリの問題
存在します」とエージェンシーは述べています。 たとえば、Microsoft の調査によると、2006 年から 2018 年にかけて、脆弱性の 70% はメモリの安全性の問題が原因でした。 グーグルも
は、その数年間で同様の割合のメモリの安全性の脆弱性を発見しました。
クロム ブラウザ。

C や C++ などの一般的に使用される言語は、多くの自由と柔軟性を提供します。
メモリ管理では、アドバイザリが認めています。 しかし、メモリ参照に対して必要なチェックを実行するために、プログラマーに大きく依存しています。 「単純なミスが、悪用可能なメモリベースの脆弱性につながる可能性があります」と、それは述べています。 また、ソフトウェア分析ツールはメモリ管理の問題の多くのインスタンスを検出でき、動作環境オプションもある程度の保護を提供できますが、メモリセーフなソフトウェア言語によって提供される固有の保護により、ほとんどのメモリ管理の問題を防止または軽減できます。

「メモリセーフ言語は、さまざまな程度のメモリ使用保護を提供します。したがって、コンパイラオプション、ツール分析、オペレーティングシステム構成など、利用可能なコード強化防御を保護にも使用する必要があります。」 しかし、「メモリに安全な言語と利用可能なコード強化防御を使用することで、多くのメモリの脆弱性を防止、軽減、またはサイバー攻撃者による悪用を非常に困難にすることができます」と付け加えています。

アドバイザリには、いくつかの一般的なメモリの問題がリストされています。 1 つは「バッファ オーバーフロー」と呼ばれ、配列の境界外でデータがアクセスされる場合です。 その他の一般的な問題は、メモリ割り当てに関連しています。 言語は、プログラムが実行されているときに新しいメモリ位置を割り当ててから、メモリの解放または解放とも呼ばれるメモリの割り当てを解除できます。
メモリは不要になりました。 しかし、開発者がこれを慎重に行わないと、新しい
メモリは、プログラムの実行中に何度も割り当てられる可能性があります。 その結果
メモリは不要になったときに常に解放されるとは限らないため、最終的にプログラムが使用可能なメモリを使い果たす可能性があります。

メモリの問題を悪用することで、悪意のあるアクターが異常な入力をシステムに入力できる可能性があります。
プログラムで、メモリへのアクセス、書き込み、割り当て、または割り当て解除を引き起こします
意外な方法。 アドバイザリによると、場合によっては、悪意のあるアクターがこれらのメモリ管理の誤りを悪用して、機密情報にアクセスしたり、不正なコードを実行したり、その他の悪影響を引き起こしたりする可能性があります.

成熟したソフトウェア開発インフラストラクチャを 1 台のコンピューターから移行するのは簡単なことではありません
NSA は認めている。 熟練したプログラマーは新しい言語でトレーニングを受ける必要があり、新しい言語を使用すると効率が低下します。 プログラマーは学習曲線に耐え、「初心者」の間違いを乗り越えなければなりません。 別の
アプローチは、メモリセーフな言語に熟練したプログラマーを雇うことです。
既存のコード ベースとドメインを理解するための独自の学習曲線
ソフトウェアが機能します。

しかし、シフトは必要だと考えています。

Leave a Comment

Your email address will not be published. Required fields are marked *