ファジングテスト

2022年10月26日

車両開発におけるサイバーセキュリティ実践ガイド|3つのフェーズで必要な対策技術

自動車の派手な技術革新の陰で、「自動車の安全性」における新たな概念がにわかに登場していたことをご存じでしょうか。「サイバーセキュリティ」です。車両制御機能のほとんどが電子化され、様々な外部デバイスと車が相互に通信する世界において、車載セキュリティ対策無しに安全な次世代のモビリティ社会を作りあげることはできません。 国連組織のWP29は、車両のサイバーセキュリティとソフトウェアアップデートについての新たなセキュリティ基準を検討し、2020年6月24日にCS/SU規則として採択しました。今年の7月からは日本でも規制が開始されています。同時にCS/SU規則への適用が求められる各メーカーには、自動車のライフサイクル全体を通して適切なセキュリティ対策が求められています。 さて、自動車のライフサイクルをサイバーセキュリティの観点から大別すると次のようになります。 システムの開発段階 ソフトウェアとハードウェアを結合する生産段階 生産後の利用段階 本記事では自動車のライフサイクル全体を通して、それぞれのフェーズにおいてどのようなセキュリティ対策が必要なのか、その手法と重要性について解説していきます。 1.開発段階:脅威分析とリスク評価(TARA) 「車輪がついたコンピューター」などと言われるほど電子制御が進んでいる自動車ですが、コンピューターの代名詞でもあるパソコンやスマホなどとは、大きく異なる特徴があります。実は、車両を制御するソフトウェアはホストコンピューター上で集中的に処理動作が行われるのではなく、100を超える電子制御ユニット(ECU)が電気的に相互通信を行うことで調和を図り、分散的に処理を行う形で運用されているのです。あるいは、ECUの構成や種類なども車両のモデルによって異なります。 こういった特徴により、車載セキュリティには従来のサイバーセキュリティ対策よりも粒度の細かい対策が必要になります。つまり、どの車両にも適用できるようなコンピューターウィルス対策ソフトや分析ツールが存在するわけではなく、車両モデルに応じてカスタムした車載セキュリティ対策を、細かく実施していく必要があるのです。 このような背景において、開発段階における車載セキュリティ対策としては「脅威分析とリスク評価(TARA:Threat Assessment and Remediation Analysis)」という工程が極めて重要になります。流れとしては、第一に、特定のOEMや車両モデルのシステム構造を整理して守るべき情報資産や機能資産を洗い出します。第二に、洗い出した資産に対し起こり得るセキュリティ上の脅威や脆弱性やエントリーポイントなどを特定します。最後に、特定したセキュリティリスクに対しリスク評価を行い、リスクを軽減するための対策/製品開発に活かします。 TARAを一言で言い表すならば、システムに潜む脆弱性が「許容できないリスク」かどうか判断するための分析手法です。車載セキュリティの重要性は既述の通りですが、起こり得るリスク全てに対応するのは現実的ではありません。経営上限られたセキュリティリソースを効果的に配分し、効率的なセキュリティ対策を実現する事が重要になります。そういった意味でTARAは、各OEMやモデルごとの資産と脅威の分析やリスク評価を通して、「優先的に対処すべきリスク」を整理することができる、非常に優れた分析手法といえるでしょう。 2.生産段階:脅威モデリングとセキュリティテスト 自動車に限らずなにかしらのシステムを開発したならば、それが安全か否かを確かめるためにセキュリティテストを行います。もし想定したセキュリティリスクに対して有効な対策を行えていない場合は、設計段階から実装をやり直す場合もあるでしょう。 車載セキュリティシステムの開発が一段落したこの段階では、実際のハッキングを想定したシミュレーションを行うことで、作成したセキュリティモデルの有効性を検証します。アウトクリプトでは、「脆弱性スキャン」「ファジングテスト」「ペネトレーションテスト」3つのアプローチでセキュリティテストを実施します。 脆弱性スキャン 脆弱性スキャンではソフトウェアの「静的テスト」と「動的テスト」という、2つのアプローチで脆弱性を見つけ出します。事前に想定しうるエラーや脆弱性をリストアップしておき、そのすべてを網羅的に検証していきます。 静的テストでは、開発段階においてリーク、バッファオーバーフローなどのエラーをチェックすることで、開発の初期段階における主要な問題を洗い出します。開発期間の延長の防止などにも役立ちます。 動的テストでは、実際にプログラムを動かすことで意図したとおりにソフトウェアを構築できているかを確認します。実行環境における脆弱性と動的変数の動作をテストできるので、実際のパフォーマンスや仕様の観点からテストすることが可能です。 ファジングテスト ファジング(fuzzing)テスト(ファズテスト)とは、ソフトウェアに意図的に攻撃を行い想定外のリスクへの対処法を見つけ出すという手法です。開発者が通常想定していない様々な種類のランダムなデータを入力し、その反応をテストすることができます。 前述の脆弱性スキャンでは事前に見つけ出したい脆弱性を定義するのに対し、ファジングテストでは「予期しない隠れたエラーを見つけ出す」ために、とにかくランダムな値を入力します。これによりクラッシュ、メモリリーク、その他外部からの攻撃に利用できるシステム上の欠陥がないかを調べます。特に、プログラムによって自動化されたハッキング手法などへの対策として有効です。 […]
gdpr-image
当ウェブサイトでは、お客様のニーズに合ったより良いサービスを提供するために、クッキーを使用しています。詳細については「個人情報の取り扱い」をご確認ください。