コーディング規約
ソフトウェア コーディング規約は、ソフトウェア開発プロセスで信頼できないプログラミング構造が生じないようにする上で重要な役割を果たします。組み込みシステムの場合、重要なコーディング規約には次のものがあります。
モデルおよびコードがコーディング規約に準拠しているかどうかをチェックする機能は、セキュリティの脆弱性を防ぐのに役立ちます。Embedded Coder® および Simulink® は、MISRA C:2012 およびセキュア コーディング規約への準拠に影響する問題を最小限に抑える機能を提供します。以下のような機能があります。
コード生成アドバイザー。コード ジェネレーターが MISRA C:2012 準拠のコードを生成する可能性が最も高くなるように、モデルまたはサブシステムを構成するのに役立ちます。詳細については、コード生成アドバイザーを使用したコード生成の目的に合わせたモデルの設定を参照してください。
モデル アドバイザー チェック。モデルまたはサブシステムの開発時に使用して、MISRA C:2012 およびセキュア コーディング規約に準拠したコードを生成する可能性を高めることができます。詳細については、以下を参照してください。
MISRA C
MISRA C™ および MISRA C++ 規格は、C および C++ プログラミング言語の一連のコーディング ガイドラインであり、組み込みシステム ソフトウェアの安全性、セキュリティ、および信頼性を促進します。Motor Industry Software Reliability Association (MISRA™) が公開しているこれらのガイドラインは、C 言語の "安全なサブセット" を定義し、組み込みシステムの安全性およびセキュリティを損なう可能性のある言語の側面から保護します。詳細については、What is MISRA C? を参照してください。
MISRA C:2012 コーディング ガイドラインを使用して、生成された C コードの品質を評価する際には、『MISRA C:2012 Guidelines for the Use of C Language in Critical Systems』ドキュメントのセクション 5.3 に従って、評価対象のプロジェクトの準拠表明を作成する必要があります。この準拠表明の作成を支援するために、MathWorks® では、Embedded Coder を使用して生成された C コードに対して MISRA C:2012 ガイドラインの評価を行います。評価の結果は以下のように公開されます。
詳細については、Developing a MISRA C Standard Compliance Statementを参照してください。
セキュア コーディング
CERT® C、ISO/IEC 17961、および CWE は、組み込みシステム内で増加しているサイバー セキュリティ上の懸念事項に対処するために特別に開発されたコーディング ルール ガイドラインです。これらのコーディング規約は、ソフトウェア開発者が C 言語でコードを開発する際に使用するためのものです。
CERT C — C 言語のセキュア コーディング手法を提供します。組み込みソフトウェアのセキュリティ上の脆弱性により、悪意のあるアクターから攻撃を受ける可能性が高まります。これらのガイドラインは、実行時に予期しない結果が生じて、セキュリティ上の脆弱性を露呈させる可能性のある、未定義の動作を伴う構造を排除するのに役立ちます。詳細については、What is CERT C? を参照してください。
共通脆弱性タイプ一覧 (CWE™) — ソフトウェアのアーキテクチャ、設計、コード、または実装で発生する可能性のある、ソフトウェアの共通脆弱性タイプを識別します。これらの脆弱性は、セキュリティ上の脆弱性につながる可能性があります。
ISO/IEC TS 19761:2013『 Information Technology — Programming Languages, Their Environments And System Software Interfaces — C Secure Coding Rules』 — C 言語のセキュア コーディングに関する正式な ISO® 規格。この標準は、過度の偽陽性を生じることなく、静的解析ツールを使用して適用できるように設計されています。
参考
Industry Standards | MISRA C 標準への準拠を検証するためのモデリング ガイドラインとモデル アドバイザー チェック | セキュア コーディング規約への準拠を検証するモデル アドバイザー チェック