先週、米国政府は「Back To The Building Blocks: A Path Toward Secure and Measurable Software」というレポートを発表しました。このレポートは、米国のサイバーセキュリティ戦略の一環であり、メモリ安全の脆弱性や品質指標を含む複数の分野に焦点を当てています。
またこのレポートは多くのオンライン雑誌で取り上げられ、CとC++のプログラミング言語に対する大きな反響がありました。
このブログでは、これらの記事の一部を紹介したいと思います。
- White House urges developers to dump C and C++ by InfoWorld
- White House urges developers to avoid C and C++, use ‘memory-safe’ programming languages by Tom’s Hardware
- White House urges tech companies to adopt secure program languages by readwrite
Table of Contents
米国政府のレポートは、メモリ安全の言語についてどのように報じていますか?
このレポートでは、「メモリ安全の脆弱性」に重点が置かれており、「メモリ安全に関連する特徴を欠き、また重要なシステム全体への普及率が高いプログラミング言語」を取り上げています。さらに同誌は、「サイバーセキュリティとインフラセキュリティ機構(CISA)のオープンソースソフトウェアセキュリティロードマップを推奨し、当初からメモリ安全の高いプログラミング言語を使用すべき」と推奨しています。
参考文献は、「NSA Cybersecurity Information Sheet on Software Memory Safety(ソフトウェア・メモリ安全に関するNSAサイバーセキュリティ情報シート)」のレポートです。このドキュメントでは、メモリ安全とは何かという点について、より詳細に説明しており、型の安全性、安全なメモリの割り当てとメモリの解放(場合によってはガベージコレクタを伴う)を組み合わせた内容の説明をしています。
この文献の核心にふれた段落は、以下の通りです。
「メモリ安全の言語を使用すれば、プログラマが特定の種類のメモリ関連の問題を引き起こすことを防ぐことができます。 メモリはコンピュータ言語の一部として自動的に管理されるため、メモリ保護を実装するためにプログラマがコードを追加する必要はありません。この言語は、コンパイル時と実行時のチェックを組み合わせて自動的に保護します。これらの言語固有の機能により、プログラマが意図せずにメモリ管理ミスを引き起こすのを防ぎます。メモリ安全の言語の例としては、Python®、Java®、C#、Go、Delphi/Object Pascal、Swift®、Ruby™、Rust®、Adaなどがあります。ただし、メモリ安全の言語であっても、完全なメモリ管理の安全が担保されるわけではありません。」
NSAはDelphiをメモリ安全の言語としてリストアップしていますか?
はい、Delphiはメモリ安全の言語としてリストアップされています。一部の記事では、当初、最も人気のある言語の一部のみを含み、Delphi を除いた安全な言語の短いリストを報告していました。 このリストは後に NSA のレポートに合わせて修正されました。
Delphiコミュニティでは、この言語にはメモリ安全の特徴の 1 つであるガベージ コレクションが欠けているため、この言語を安全かどうかという観点から議論が行われてきました。ただし、正式な評価は複数の根拠に基づいて、他の要素も考慮して行われました。
- 安全なプログラミング言語の中核となる機能の 1 つは、強力な型システムを持ち、実行時ではなくコンパイル時にデータ型のマッピングを検証することです。動的言語は、たとえガベージコレクタを備えていても、安全性に影響を与える実行時エラーにさらされる可能性があります。
- もう1つの要素は、一般的なコードでポインタの使用やより直接的なメモリ管理に頼る必要がないことです。Delphiは直接メモリアクセスの使用をブロックしませんが、これはかなり珍しいことです。Delphiは、ガベージコレクタ(GC)がなくてもメモリ管理を自動化および簡素化するメカニズムを提供しています。
メモリ安全の言語を使用すると、セキュリティリスクから完全に保護されますか?
もう一つの一般的な考察は、メモリの安全は目標として示されていますが、絶対的なものではないということです。例えば、主要レポートでは、実行タイミングの予測可能性が極めて重要となるアプリケーションの種類があることを強調しています(航空宇宙産業を言及)。
これは、ガベージコレクタが予期せぬタイミングで起動すると、重要なタイミングでコードのプログラム実行に影響を与える可能性があるシナリオです。Delphi は、まさにこの理由により、産業オートメーション分野で他の一般的な言語と比較して大きな優位性を持っています。C++言語と比較して、より高度で、それでいて単純性を維持しながら、直接メモリ制御が可能になります。
NSA と米国政府は、Delphi をメモリ安全の言語として挙げていますが、他に何を推奨していますか?
このレポートは、メモリ安全の言語への移行を推奨する一方で、特にセキュリティ面に重点を置いた静的コード解析のための形式的手法の使用についても強調しています。エンバカデロでは、Delphiでもこの分野への関心が高まっているため、この分野で役立つサードパーティツールを推進してきました。
また、メモリセキュリティのハードウェアベースまたはCPU レベルの適用に焦点を当てた長いセクションもあります。同じ分野では、元の NSAレポートは、制御フローガード(CFG)、アドレス空間配置のランダム化(ASLR)、データ実行防止(DEP)などの機能を活用することの重要性を強調しています。これらのセキュリティ設定の一部は、最近のバージョンのDelphiで強化され、現在は新しいプロジェクトのデフォルトになっています。
サプライチェーンセキュリティとは?
最後に「サプライ チェーン セキュリティ」とも呼ばれるライブラリの依存関係チェーンのセキュリティをカバーする別の長い領域があり、オープンソースライブラリを含むライブラリの安全性を評価するための正式な手法の使用を推奨しています。
多くのプロジェクトに多数の依存関係があるため、プロジェクトのコードではなく、使用されているライブラリに起因するセキュリティリスクが拡大しているという懸念が高まっています。この点に関して、レポートには、Log4j Java ライブラリの Log4Shell 脆弱性について詳しく説明されています。このライブラリの脆弱性は、Javaのようなメモリ安全の言語に影響を及ぼし、レポートの言葉を借りれば、「悪意のある攻撃者が世界中のコンピュータシステムを危険にさらす可能性のある重大な弱点」を示しています。レポートでは続けて、「この脆弱性は、世界中で驚異的なイノベーションを促進するオープンソース エコシステムのセキュリティを確保する重要な必要性を浮き彫りにした」と指摘しています。
エンバカデロはセキュリティリスクに対してどのような取り組みを行っていますか?
政府機関からあらゆる規模の企業に至るまで、あらゆるレベルでソフトウェアセキュリティに対する関心が高まっていることは明らかです。Delphiがメモリ安全の言語としてリストアップされている今回のホワイトハウスとNSAのレポートが発表される以前から、エンバカデロはすでにセキュリティが顧客の間で高まる懸念であることを認識していました。エンバカデロでは、最新のセキュリティ技術に対するDelphiのサポートへの投資と改善に引き続き注力し、今後もセキュリティリスクを低減する方法を模索することに努めていきます。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition