Qtブログ(日本語)

MISRA CとMISRA C++-安全性だけではありません

作成者: Qt Group 日本オフィス|Feb 10, 2024 6:18:00 AM

このブログは「MISRA C and MISRA C++ - more than just safety」を翻訳・一部加筆したものです。

組み込みシステムなど、信頼性の高いソフトウェアや重要なソフトウェアを開発する場合、MISRAガイドラインは広く知られており、その適用はAxivionなどの静的コード解析ソリューションによって十分にサポートされています。これらのガイドラインの焦点は安全性の懸念にありますが、セキュリティに関しても、ガイドラインは実際には非常に有用な出発点でもあります。しかし、明示的なセキュリティへのフォーカスが欠落しているため、いくつかの懸念が生じ、MISRA C 自体もそれに言及しています(MISRA C:2012 Amendment 1, Foreword, 2016)

 

「残念ながら、多くの人が安全関連のソフトウェア・リファレンスに注目しており、MISRA Cは安全関連に焦点を当てており、セキュリティには関連していないという認識が広がっています。」

 

その結果、MISRA C:2012は拡張され、まず Amendment 2としてMISRAガイドラインとCセキュアコーディング規則(ISO/IEC TS 17961:2013)の間のマッピングが提供され、次に Amendment 1として、Cセキュアコーディング規則から、これまで十分にカバーされていなかったセキュリティトピックに特化した追加規則が提供されました。

 

その後、Amendment 3 では、SEI CERT Coding Standard(2016)へのマッピングも提供されました。これらの拡張をすべて組み合わせると、MISRAガイドラインはセキュリティ関連の環境でも適用できるという見解が支持され、Axivionのような静的コード解析ツールのユーザーは、主な焦点が安全かセキュリティかにかかわらず、これらすべての異なるルールセットの間にかなりの重複があることに気づくことができます。

 

C++側では、MISRA C++作業部会が最近MISRA C++:2023を発表しました。この大幅な更新を行うにあたり、同グループは従来のMISRA C++およびAUTOSAR C++ガイドラインを見直しただけでなく、Amendment 1からのよりセキュリティに重点を置いた規則を含む、MISRA C側の開発状況にも目を向けました。


その結果、C++にも等しく適用されると思われるいくつかのルールが新版に含まれましたが、一般的には(現代の)C++の世界により適合するように調整されました。また、Axivion Static Code Analysisに含まれるようなMISRAチェッカーがガイドラインへの準拠をより良くサポートできるように、決定可能なルールに焦点を当てるという一般的な傾向が踏襲され、それによってルールの実用的な価値が向上しました。 

例えば、MISRA C:2012 Amendment 1の errno に関する規則は、MISRA C++:2023では基本的に2つの決定可能な規則に凝縮されています:

 

  • C標準ライブラリの文字列処理関数の使用全般を禁止するルール
    そして
  • ユーザーコードの errno にリテラル 0 以外の値を代入することを禁止するルール。

つまり、MISRAは「組込み制御システムとスタンドアロン・ソフトウェアの安全でセキュアなアプリケーションのために、世界をリードするベストプラクティスのガイドラインを提供する」(www.misra.org.uk)という使命を守り続けており、セキュリティの側面も明確に含んでいることがわかります。

 

Axivion's MISRA checker の詳細はこちら

Axivion Static Code Analysis と Axivion Architecture Verification の詳細については Axivion を参照してください

打ち合わせやデモをご希望される方は、こちらまでご連絡ください。