コラム

Column

ご挨拶

NSAとCISAが、AdaとRustをメモリ安全言語として推奨

AdaCore ブログ

「メモリ安全性は、極めて重要な要素」

*NSA 米国家安全保障局

*CISA 米国サイバーセキュリティ・インフラストラクチャ

バッファオーバーフローなどのメモリ安全性に関する脆弱性は、長年にわたりソフトウェアシステムを悩ませてきました。Heartbleed や BadAlloc といった事例は、メモリ管理が適切に実施されていないためにもたらす危険性を示しています。

Heartbleed は、アクセス数の多いウェブサイト80万件以上に影響を与え、数百万件の病院患者記録を含む機密性の高い個人情報が盗まれる結果を招きました。一方、BadAlloc は組込機器や産業用制御システム、さらに1億9500万台以上の自動車に影響を与え、メモリ脆弱性が国家安全保障や重要インフラを脅かすことを浮き彫りにしました。

NSAとCISAは、メモリ安全言語(MSL)を採用することで、ソフトウェアのセキュリティ向上とセキュリティ事故のリスク低減ができることに関して、共同でサイバーセキュリティ情報シート( Cybersecurity Information Sheet)を公開しました。
この報告書では、メモリ安全性の問題に対して組込の保護機能を備えた言語(MSL)としてAda言語ならびにRust 言語を取り上げています。これは、安全なソフトウェアを開発するための重要な選択肢となります。

さらに、メモリ安全言語(MSL)が設計段階からセキュリティを高める方法について説明しています。
「MSL は、安全性の仕組みを言語に直接組み込んでいるため、メモリ安全性の不具合を未然に防ぐことができます。こうしたアプローチは、従来のセキュリティ対策の枠組みに新たな視点をもたらしています。」

NSAおよびCISAの報告書では、メモリ安全言語(MSL)の導入に伴う課題が指摘されていますが、AdaCoreは、それらに対応できる技術的・組織的な基盤を有しています。

目的に応じて適切な言語を選択するには

よく寄せられる質問のひとつに、{アプリケーションにはどのメモリ安全言語(MSL)が最も適しているのか}というものがあります。
AdaCore の技術文書 “Should I Choose Ada, SPARK, or Rust over C and C++?” 英語
(日本語プログラミング言語C/C++、Ada、SPARK、Rustの選択に関して 日本語) では、では、各言語の特徴を分かりやすく比較し、使用事例、保証レベル、既存環境との整合性などを踏まえ、最適な言語選定のための指針を示しています。

MSLの既存システムへ導入に関して

複雑な既存コードにメモリ安全言語(MSL)を導入するのは簡単ではありません。
一つの方法として、脆弱なコンポーネントを特定し、Ada や Rust で書き直すことです。書き直した部分は、外部関数インタフェース(FFI)を使って他のシステムと統合できます。書き直せない場合は、CHERI のようなメモリ安全性を備えたマイクロプロセッサが利用できます。
CHERには実行時メモリ安全チェック機能が備わっており、 Ada や Rust などのメモリ安全言語 の機能を凌ぐ場合があります。
CHERIアーキテクチャへの移植は、ほとんどの場合、最小限の作業で済み、コードをまったく変更せずに対応できるケースもあります。
CHERI 対応のツールチェーンでコードを再コンパイルし、CHERI 対応ハードウェアやエミュレーション上で統合テスト、単体テスト、ファジングなどを実行することで、アプリケーションがメモリを安全に使用しているかを確認できます。

制約の厳しい環境でも安全性を確保

産業用制御システムや組込アプリケーションでは、メモリ容量・消費電力・処理性能といったリソースに厳しい制約が課されることがあり、AdaやRustは、まさにこうした環境を想定して設計された言語です。
Ada は長年にわたりこの分野で使われており、安全性や認証が求められるプロジェクトでも豊富な実績があります。たとえば、国際宇宙ステーションのソフトウェア開発では、Astrium や MDA のプロジェクトで Ada が採用されています。Rust は比較的新しい言語ですが、急速に発展しており、高信頼システムに適した選択肢として注目が高まっています。

MSL が使えない場合の安全対策について

ツールの制約、認証要件、プロジェクトの納期などの理由で、MSL(メモリ安全言語)を導入できない場合があります。そんなときでも、CHERI は有効な解決策となります。
CHERI は、新しい言語に全面移行する必要なく、ハードウェアの力でメモリ安全性を実現できる技術です。

ツールの成熟度と実用性の評価について

安全かつ効率的に開発を進めるために、信頼できるツールが必要です。
Ada には、高信頼ソフトウェア開発のために整備されたエコシステムがあり、次のような実績があります。

  • 数十年にわたる実績と信頼:Adaは1980年代初頭に登場して以来、長年にわたり利用され、進化を重ねています。
  • 進化する言語規格:Adaは ISOによって標準化され、現在も積極的にメンテナンスされています(最新バージョンは Ada 2022)。高い安全性を維持しつつ、現代の開発ニーズに合わせて進化し続けています。
  • 強力な型付けと安全機能:Adaは、コンパイル時の厳密なチェック、型安全性、並行処理の制御を徹底することで、実行時に発生する多くのエラーを大幅に減らせます。
  • 決定的な動作:Adaは、実行のタイミングが予測でき、ハードウェアを細かく制御する必要があるリアルタイムシステムや組込システムに最適です。
  • 認証に適したツールチェーン: GNAT Pro のようなツールは、高信頼性ソフトウェアの開発を前提に設計されており、DO-178C、ISO 26262、IEC 61508 などの安全規格に基づく認証取得をサポートします。
  • 長期的な保守とサポート:長期的な保守とサポート:商用 Ada ツールチェーンは長期サポートと高い安定性を提供し、航空宇宙や鉄道など、長期間の運用が求められるシステムに欠かせない存在です。
  • クロスプラットフォームと既存環境のサポート:Ada のエコシステムは、多くのプラットフォームやリアルタイムOSに対応し、既存のハードウェア環境でも継続的に利用できます。

AdaCore は、安全性が特に重要なアプリケーション向けに、Rust ツールチェーンを Ada と同等のレベルまで引き上げるために、投資と開発を進めています。

MSL に基づくサプライチェーンの安全確保について

メモリ安全言語(MSL)を採用しても、サプライチェーンの信頼性を損なうことはありません。Ada も Rust も、安全な開発パイプラインに問題なく組み込むことができます。
当社のツールチェーンと開発手法は、追跡性や監査性、長期的な保守性といった、安全なソフトウェアサプライチェーンに不可欠な要素をサポートしています。

メモリ安全性の脆弱性が常に存在し、これが原因で重大な情報漏えい事件が発生していることから、従来のプログラミング手法だけに頼るのでは不十分です。
Ada や Rust のようなメモリ安全言語(MSL)は、設計段階からこうした問題を回避する仕組みを提供し、開発者が本質的により安全なシステムを構築できるよう、組込の保護機能を備えています。
NSA と CISA の報告書でも指摘されている通り、MSL の採用は、商用システムや国家インフラの回復力・耐障害性を高める重要な一歩となります。

※本資料は、AdaCoreのテクニカルペーパーを意訳したものです。正確な内容については、原文をご参照下さい。

https://blog.adacore.com/ada-and-rust-are-highlighted-by-the-nsa-and-cisa-in-memory-safe-language-information-sheet

著者 Andrea Bristolについて

アンドレア・ブリストルはAdaCoreの広報・マーケティングキャンペーンマネージャーです。18年以上の経験を持つマーケターであり、英国マーケティング協会(CIM)のフェロー資格を保持しています。余暇には、馬術競技用の馬ネモ(NEMO)と共に厩舎で過ごすか、3人の子供たちの送迎に追われる母親として過ごしています。

POPULAR COLUMN
人気コラム



メールマガジン

「ご登録いただいた内容は、弊社の掲げる「個人情報保護方針」に沿って管理し、本件に関するお問い合わせ、お申込み等いただいた内容への対応のために利用する場合がございます。なお、お客様の同意なく目的外の利用や第三者への開示、提供を行うことはございません。」

CONTACT

まずはお気軽に
お問い合わせください!

PAGE TOP