ISO 26262 Part 6プロセス準拠の実証を必要とする開発者を支援し、より安全なソフトウェア開発を実現
オープンソースプロジェクトおよびビジネスユースを含む、ソフトウェアの開発プラットフォームを提供するGitHub, Inc.(本社:米国サンフランシスコ)は、6月20日(米国時間)に、ソースコードのセマンティック解析を行うCodeQLに標準CERT C++とAUTOSAR C++を実装したことを発表しました。これにより、ISO 26262 Part 6プロセスに準拠していることの実証を必要とする開発者を支援し、より安全なソフトウェア開発への貢献を拡大させます。
自動車分野における最新の技術革新は、自動車の製造方法における大規模なデジタルトランスフォーメーション(DX)を引き起こしました。現代の自動車は、世界中のドライバーが日常的に利用する数百万行におよぶソースコードが相互接続されたシステムによって構成されています。自動車分野におけるソフトウェア開発は、より良いユーザー体験を提供するためのイノベーションを起こすと同時に、最高の品質と安全管理を確保するという責任も負っています。
これらソフトウェアの安全性と信頼性を確保するために、各ソフトウェアコンポーネントが重大な障害の引き金となるような問題が発生しないようにISO 26262などのガバナンス標準が構築されました。さらに最近では、このソフトウェアに起因するサイバーセキュリティ関連インシデントのリスクを最小化するために、ISO 21434を通じてこの規制を拡大しました。
このたび、GitHubはウーブン・プラネット・ホールディングス株式会社と連携し、CERT C++ およびAUTOSAR C++の規格を実装したCodeQLクエリをリリースしました。 これらのクエリは、ISO 26262 Part 6プロセスへの準拠を支援します。
GitHubが提供するCode Scanningは、CodeQL分析エンジンを活用し、脆弱なソースコードがMergeされリリースされる前に、ソースコードのセキュリティバグを発見し、Pull Requestが作成された際に警告を表示します。これらのチェック工程をGitHubに実装することで、自動車向けソフトウェア開発チームはコラボレーションや俊敏性を犠牲にすることなく、コンプライアンスに準拠した安全なソフトウェアを開発することができます。
GitHubは、オープンソースを活用したグローバルなイノベーションとコラボレーションの促進に向けて尽力しています。その一環として、今回リリースしたCodeQLクエリをオープンソース化する予定です。GitHubは、オープンソースのメンテナーや開発者がISO 26262のコーディング規約の要件に準拠したソフトウェアでイノベーションを起こす環境を提供することで、組込みソフトウェア開発におけるイノベーションを加速させることができると考えています。
静的解析がISO規格の要求事項を満たす要件
ソフトウェア解析ツールは、それだけで自動車向けのISO 26262への準拠を完全に保証することはできませんが、「ソフトウェアレベルにおける製品開発」をカバーするPart 6への準拠を証明しようとする開発者を支援することは可能です。規格のPart 6は、道路走行車の機能安全を確保することを目的とし、ソフトウェアの設計と実装の正しさを検証するものです。GitHubのCode Scanningを利用することで、開発者はセキュリティバグや重大な欠陥がコードに混入した瞬間に発見し、修正することができます。CERT C++およびAUTOSAR C++、C++11、14のコーディング規約違反に対して、GitHub Code Scanningとその拡張機能を使用することで、自動的にこれらの違反項目検知できます。
CodeQLクエリ改善への貢献
CodeQLクエリの機能を拡張したい場合、CodeQLパックに貢献することで、世界に公開することができます。 公開されたCodeQLパックは、他の人と簡単に共有でき、CI/CDパイプラインで実行することができます。もし汎用的ですべてのリポジトリにあらゆる状況で適用できると思うクエリをお持ちの開発者の方がいらっしゃれば、ぜひ改善への貢献をお願いします。そのクエリをオープンソースのCodeQLクエリリポジトリ(
https://github.com/github/codeql)に提供することで、GitHub Code Scanningが有効になっているすべてのリポジトリ上のすべてのPull Requestに対してクエリが実行されるようになります。
Code scanningの使い方
ソースコード上で新しいCodeQLクエリを使用するには、リポジトリのSecurityタブでCode Scanningを設定します。これにより、そのリポジトリのスキャンを開始するための簡単なワークフローが表示されます。