連載|4ステップで​実現する​IoT​デバイス​セキュリティ第4回 セキュリティ向上の​ための​自動化​ソフトウェア​開発​ツール

IoTデバイスのセキュリティを確保するには、開発ライフサイクル全体での効率的な対応が求められます。その鍵となるのが、自動化ソフトウェア開発ツールの活用です。今回は、ALM、DAST、SASTといった主要ツールの特徴と、セキュリティ・ファースト設計における役割を解説します。

1. 自動化ソフトウェア開発ツールの分類

IoT および M2M デバイスのセキュリティ保証では、自動化ソフトウェア開発ツールを開発ライフサイクルに導入することが重要です。ソフトウェアツールの品質保証における役割も重要ですが、新規または既存製品の要件にセキュリティが組み込まれる 場合、その重要性はさらに高まります。

組込み IoT 製品の品質とセキュリティを向上させるための自動化ソフトウェア開発ツールは、以下の3つの大きなカテゴリーに分けられます。

アプリケーションライフサイクル管理(Application Lifecycle Management:ALM)

セキュリティに特化したツールではありませんが、「要件分析」「設計」「コーディング」「テストと統合」「構成管理」など、ソフトウェア開発の多くの側面をカバーします。セキュリティ・ファーストの組込み開発アプローチでは、ALMツールを使ってセキュリティエンジニアリングを自動化することも可能です。例えば、要件分析ツール(脆弱性管理ツールと併用)は、ライフサイクル全体でセキュリティ要件や既知の脆弱性を追跡可能にします。設計自動化ツールは、安全な設計パターンを組み込み、既知のセキュリティ欠陥を回避するコードを生成します(例:バッファオーバーフローの回避や入力データ検証)。構成管理ツールは、コードチェックイン前にコードレビューや静的解析レポートを必須化できます。テスト自動化ツールは、システムに対する「悪用ケース」のテストに使用可能です。ALM ツールは、プロジェクト全体だけでなく、セキュアな開発においても有効に活用できます。

動的アプリケーションセキュリティテスト(Dynamic Application Security Testing:DAST)

動的テストツールは、プログラムを実際に実行することで有用な結果を得る必要があります。これには、ユニットテストツール、テストカバレッジ、メモリアナライザ、ペネトレーションテストツールなどが挙げられます。テスト自動化ツールは、開発チームのテスト負荷を軽減するうえで重要であり、さらに手動テストでは見逃されがちな脆弱性を検出するのに役立ちます。

静的アプリケーションセキュリティテスト(Static Application Security Testing:SAST)

静的解析ツールは、ソースコード、バイトコード(例:コンパイル済みの Java)およびバイナリ実行ファイルを解析することで動作します。静的解析ではコードを実行することはなく、コードの潜在的な挙動を推論する形で解析が行われます。静的解析は、動的解析と比べてコードベースの解析において比較的効率的です。また、他の手法ではテストされていないコードパスも解析でき、コード内の実行経路やデータ経路を追跡することが可能です。

静的解析は、既存のコード、レガシーコード、サードパーティのソースやバイナリを製品に組み込む前の開発の初期フェーズで導入することができます。新しいソースが追加される場合には、構成管理と組み合わせた増分解析を行うことで、継続的に品質とセキュリティを確保できます。

いずれか一つのツールを導入するだけでも生産性、セキュリティ、品質の向上に寄与しますが、複数のツールを組み合わせて使用することが推奨されます。単一のツールが万能の解決策となることはありません(*7)。予算内で高いセキュリティを確保するためのリスク特定・評価を行い、これに基づきあらゆるカテゴリーのツールを組み合わせて自動化するのが、最適なアプローチです。

参考文献

*7. No Silver Bullet – Essence and Accident in Software Engineering, Fred Brooks, 1986.

2. セキュリティファースト・アプローチにおける静的解析ツールの役割

CodeSecure社のCodeSonarのような静的解析ツールは、開発のコーディングおよび統合フェーズにおいて重要なサポートを提供します。開発および保守の各フェーズにおいて継続的にコード品質を確保することで、ソフトウェアのセキュリティや品質に関するコストとリスクを大幅に削減できます。特に、以下のような利点があります。

継続的なソースコード品質とセキュリティの保証

通常、静的解析は、初期統合の一環として大規模なコードベースに対して最初に適用されます。しかし真価を発揮するのは、初期のコード品質とセキュリティのベースラインが確立された後です。新しいコードブロック(ファイルや関数)が書かれるたびに静的解析ツールでスキャンされるので、開発者はコードをビルドシステムにチェックインする前にエラーや警告へ迅速かつ効率的に対応できます。開発者自身がエラーや脆弱性を検出し、修正することでツールの効果が最大化します。

汚染データの検出と解析

ソース(インターフェースなど)からシンク(プログラム内でデータが使用される箇所)へのデータフローの分析は極めて重要です。ユーザーインターフェースやネットワーク接続からの入力は、検証されないまま使用されるとセキュリティ上の脆弱性になり得ます。多くの攻撃は、標的システムの挙動を改変するよう設計された特殊なデータを入力として送り込むことで行われます。入力が長さや内容の両面で適切であることを検証しないと、エラー状態やそれ以上の深刻な事態を引き起こすかもしれません。コードインジェクションやデータ漏洩は、この種の攻撃の結果として発生する可能性がある重大な問題です。

サードパーティコードの評価

多くのプロジェクトはゼロからの新規開発ではなく、社内の既存コードやサードパーティコードが利用されます。大規模な既存コードベースに対するテストや動的解析は非常に時間がかかりますし、予算やスケジュールを超えることもあります。静的解析は、大規模コードベースの解析に特に適した手法であり、セキュリティや品質の問題を示す意味あるエラーや警告を提供してくれます。CodeSonar はバイナリファイルのみで提供されているライブラリを解析し、ソース解析と同様のレポートを提供することができます。また、ソースコードが利用できない場合でも、CodeSonar のバイナリ解析はソースとバイナリの混在モードで動作し、外部バイナリライブラリの利用におけるエラーを検出可能です。

セキュアコーディング標準(Secure coding standard)の適用

静的解析ツールは、ソースの構文を解析し、セキュアコーディング標準 の遵守を強制するために利用できます。例えばSEI CERT C (*8) や Microsoft の Secure Coding Guidelines (*9) といったさまざまなコードセキュリティガイドラインがあります。セキュアコーディング標準 は、リスクの高いコードが将来的な脆弱性になることを防ぐために有効です。これらのチェックをビルドや構成管理システムに統合することで、製品コードの品質とセキュリティが向上します。

包括的なツール群の一部として、静的解析は他のツールでは得られない重要な機能を提供します。静的解析を導入する最大のメリットは、従来のテストツールでは見逃される可能性のあるエラーや脆弱性を早期に検出できる点にあります。これにより、開発を継続する中で高い品質とセキュリティを確保することが可能となります。

参考文献

*8. SEI CERT C Coding Standard.
*9. Outsource Code Development Driving Automated Test Tool Market, VDC Research, IoT & Embedded Blog, October 22, 2013.


自動化ツールは、セキュリティ対応を効率化し、品質を維持するための強力な手段です。

最終回となる次回は、特にリスクの高いサードパーティコードの評価方法と、その重要性について詳しく見ていきます。


より詳しく技術や関連製品について知りたい方へ

お気軽相談

本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。


製品情報

高精度静的解析ツール

CodeSonar

世界トップレベルの解析能力で不具合や脆弱性の原因となるソースコードのバグを検出
製品ページを見る

連載|4ステップで実現するIoTデバイスセキュリティ 第5回 サードパーティコードの評価

コラムを読む

日本の製造業者に求められるグローバル対応 ―JC-STARと英国PSTI法の相互承認がもたらすセキュリティ強化のチャンス

コラムを読む

連載|4ステップで実現するIoTデバイスセキュリティ 第3回 脅威分析とアセスメント

コラムを読む

連載|4ステップで実現するIoTデバイスセキュリティ 第2回 セキュリティ・ファースト設計

コラムを読む

連載|4ステップで実現するIoTデバイスセキュリティ 第1回 IoTデバイスのセキュリティを向上させる4ステップとは

コラムを読む

物流と産業の安全性を守る:ファジングという選択肢

コラムを読む

静的解析による並行性エラーの検出

コラムを読む

産業用ロボット安全規格の進化とセキュリティ:​ISO 10218シリーズ改訂の本質を読み解く

コラムを読む

静的解析の活用で汚染データから組込みアプリケーションを保護

コラムを読む

RED-DAとは?2025年8月に何が義務化される?

コラムを読む

印刷環境のセキュリティ強化:複合機(MFP)の脆弱性とその対策

コラムを読む

各国のIoT製品セキュリティ確保のための取り組み:米国 ―U.S. Cyber Trust Mark―

コラムを読む

各国のIoT製品セキュリティ確保のための取り組み:シンガポール ―サイバーセキュリティラベリングスキーム(CLS)

コラムを読む

各国のIoT製品セキュリティ確保のための取り組み:欧州

コラムを読む

太陽光発電と蓄電池システムの脆弱性:安全なエネルギーのためのセキュリティ対策

コラムを読む

各国のIoT製品セキュリティ確保のための取り組み:日本

コラムを読む

もう待てない、サイバーレジリエンス法対策

コラムを読む

各国のIoT製品セキュリティ確保のための取り組み: 英国

コラムを読む

ソフトウェアテストの新常識:ファジング入門

コラムを読む

JIS T 81001-5-1に準拠した医療機器のセキュリティ対策

コラムを読む

サプライチェーン攻撃と脆弱性テスト

コラムを読む

セキュリティ規格について

コラムを読む

ファジングとは?

コラムを読む

脆弱性検証―何をどこまで実施すれば良い?

コラムを読む

HEMS機器の脆弱性検証

コラムを読む

ファジングの限界

コラムを読む
メニューを閉じる
一つ前に戻る