セキュアなソフトウェア開発
~現代のソフトウェア開発における必須要件=セキュリティ~
- はじめに
- セキュリティー
- セキュアコーディングと静的解析ツール
近年の製品・サービスは、デバイスの高機能化、ネットワーク環境の充実、外部システムとのデータ通信などにより、様々なシステムが連携し、新たな価値を提供しているものが多くなってきています。
これまで独立した環境で機能してきた組み込み機器も例外ではなく、ネットワーク経由の攻撃が想定されていなかった組込みシステムが攻撃の対象になったことで、情報漏えいや遠隔操作などの深刻な問題に発展する事例がすでに多くの現場で起こり始めています。ソフトウェアの安全性やセキュリティ、そして信頼性に影響を与える欠陥が表面化するケースが増加しており、ソフトウェアセキュリティを考慮する必要性は、かつてなく高まっています。
一般には、機能安全規格とセキュリティは関連ないという認識の方も多いと思います。しかし、近年ではネットワーク経由で安全機能を実現する装置は増えており、セキュリティは無視できるものではありません。
また、自動車・医療機器・農業機械などでサイバーセキュリティに関する要求もでてきています。例えば国土交通省より公表されている「自動運転車の安全技術ガイドライン」には、自動運転車の安全性に関する要件としてサイバーセキュリティが盛り込まれています。
セキュリティとは
セキュリティとは、「目的を達成するにあたって、考えられるリスクをコントロール(低減)すること」であり、セキュリティ対策で最初にするべきことは「リスクを考えること」です。つまり、セキュリティとは完成されたシステムで検証する類のものではなく、プロジェクトの計画の段階から考えるべきものと言えます。
セキュリティを非機能要件とし、後回しにする現状から脱却することを真剣に考え始めなければなりません。これまでの「テストによるセキュリティ検証」ではなく、「セキュア・バイ・デザイン」(※)という考え方を開発に取り入れることが求められます。
※要件定義、設計、実装の各段階からセキュリティを考慮し、セキュリティ対策を組み込んでいく考え方
セキュアコーディングと静的解析ツール
多くの安全規格(ISO 26262、DO 178B/C、FDAなど)にて、コーディングスタンダードと静的コード解析を使用することにより、ソフトウェアの安全性と信頼性を大幅に強化できることが示されていますが、セキュリティについても同様のことが言えます。セキュアなソフトウェア開発に必要不可欠な要素は、明文化された、適用可能なコーディングスタンダードと静的解析ツールです。
なぜなら、実装においてセキュリティ要求に対応しているつもりでも、スタンダードがなければ、開発者個々人のスキルや好みなどによって、実装時に脆弱性が作り込まれてしまう可能性があるためです。そして静的解析ツールがなければ、膨大なサイズの複雑なプログラムがスタンダードを遵守できているかの検証を目視でレビューするという非現実的な作業をしなければならないためです。スタンダードがあれば、それをソースコードの評価基準とし、静的解析ツールがあれば、評価基準に従ったセキュリティ対策への適合を確認することもできます。
では、どのコーディングスタンダードを使用するべきでしょうか?
続きは資料DLしてご覧ください。
作成:テクマトリックス株式会社
2022年11月