ソフトウェアのメモリの安全性を向上させる取り組みが勢いを増しています

企業はメモリセーフな言語を使用するか、脆弱性にさらされるリスクを冒すべきであると、技術専門家や消費者擁護者は警告しています。

製品テストを行う非営利団体である Consumer Reports は、今月、企業が C や C++ などの言語から Rust などのメモリ セーフなプログラミング言語に移行することを支持するメモリ セーフティに関するレポートを発行しました。

メモリの安全性とは、プログラミング言語が、クラッシュ、データの破損、セキュリティの脆弱性につながる可能性がある、バッファ オーバーフロー、ヌル ポインタ参照、解放後の使用エラーなど、特定の種類のメモリ関連のエラーを防止することを意味します。

たとえば、バッファ オーバーフロー攻撃では、悪意のあるデータを巧妙に挿入することで、攻撃者がプログラムを制御し、その場でプログラムを書き換えて悪質なことを実行できると、Forrester Research のアナリスト、アンドリュー コーンウォール氏は述べています。

「メモリの安全性は、常にソフトウェア業界の欠陥の根源でした」と彼は言いました。

C/C++ プログラマーは伝統的に、開発はメモリセーフまたは高速であると信じていましたが、その両方ではない、と Cornwall 氏は言います。 Java や Python などの言語は、プログラマーのメモリを管理する仮想マシン上で実行されますが、実行時のオーバーヘッドが発生します。

「しかし、最近では、安全でないコードを簡単に分離できる新しい手法がいくつか見られるようになりました」と、コーンウォール氏は述べています。 「Rust は、コンパイラ自体によって課される静的メモリの安全性を確保できることを実証しました。」

メモリの安全性の勢いが高まる

今週開催された Usenix Enigma 2023 カンファレンスのパネリストには、Consumer Reports と非営利の Internet Security Research Group (ISRG) の代表者が含まれ、メモリの安全性に関する脆弱性を軽減するというトピックについてさらに議論しました。 ISRG は、Transport Layer Security 証明書の広範な採用のきっかけとなったプロジェクトである Let’s Encrypt でおそらく最もよく知られています。

2020 年、ISRG はメモリの安全性を向上させるためのプロジェクトを開始しました。 Consumer Reports Security Planner のプロダクト マネージャーである Yael Grauer 氏によると、メモリの安全性についての考えは、Consumer Reports でもしばらくの間煮詰められていました。

「少なくとも 2021 年 5 月から、メモリの安全性について社内で話し合っていました」と Grauer 氏は述べています。

この話題が最近世間の注目を集めたのは、さまざまな組織や個人による長年の努力の集大成であると彼女は言いました.

病院のシステムや公共サービスが閉鎖され、人々が治療やサービスを受けるのを待たなければならない場合、それがマルウェア攻撃などによるものであるかどうかにかかわらず、多くの場合、メモリの安全性がその理由です。

ジョシュ・アスInternet Security Research Group の共同創設者兼エグゼクティブ ディレクター

たとえば、先月の議会歳出予算法案には、政府のメモリの安全性を調査するために国家サイバー局長を必要とする規定が含まれていました。 同じ月に、Google は Android 13 をリリースしました。これは、新しいコードの大部分がメモリセーフな言語で書かれた最初の Android リリースです。 さらに、Rust の初期サポートを含む Linux カーネルの 6.1 LTS バージョンが一般的に使用できるようになりました。 一方、グラウアー氏によると、11 月には、国家安全保障局が開発者に C と C++ から戦略的に移行することを推奨しました。

ISRG の共同創設者兼エグゼクティブ ディレクターである Josh Aas 氏は、この勢いの主な要因は、メモリの安全性の脆弱性がシステムをリスクにさらす可能性があることであり、それが経済的損失や個人情報の盗難などの深刻な結果につながる可能性があると述べています。

「それは大きな問題だ」と彼は言った。 「病院のシステムや公共サービスが閉鎖され、人々が治療やサービスを受けるのを待たなければならない場合、それがマルウェア攻撃によるものであろうとなかろうと、多くの場合、メモリの安全性がその理由です。」

メモリセーフ言語の支持者は Rust を支持

テクノロジー業界の基本的なソフトウェアの多くは、C または C++ で書かれています。 Rust が開発されるまでは、C/C++ に代わる実行可能な手段はなかった、と Aas 氏は言います。

「私たちは今、パフォーマンスを犠牲にすることなく安全性を確保できるRustという良い選択肢を少なくとも1つ持っているところまで来ています」と彼は言いました。

Rust と Swift に加えて、メモリセーフな言語には Go、Python、JavaScript があります。 しかし、Rust はパフォーマンスと安全性から Linux カーネルに特に適している、と Aas 氏は述べています。 Linux カーネルの背後にある言語である C には、メモリの安全性に関する脆弱性の長い歴史があります。

「Linux カーネルに優れたパフォーマンスと必要な最新の機能を提供するメモリセーフな言語は他にありません」と Aas 氏は述べています。

メモリ セーフへの第一歩は、メモリ セーフな言語で新しいモジュールとプログラムを作成することだと Aas 氏は述べています。 開発者は、最もセキュリティ クリティカルなモジュールから始める必要があります。

「メモリの安全性の脆弱性が過去に発生した場所に関するデータがある場合は、過去の脆弱性データを調べて、それらがどこで発生したかを調べることから始めることができます」と Aas 氏は述べています。

そのようなタイプのデータを利用できない開発者は、ネットワーク上でデータを送受信するコンポーネントなど、ネットワーク境界内のコンポーネントを調べることができます。 これは、最も深刻な脆弱性が発生する傾向がある場所です。 しかし、開発者は、認証によって特権の境界にまたがる、または管理するソフトウェアにも目を向けることができる、と彼は言いました。

結論として、C と C++ は安全な言語ではないため、開発者はそれらから離れる必要がある、と Aas 氏は述べています。

「すぐにすべてのコードを取り除く未来はないので、彼らは長い間存在するだろう」と彼は言った. 「しかし、それを取り除くプロセスを開始する必要があります。」

Stephanie Glen は、フロリダ州ジャクソンビルを拠点とするライター、ソフトウェア開発者、YouTuber です。 彼女はで到達することができます [email protected] またはLinkedInで。

Leave a Comment

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