Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
日本シノプシス合同会社ソフトウェアインテグリティグループ
シニアプロダクトマネージャー
津村直史 (Tadashi Tsumura)
2016年3月11日 14:25~14:55
車載ソフトウェア開発における脆弱性管理のアプローチ
© 2016 Synopsys, Inc. 2
自動車の高度化と利便性の向上
インターネット接続を有する新車の割合 (%)
スマートフォン経由でインターネット接続する新車の割合 (%)
組み込みのインターネット接続する新車の割合 (%)
インターネット通信を有する新車の割合
Source: VDC ResearchSource : Prime Research
© 2016 Synopsys, Inc. 3
自動車業界でのソフトウェア開発におけるチャレンジ
• 今後のプロジェクトで社内開発するコードは 20%程度増加する (*1)
–ソフトウェアエンジニアが不足。
–OSS を含むサプライチェーンの利用した開発が加速。一方で、セキュリティと品質が問題に。
• 通信にフォーカスしていなかった組み込みエンジニアにとって、従来とは異なるエリアでのソフトウェア開発が必要に。(認証、認可、暗号化、ミドルウェア、etc)
• ネットワーク接続によって発生するセキュリティリスクへの対応が必要に。
• 複数のECUをまたがる場合の潜在的な脅威への対策が必要に。
–ユニット自体がセキュアで、かつ、ユニットを統合した後もセキュアでなくてはならない。
ソフトウェアの高度化
ネットワークとの融合
新しいビジネス価値
ユーザーの利便性
コード行数の増加
システムの複雑化
ソフトウェアの脆弱性
アタックサーフェースの拡大
*1 VDC Research 調査結果
© 2016 Synopsys, Inc. 4
何が必要となるか?
ソフトウェアの提供の過程におけるテストゲートの導入
ソフトウェア開発プロセスにおけるテストゲートの導入
• ベストプラクティスの準拠
• インダストリー要件の準拠
• 規制への準拠
• 法令への準拠
ソフトウェア開発のサインオフ
• コードチェックイン時に必要
• ビルドの成功とするために必要
• アジャイルな機能の受け入れ基準として
• リリース可否の基準として
ソフトウェア
サプライチェーンマネジメントのサインオフ
チェックイン
コンパイル&ビルド
機能の実現
製品リリースサインオフ
© 2016 Synopsys, Inc. 5
最高レベルのソリューション ソフトウェア開発ライフサイクルへの統合と自動化
テクノロジー メソドロジー
• 静的解析
• プロトコルファジング
• ソフトウェアコンポジット解析(SCA)
• インタラクティブアプリケーションセキュリティテスト
• テスト最適化
• テストの自動化
• 調達の強制
• サードパーティー認証
• 社内ポリシーの強制
• 業界スタンダードへの準拠
• リリースの基準
+
ソフトウェアのサインオフには、何が必要か?
© 2016 Synopsys, Inc. 6
プラットフォーム
レポート バグトラッキング連携 ワークフロー連携 IDE プラグイン SCM 連携
製品群
Coverity
静的解析
Defensics
プロトコルファジング
Protecode
ソフトウェアコンポジット
解析
Seeker
インタラクティブアプリケーションセキュリティ
テスト
Test Advisor
テスト最適化
シノプシスが提供するソフトウェア・インテグリティ・プラットフォームソフトウェア開発の
サインオフサプライチェーンマネジメントの
サインオフ
© 2016 Synopsys, Inc. 7
業界初のサイバーセキュリティ保証プログラムでULと提携
• 米国国土安全保証省とULと共同で「Cybersecurity Assurance Program」を策定中
Dynamic Runtime Analysis• CWEで分類可能な、実行時のセキュリティの問題の検出Malformed Input Testing (Fuzzing/DoS testing)
• ネガティブテストにより、ゼロデイやロバスト性の問題を検出Behavioral Analysis
• 実行時のコードの挙動を分析し、エクスプロイト可能な欠陥(Weakness)を検出
Software Composition Analysis• 既知の脆弱性を検出し、CVE やその他基準によって分類
Static Code Analysis• ソースコードの不具合を検出し、CWEやその他の基準で分類
Known Malware Testing• 既知のマルウェアの検出(ウィルスや悪意のあるコードなど)
© 2016 Synopsys, Inc. 8
1. 既知の脆弱性のリスク評価
ソフトウェアの構成を知り、そのリスクを知る
© 2016 Synopsys, Inc. 9
プロジェクトにおけるサードパーティコードの活用
自社開発のコード
商用のサードパーティーコード
オープンソースのサードパーティーコード
Source: VDC Research
プロジェクトの最終設計におけるコードの割合(自動車業界からの回答)
© 2016 Synopsys, Inc. 10
0
100
200
300
400
500
600
700
4/2
/200
8
6/2
/200
8
8/2
/200
8
10
/2/2
008
12
/2/2
008
2/2
/200
9
4/2
/200
9
6/2
/200
9
8/2
/200
9
10
/2/2
009
12
/2/2
009
2/2
/201
0
4/2
/201
0
6/2
/201
0
8/2
/201
0
10
/2/2
010
12
/2/2
010
2/2
/201
1
4/2
/201
1
6/2
/201
1
8/2
/201
1
10
/2/2
011
12
/2/2
011
2/2
/201
2
4/2
/201
2
6/2
/201
2
8/2
/201
2
10
/2/2
012
12
/2/2
012
2/2
/201
3
4/2
/201
3
6/2
/201
3
8/2
/201
3
10
/2/2
013
12
/2/2
013
2/2
/201
4
4/2
/201
4
6/2
/201
4
8/2
/201
4
10
/2/2
014
12
/2/2
014
2/2
/201
5
4/2
/201
5
6/2
/201
5
8/2
/201
5
10
/2/2
015
最も古いサードパーティーコンポーネントの
コンパイルの日時は
20
08年
4月。
2008年8月にリリース2コンポーネントで、22個のCVECVSS10のCVEは発生していない
ユニークな既知の脆弱性の数
( C
VE )
時間経過に伴いソフトウェアは劣化する
• 商用の製品• 81個のサードパーティーコ
ンポーネントを利用• リリース当時のコンポーネ
ントは、ほぼクリーン
• 平均で5日間に1つの新しい脆弱性が製品のコンポーネントに影響
• 7年後、もはや安全に利用できる製品とは言えません。
2015年2月時点
60コンポーネントで、582個のCVE
CVSS10のCVEは74個
© 2016 Synopsys, Inc. 11
Software Composition Analysis (SCA)
ソフトウェアコンポジション解析
• ソフトウェアの部品表(BOM)の特定と管理
• 機知の脆弱性の評価とトラッキング
• FOSS ライセンスの管理と輸出規制の遵守
Securing Software Through Software
Composition Analysis (SCA):
• ライセンス管理
• コード再利用の検出
• ライブラリの監視とメンテナンス
• 未知の脆弱性の検出
• ソースコードとバイナリの解析
• 脆弱性の修正のガイダンス
• ライセンス管理• 既知の脆弱性の発見• 自分のソースの解析• オープンソースの解析• ソフトウェアの部品表
と衛生レポート
オープンソースのスキャン ソフトウェア脆弱性の評価
ソフトウェアコンポジション解析
© 2016 Synopsys, Inc. 12
ソフトウェアコンポジション解析「Protecode」
自動車向けインフォテインメント
182個のCVEが
19コンポーネントに影響
自動車向けインフォテインメント
1003rdパーティSWコンポーネント
© 2016 Synopsys, Inc. 13
ソフトウェアコンポジション解析の価値
プロダクトがセキュアなビルディングブロックで開発されていることを確実にすることができます。
幅広い部品表(BOM)の把握 サードパーティーとオープンソースコンポーネントの脆弱性を特定 コードの劣化にプロアクティブに対応 ソフトウェアの肥大化を検出 顧客からの透明性に関する要求への対応 オープンソースライセンスのコンプライアンス状況の確認
利用する技術を詳しく把握した上で意志決定し、リスクを低減することができます。
ソフトウェアのエコシステムの状況認識 詳細情報を把握した上での意志決定 ベンダーを検証し、ソフトウェアのセキュリティとロバスト性の改
善のための協力 脆弱なソフトウェアをサプライヤー側の責任を明確に
ビルダー(製造元) バイヤー(購入者、利用者)
© 2016 Synopsys, Inc. 14
2. 未知の脆弱性の検査
自らをハッキングし、ゼロデイのリスクを緩和
© 2016 Synopsys, Inc. 15
未知の脆弱性
現状、どの程度の規模で存在するのか、把握が困難。
未知の脆弱性は、検知しにくいため、防ぐのも難しい。
修正方法またはソフトウェアパッチが存在しない。
ソフトウェアベンダーまたはセキュリティコミュニティに
まだ知られていない。
既知の脆弱性
ソフトウェアベンダーまたはセキュリティコミュニティに知られている。
NISTのNVD(National Vulnerability Database)で最新の既知の脆弱性がリストで公開されている。
それぞれの脆弱性にCVE(Common Vulnerabilities and Exposures)番号が付けられている。
既知の脆弱性を含むソフトウェアをパッチですぐに修復可能。
© 2016 Synopsys, Inc. 16
ファジングテストは、未知の脆弱性を検知し、ゼロデイ攻撃を防ぐ実績のある手法です
© 2016 Synopsys, Inc. 17
ファジングテスト
• ファジングテストは、不正なパターンを含む信号を試験対象装置に入力し、クラッシュ等の想定外の動作をしないかを確認する試験手法です。
• 不正なパターンを少しずつ変更しながら、限られた時間で多数のテストケースを入力し、効率的に脆弱性を洗い出します。
• 悪意のあるハッカーやセキュリティ研究者は、効率的に新しい脆弱性を見つけるためファジングを利用して故障モードを発生させています。(人気 No1のテクニック)
一般的なテスト入力
• 境界条件• 不正な値• 長すぎる文字列• 不正データに対する正しい
チェックサム• 正しいセッション情報
故障モード
• クラッシュ• ビジーループ• リソースリーク• その他の異常な挙動
ターゲットインターフェース
© 2016 Synopsys, Inc. 18
業界トップクラスのファジングツール「Defensics」
• 開発チームとセキュリティチームがソフトウェアの未知の脆弱性をプロアクティブに検出して修正するためのテストプラットフォームです。
• 主な特長
–世界でトップクラスの強力なファジング・プラットフォーム
–旧 Codenomicon 社より買収
– 270 以上のプロトコル・ファイルをサポート(継続的に更新)
–高速、信頼性、簡単な導入
–製品開発ライフサイクルと開発プロセスの一部として実行可能
–とらえがたい微妙なセキュリティの欠陥も検出
–Heartbleed を発見した実績
© 2016 Synopsys, Inc. 19
車載システムに対するファジングテストの例
• 車載ネットワーク
–CAN-bus
• 基本IPネットワークテスト
–TCP/IP(IPv4、IPv6)、DHCP、DNS、NTP、HTTP、TLS/SSL、X.509
• アプリケーションテスト
–XML、SIP、RTP
• 無線インターフェース
–Bluetooth、無線LAN
• メディア
–画像、ビデオ、オーディオ
© 2016 Synopsys, Inc. 20
ファジングを活用して、未知の脆弱性をプロアクティブに発見することで、ゼロデイ攻撃のハードルを高めることができます。
© 2016 Synopsys, Inc. 21
3. コード品質の検査
静的解析によるコードの品質と脆弱性を定量化
© 2016 Synopsys, Inc. 22
サードパーティーコードのテストは不十分
ソフトウェサプライチェーンから受け取ったコード、または、自社開発したコードに対して、
インテグリティ(品質、セキュリティ、安全性)を確認するためにどのような手法を利用していますか?
Forester Consulting / Software Integrity Report - April 2011
北米アメリカ、ヨーロッパのソフトウェア開発のリーディング企業 336社をサーベイ
© 2016 Synopsys, Inc. 23
Coverity業界トップクラスの静的コード解析
脆弱性、クラッシュ、メンテナンスの問題になる前に、
コーディングの段階で、コードの重要な不具合とセキュ
リティの弱点を検知します。
クリティカルな不具合
• バッファオーバーフロー
• メモリ破壊
• リソースリーク
• 競合状態
• NULLポインタの間接参照
セキュリティ脆弱性
• SQLインジェクション
• XSS
• CSRF
• 機密データに対する誤処理
• コマンドインジェクション
®
幅広い言語とコンパイラ対応
(100以上のコンパイラ)
CLANG JAVAC
スタンダードへの準拠
© 2016 Synopsys, Inc. 24
誤検知率10%の先進的な静的コード解析「Coverity」
開発者の意図を学び、競合状態のような捉えにくい不具合を検出
int *p = malloc(sizeof(int));
if(p != 0) *p = 42;...int *p =
malloc(sizeof(int));if(p != 0) *p = 42;
int *p = malloc(sizeof(int));
*p = 42;
Meant to do this
Error reported
統計的解析
ソースコード内に問題点を表示し、原因となったパスを容易に把握可能
理解しやすいインターフェース
人によるインスペクションではミスする複雑な不具合を検出
プロシージャ間解析&フルパス解析
© 2016 Synopsys, Inc. 25
静的解析によるサードパーティーコード品質の定量化
•自動解析は定量的な定義を可能にします
–品質(Quality)
–不具合密度
–不具合インパクト
–テスト(Testing)
–何をどのくらいテストしたか?
–セキュリティ(Security)
–攻撃に利用されうる脆弱性があるか?
•定量化、計測できなければ、コントロールできない
© 2016 Synopsys, Inc. 26
Coverity Scan によるOSSと商用ソフトウェアの比較
オープンソースソフトウェア
商用ソフトウェア
0.61 0.76(昨年0.66) (昨年0.77)
8.61 0.56(OWASP Top 10 Java)
バグ密度
(不具合 / 1KLOC)
脆弱性密度
Source: Coverity Scan report 2014
© 2016 Synopsys, Inc. 27
まとめ
© 2016 Synopsys, Inc. 28
まとめ
• 自動車業界におけるイノベーションと差別化のために、ソフトウェアがより重要に。
–システムの高度化、利便性の向上、ネットワークとの融合
• ソフトウェア開発のチャレンジと引き起こされる脆弱性
–システムの複雑化、コード量の増加、アタックサーフェースの拡大
• セキュリティ品質を検証するためのソフトウェアの「サインオフ」のコンセプト
–開発とサプライチェーンにおいて、セキュリティと品質をコントロールするためのテストゲート
1. ソフトウェアに「既知の脆弱性」が含まれているか?(ソフトウェアコンポジション解析)
2. 悪用が容易な「未知の脆弱性」が十分に潰されているか?(ファジングテスト)
3. 「クリティカルな不具合」や「脆弱なコード」が残留していないか?(静的コード解析)
• サイバーサプライチェーン全体でセキュリティと品質をコントロールすることが重要
© 2016 Synopsys, Inc. 29