令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問17
テクノロジ/セキュリティ組込みシステムにおける,ソフトウェアのメモリ安全性(Memory Safety)を考慮した事例として,適切なものはどれか。
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問17
- ア宇宙線によって引き起こされるメモリのエラーを回避するために,ソフトウェアの処理を多重化してエラーを検出することによって,安全な動作を行う。
- イエラー検出及び訂正が可能なメモリを使用することによって,エラーの発生と訂正をソフトウェアから隠蔽して,ソフトウェアの動作の健全性を確保する。
- ウバッファオーバーフロー,メモリリークなどの潜在的なセキュリティ上の問題を回避するために,メモリの保護機能を備えたプログラム言語を使用する。
- エヒープ及びスタックメモリの必要量を静的解析ツールで算出し,十分な空きメモリ領域を確保することによって,メモリ不足が発生しないようにする。
正解:ウ
解説
ソフトウェアのメモリ安全性(Memory Safety)とは,バッファオーバーフローや解放済みメモリへのアクセス,メモリリークといった,メモリの誤った扱いに起因する脆弱性やバグが発生しないようにすることです。C/C++ のようにポインタ操作の自由度が高い言語では危険性が高いため,メモリの境界チェックや所有権管理などの保護機能を備えたプログラム言語(Rust など)を採用することが,メモリ安全性を高める代表的な対策です。
選択肢ごとの解説
- ア誤り。宇宙線による一過性のメモリエラー(ソフトエラー)への対策は,信頼性向上の施策であり,バッファオーバーフローなどメモリ安全性が問題にする脆弱性への対策ではありません。
- イ誤り。ECC メモリによるエラー訂正は,ハードウェア上のビット化けなどの物理的な誤りに対する信頼性対策であり,ソフトウェアの実装に起因するメモリ安全性の問題への対策ではありません。
- ウ正しい。バッファオーバーフローやメモリリークなどの潜在的なセキュリティ上の問題を防ぐために,メモリの境界チェックなどの保護機能を備えたプログラム言語を使用することは,メモリ安全性を考慮した代表的な事例です。
- エ誤り。ヒープやスタックの必要量を静的解析で見積もり,メモリ不足を防ぐことはリソース管理の対策であり,バッファオーバーフローなどのメモリ安全性の問題そのものへの対策ではありません。