NSA は、メモリセーフなプログラミング言語を使用するよう組織に促します • The Register

NSA は、組織が C や C++ などのプログラミング言語からメモリセーフな代替言語 (C#、Rust、Go、Java、Ruby、Swift) に移行することを奨励するガイダンスをリリースしました。

「NSAは、組織が可能な場合はメモリセーフ言語を使用し、コンパイラオプション、ツールオプション、オペレーティングシステム構成などのコード強化防御を通じて保護を強化することを推奨しています.

組織の主な懸念は、メモリ管理が不十分なコードの脆弱性が悪用される可能性があることです。これは、プログラマーにより多くのオプションと柔軟性を与える言語でより頻繁に発生します。

NSA は、攻撃者がバッファ オーバーフローやソフトウェア メモリ割り当ての欠点を利用してシステムに侵入する例を挙げています。

一方、メモリセーフ言語は、コンパイル時チェックと実行時チェックの組み合わせを使用して、プログラマーのミスによって引き起こされる脆弱性を自動的にブロックします。 すべての間違いではありませんが、少しでも役に立ちます。 たとえば、メモリ ポインターの安全でない使用や同時実行スレッド間の競合に関連するバグは、これらの言語でキャッチできます。

「悪意のあるサイバー攻撃者は、これらの脆弱性を悪用して、リモートでコードを実行したり、その他の悪影響を及ぼしたりする可能性があります。これは、多くの場合、デバイスを危険にさらし、大規模なネットワーク侵入の第一歩となる可能性があります。」 [PDF] NSA。

まあ、明らかにそれは避けるのが一番です。

NSA のサイバーセキュリティ テクニカル ディレクターである Neal Ziring 氏は、このような脆弱性を排除するソフトウェアを開発する際には、メモリセーフな言語やその他の保護機能を一貫して使用する必要があると述べています。

ただし、NSA は、「メモリ セーフ」という言葉は少し間違った呼び方であり、その概念はスペクトル上に存在することを認識していました。

メモリセーフであることには、独自の課題もあります。 たとえば、固有の保護レベルを追加すると、最初は開発が遅くなる可能性があります。これは、特定のツールチェーンによってメモリが安全でないコードがビルドされないためです。 ある言語から別の言語への移行は、可能であれば、ASCII では昔からの苦痛です。 たとえば、Rust は強力ですが、学習曲線はかなり急勾配です。

アナリスト企業の SlashData によると、Rust ユーザーは 2020 年第 1 四半期から 2022 年第 1 四半期の間に 3 倍になりました。 Go も多作であり、330 万人の開発者のコ​​ミュニティを持っていると記録されています。 JavaScript は、1750 万人の開発者に最も人気のある言語として 10 年間にわたってその地位を占めてきました。

言語はどこにでもありますが、C と C++ が特に問題があるという NSA の主張は一般的な意見です。 Microsoft Azure の CTO である Mark Russinovich は 9 月に、長年の実績がある 2 つの言語での新しいプロジェクトを中止する時期が来たと主張しました。

CTO は、新しいツールを Rust に偏らせるつもりはあるものの、「数十年 (またはそれ以上) にわたって維持および進化される膨大な量の C/C++ が存在する」ことを認めました。彼のツイートの前夜の C/C++ コード。

「NSAは正しいことをしていると思う」とサイバーセキュリティ会社AcronisのCISOであるKevin Reed氏は語った。 登録簿。

「アドレス空間レイアウトのランダム化 (ASLR) やスタック ガードなどの軽減策は、完全な解決策ではなく、応急処置のようなものです。メモリ セーフな言語に移行することは、はるかに優れた方法です」と Reed 氏は付け加え、Russinovich 氏の意見に同調しました。

「何年にもわたって書かれた C および C++ コードの量は膨大であり、明日 Rust and Go を使い始めたとしても、この混乱を一掃するのに何十年もかかるため、すぐに効果が現れるとは思えません」と Reed 氏は述べています。 . ®

Leave a Comment

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