Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
⽇本シノプシス合同会社
Software Integrity Group
松岡正⼈
オープンソース開発で
フリー静的解析ツールを使ってみる
© 2019 Synopsys, Inc. 2
• Synopsysのご紹介
• 脆弱性によって何が起こったか?
• 無償利⽤可能な静的解析ツール”Coverity scan”
• 商⽤製品”Coverity“との⽐較
• まとめ
アジェンダ
© 2019 Synopsys, Inc. 3
Synopsysのご紹介
© 2019 Synopsys, Inc. 4
シノプシス:市場と技術のリーダー
シリコン設計
および検証
シリコン
IP
ソフトウェア
インテグリティ 新興市場のリーダー
広範なポートフォリオ
15〜20%の成⻑率
世界 2位のIPベンダー
...
© 2019 Synopsys, Inc. 5
FY19 売上⾼:
~$3.4B
従業員数:
~14,200
保有特許数:
~3,250
“Silicon to Software™”
半導体設計からソフトウェア開発に⾄る領域をカバー
Canad...
© 2019 Synopsys, Inc. 6
• 2015年
• Heartbleedを発⾒した
技術とチーム
• 2014年
• セキュリティと品質、
静的解析のリーダー
• 2016年
• 400⼈以上の
セキュリティ専⾨家
• マネージ...
© 2019 Synopsys, Inc. 7
ソフトウェア開発・セキュリティ市場でのポジション
ソフトウェア静的解析、コンポジション解析、総合セキュリティテストでリーダーの評価
Forrester Wave
Static Applicatio...
© 2019 Synopsys, Inc. 8
多彩な業界でソフトウェアのセキュリティと品質を牽引
モバイルおよび
コンシューマ機器
エンタープライズ
ソフトウェアおよび
ネットワーク
⾼信頼性システム ⾦融サービス
© 2019 Synopsys, Inc. 9
脆弱性によって何が起こったか?
© 2019 Synopsys, Inc. 10
脆弱性を悪⽤されるサイバーインシデントは最⼤のビジネスリスク
サイバーインシデントは最⼤のリスクに
https://www.agcs.allianz.com/content/dam/onemar...
© 2019 Synopsys, Inc. 11
プリンターのハッキング
• 記事では、可能な攻撃について解説
• Shodanでインターネットからアクセス可能
なプリンターは「30,532ノード」;
– 318@オーストラリア
– 8910@...
© 2019 Synopsys, Inc. 12
URGENT/11、組み込みOSの致命的な脆弱性
医療機器にも⼤きな影響、FDA(⽶国⾷品医薬品局)が警告
https://www.fda.gov/news-events/press-annou...
© 2019 Synopsys, Inc. 13
Ripple20、TCP/IPライブラリの重⼤な脆弱性
数億台の組み込み機器に影響
https://blog.kaspersky.co.jp/ripple20-vulnerabilities/2...
© 2019 Synopsys, Inc. 14
GDPR規制とIoT(ネットワーク化された機器)
• GDPRは機器に対するセキュリティ対策を規定
していないが、個⼈情報取扱規程に準ずる必要
がある
• Global Privacy Enfo...
© 2019 Synopsys, Inc. 15
無償利⽤可能な静的解析ツール”Coverity scan”
© 2019 Synopsys, Inc. 16
そもそも静的解析ってなんだっけ?
静的解析とは、ソースコードを解析して以下
のことを調べる:
• コーディング・エラー
• セキュリティ上の問題
• テストが不⼗分な⾏、ファイル、関数
© 2019 Synopsys, Inc. 17
そもそも静的解析ってなんだっけ?
1. 最初に、コードをスキャン
2. 次に、呼び出しや依存関係を計算
© 2019 Synopsys, Inc. 18
そもそも静的解析ってなんだっけ?
3. 続いて、コード内のすべての可能なパスを計算
• ⾔語によるが、if-else、caseあるいはswitchなどによってパスが
ノードとともに追加される
4...
© 2019 Synopsys, Inc. 19
• 例:
char buf[10], cp_buf[10];
fgets(buf, 10, stdin);
strcpy(cp_buf, buf);
• ⼀部の関数の戻りを確認する必要がある。
...
© 2019 Synopsys, Inc. 20
静的解析でどんなことがわかるか?
• デッドコードは、実⾏されないコードブロッ
クがある場合に発⽣する。
• 開発者にプログラミングエラーがあり、その
原因となる条件がfalseであることが保証...
© 2019 Synopsys, Inc. 21
静的解析でどんなことがわかるか?
• i2c_read()にエラーがあるとどうなるか?
• チームは何が適切かについてどのように同意
するか?
• bufは常に0x0に初期化されるか?
CHEC...
© 2019 Synopsys, Inc. 22
例えば、Pythonの開発者達は使っている
• Coverityの静的コード分析はコードを実⾏せず、
代わりに、抽象的な解釈を使⽤して、コードの
制御フローとデータフローに関する情報を取得
する...
© 2019 Synopsys, Inc. 23
Coverity scanにアカウントを作成
webブラウザーでscan.coverity.comへアクセス
https://scan.coverity.com/
アカウントを作るには、
右上の...
© 2019 Synopsys, Inc. 24
プロジェクトを選択する
“contributor” じゃないとスキャンできません!
Coverity scanを使っているプロジェクト
はここから選択できる
試しに”tomcat”を検索してみる
© 2019 Synopsys, Inc. 25
スキャンレポートを⾒てみる
Tomcatのプロジェクトのスキャン結果レポート
検索結果の⼀覧から、
Apache Tomcatのプロジェクトのリンク(左端)を
クリックしてレポートを表⽰
プロジ...
© 2019 Synopsys, Inc. 26
スキャンレポートを⾒てみる
メトリクスは全体とコンポーネント毎で確認できる
対象バージョン、スキャンした⽇付、⾏数、バグ密度、
新たに発⾒されたバグ、総数、修正済みなど
コンポーネントごとの⾏数...
© 2019 Synopsys, Inc. 27
スキャンレポートを⾒てみる
CWEトップ25ごと、コンポーネントごとの内訳
CWEのIDをクリックするとMITREのページ
へジャンプ!
© 2019 Synopsys, Inc. 28
スキャンのためのビルドツールを使う
• ⾔語を選択してビルドツールをダウンロード
• ビルドツールでアップロード⽤のパッケージ
を作成
– MacOSだと右の画⾯のようになる
ビルドツールをダウ...
© 2019 Synopsys, Inc. 29
スキャンのためのビルドツールを使う
ビルドツールをダウンロードして環境を構築する
• パッケージの作成に成功したかどうか念のた
めに”tail cov-int/build-log.txt”で確認...
© 2019 Synopsys, Inc. 30
スキャンのためのビルドツールを使う
ビルドツールをダウンロードして環境を構築する
• Coverity scanにビルドをアップロードするに
は、マニュアルでやってみる
– コマンドラインから⾃...
© 2019 Synopsys, Inc. 31
スキャンのためのビルドツールを使う
スキャン成功!バグを⾒てみよう
• メトリクスを確認する
• 最終解析⽇は2020年8⽉14⽇
• バグは11
• スキャンしたコードは7464⾏
• バグ密...
© 2019 Synopsys, Inc. 32
バグを確認する
• 212175 DOM-ベース・XSS
• 別のユーザーが表⽰またはアクセスしたWebペー
ジ上で任意のJavaScriptを実⾏できます。セッ
ションのハイジャック、DOMで...
© 2019 Synopsys, Inc. 33
商⽤製品”Coverity“との⽐較
© 2019 Synopsys, Inc. 34
商⽤版Coverity v.s. 無償版Coverity scan
• ⾔語サポートの豊富さ • フレームワークのサポート
当然のことながらできることに⼤きな差がある
© 2019 Synopsys, Inc. 35
商⽤版Coverityのメリット
• 商⽤版はIDEから直接呼び出すことができる
• もちろん各種コンパイラーをサポート
• JenkinsでCI/CDパイプラインに統合可能
• JIRAなどと...
© 2019 Synopsys, Inc. 36
まとめ
© 2019 Synopsys, Inc. 37
• そもそも静的解析は開発者の作業、コードがちゃんと書けているか教えてくれる
– ⾃分の書いたコードが既知の脆弱性を抱えているかどうかを教えてくれる
– コードレビューにかかる時間を劇的に短縮し...
Nächste SlideShare
Wird geladen in …5
×

【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる

Developers Summit 2020 KANSAI【B-4】松岡様のセッション資料です。

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる

  1. 1. ⽇本シノプシス合同会社 Software Integrity Group 松岡正⼈ オープンソース開発で フリー静的解析ツールを使ってみる
  2. 2. © 2019 Synopsys, Inc. 2 • Synopsysのご紹介 • 脆弱性によって何が起こったか? • 無償利⽤可能な静的解析ツール”Coverity scan” • 商⽤製品”Coverity“との⽐較 • まとめ アジェンダ
  3. 3. © 2019 Synopsys, Inc. 3 Synopsysのご紹介
  4. 4. © 2019 Synopsys, Inc. 4 シノプシス:市場と技術のリーダー シリコン設計 および検証 シリコン IP ソフトウェア インテグリティ 新興市場のリーダー 広範なポートフォリオ 15〜20%の成⻑率 世界 2位のIPベンダー 2桁の成⻑率 業界のリーダー 1桁後半の成⻑率 6年 約10%の売り上げ 16年 約20%の売り上げ 31年 約65%の売り上げ
  5. 5. © 2019 Synopsys, Inc. 5 FY19 売上⾼: ~$3.4B 従業員数: ~14,200 保有特許数: ~3,250 “Silicon to Software™” 半導体設計からソフトウェア開発に⾄る領域をカバー Canada Chile Japan 303 S. Korea Russia China 1,212 India 2,847 Armenia Israel Europe 2,576 Southeast Asia 854 Taiwan USA 4,671 電⼦設計⾃動化(EDA)ツール およびサービスで業界1位 広範な半導体設計資産(IP) ポートフォリオ インタフェース、アナログ、組 み込みメモリーおよび物理IPで 業界1位 Gartnerʼs Magic Quadrant for application security testingにお けるリーダー 事業所数: ~130 $ 0 500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 '10 '11 '12 '13 '14 '15 '16 '17 '18 '19 '20E * $Millions
  6. 6. © 2019 Synopsys, Inc. 6 • 2015年 • Heartbleedを発⾒した 技術とチーム • 2014年 • セキュリティと品質、 静的解析のリーダー • 2016年 • 400⼈以上の セキュリティ専⾨家 • マネージドサービスと プロフェッショナルサー ビス • 2017年 • OSSセキュリティと リスク管理ツールと 専⾨家 セキュリティと品質はシノプシスのDNA • 2020年 • 先進的なDAST技術 • Web API のセキュリティ
  7. 7. © 2019 Synopsys, Inc. 7 ソフトウェア開発・セキュリティ市場でのポジション ソフトウェア静的解析、コンポジション解析、総合セキュリティテストでリーダーの評価 Forrester Wave Static Application Security Testing Forrester Wave Software Composition Analysis Gartner Magic Quadrant Application Security Testing https://www.synopsys.com/software-integrity/resources/analyst- reports/2020-gartner-magic-quadrant.html https://www.synopsys.com/software-integrity/resources/analyst- reports/forrester-software-composition-analysis-2019.html?cmp=pr- sig
  8. 8. © 2019 Synopsys, Inc. 8 多彩な業界でソフトウェアのセキュリティと品質を牽引 モバイルおよび コンシューマ機器 エンタープライズ ソフトウェアおよび ネットワーク ⾼信頼性システム ⾦融サービス
  9. 9. © 2019 Synopsys, Inc. 9 脆弱性によって何が起こったか?
  10. 10. © 2019 Synopsys, Inc. 10 脆弱性を悪⽤されるサイバーインシデントは最⼤のビジネスリスク サイバーインシデントは最⼤のリスクに https://www.agcs.allianz.com/content/dam/onemarketing/agcs/agcs/reports/Allianz-Risk-Barometer-2019.pdf
  11. 11. © 2019 Synopsys, Inc. 11 プリンターのハッキング • 記事では、可能な攻撃について解説 • Shodanでインターネットからアクセス可能 なプリンターは「30,532ノード」; – 318@オーストラリア – 8910@⽶国 • 「PRET」を使えば、プリンターに保存され た⽂書にアクセスできる – https://www.youtube.com/watch?v=DwKzSO4yA_s • DoS攻撃含めたプリンターへの攻撃だけでな く、プリンターを介しての攻撃に悪⽤される ことが⼤きなリスク オフィスプリンターもホームプリンターもネットワークにつながっている https://www.csoonline.com/article/3502543/could-you-be-hacked-by-your-printer.html
  12. 12. © 2019 Synopsys, Inc. 12 URGENT/11、組み込みOSの致命的な脆弱性 医療機器にも⼤きな影響、FDA(⽶国⾷品医薬品局)が警告 https://www.fda.gov/news-events/press-announcements/fda-informs-patients-providers-and-manufacturers-about-potential-cybersecurity-vulnerabilities • 影響のあった組み込みOS – VxWorks (by Wind River) – Operating System Embedded (OSE) (by ENEA) – INTEGRITY (by GreenHills) – ThreadX (by Microsoft) – ITRON (by TRON) – ZebOS (by IP Infusion) • CVE⼀覧 – CVE-2019-12256、CVE-2019-12255、CVE- 2019-12260、CVE-2019-12261、CVE-2019- 12263、CVE-2019-12257 – CVE-2019-12258、CVE-2019-12262、CVE- 2019-12264、 CVE-2019-12259、CVE-2019- 12265
  13. 13. © 2019 Synopsys, Inc. 13 Ripple20、TCP/IPライブラリの重⼤な脆弱性 数億台の組み込み機器に影響 https://blog.kaspersky.co.jp/ripple20-vulnerabilities/28699/ • イスラエルのJSOF社が発⾒ – Black Hat USA, August 2020にて公開予定 • CVE⼀覧 – CVE-2020-11896〜11914(19個) • 影響のあるメーカーの⼀覧 – https://www.jsof-tech.com/ripple20/#ripple- whitepaper • ⽇本では図研エルミック社の「KASAGO」が 対象 – https://www.elwsc.co.jp/news/4136/
  14. 14. © 2019 Synopsys, Inc. 14 GDPR規制とIoT(ネットワーク化された機器) • GDPRは機器に対するセキュリティ対策を規定 していないが、個⼈情報取扱規程に準ずる必要 がある • Global Privacy Enforcement Networkの調査で は300台以上の機器から以下の課題が⾒つかっ た(2016年) – 59% は個⼈情報の取得、使⽤、開⽰の説明が不適 当 – 68% はデータ格納の説明が不適当 – 72% はデータの消去⽅法の説明が不適当 – 38% はプライバシーの懸念についての問い合わせ 先が⽰されていない • 違反した場合の制裁⾦ – 1000 万ユーロ以下、または、 直前の会計年度の 全世界の売上総額の2%以下の⾦額のいずれか⾼ 額の⽅ – https://www.ppc.go.jp/enforcement/infoprovision/laws/GDPR/ IoT化された機器が増えることで個⼈情報やデータ漏洩のリスクは増⼤している https://eugdprcompliant.com/internet-of-things-era-of-gdpr/
  15. 15. © 2019 Synopsys, Inc. 15 無償利⽤可能な静的解析ツール”Coverity scan”
  16. 16. © 2019 Synopsys, Inc. 16 そもそも静的解析ってなんだっけ? 静的解析とは、ソースコードを解析して以下 のことを調べる: • コーディング・エラー • セキュリティ上の問題 • テストが不⼗分な⾏、ファイル、関数
  17. 17. © 2019 Synopsys, Inc. 17 そもそも静的解析ってなんだっけ? 1. 最初に、コードをスキャン 2. 次に、呼び出しや依存関係を計算
  18. 18. © 2019 Synopsys, Inc. 18 そもそも静的解析ってなんだっけ? 3. 続いて、コード内のすべての可能なパスを計算 • ⾔語によるが、if-else、caseあるいはswitchなどによってパスが ノードとともに追加される 4.最後に、すべてのパスを通って⽋陥(バグ)を探す
  19. 19. © 2019 Synopsys, Inc. 19 • 例: char buf[10], cp_buf[10]; fgets(buf, 10, stdin); strcpy(cp_buf, buf); • ⼀部の関数の戻りを確認する必要がある。 • チェックに失敗すると、プログラムのクラッシュ、ハッカーによる深刻なセキュリティの悪⽤、 または意図しないプログラムの動作が発⽣する可能性がある。 主なバグ ‒ CHECKED_RETURN (11%) 静的解析でどんなことがわかるか? fgets()でエラーが発⽣した場合、 また、bufがnullで終了していない場合は 「バッファオーバーフロー」
  20. 20. © 2019 Synopsys, Inc. 20 静的解析でどんなことがわかるか? • デッドコードは、実⾏されないコードブロッ クがある場合に発⽣する。 • 開発者にプログラミングエラーがあり、その 原因となる条件がfalseであることが保証さ れていることがわかる。 • 開発者は誤った仮定をすることもできる。 主なバグ ‒ デッドコード
  21. 21. © 2019 Synopsys, Inc. 21 静的解析でどんなことがわかるか? • i2c_read()にエラーがあるとどうなるか? • チームは何が適切かについてどのように同意 するか? • bufは常に0x0に初期化されるか? CHECK_RETURN ‒ どのように処理するか(CID17995)
  22. 22. © 2019 Synopsys, Inc. 22 例えば、Pythonの開発者達は使っている • Coverityの静的コード分析はコードを実⾏せず、 代わりに、抽象的な解釈を使⽤して、コードの 制御フローとデータフローに関する情報を取得 する。 • プログラムが取る可能性のあるすべてのコード パスをたどることができる。 • たとえば、アナライザーは、malloc()が後で free()で解放する必要があるメモリを返すこと を理解している。 • すべての分岐と関数呼び出しをたどって、考え られるすべての組み合わせがメモリを解放する かどうかを確認する。 • アナライザーは、リソースリーク(メモリ、 ファイル記述⼦)、NULL逆参照、解放後の使 ⽤、未チェックの戻り値、デッドコード、バッ ファーオーバーフロー、整数オーバーフロー、 初期化されていない変数など、あらゆる種類の 問題を検出できる。 Coverity scanを使ってCコードを解析している https://devguide.python.org/coverity/
  23. 23. © 2019 Synopsys, Inc. 23 Coverity scanにアカウントを作成 webブラウザーでscan.coverity.comへアクセス https://scan.coverity.com/ アカウントを作るには、 右上の「Sign Up」ボタンをクリックする 名前、メール、パスワー ドを⼊⼒して「Sign Up」 をクリック GitHubのアカウントでもOK
  24. 24. © 2019 Synopsys, Inc. 24 プロジェクトを選択する “contributor” じゃないとスキャンできません! Coverity scanを使っているプロジェクト はここから選択できる 試しに”tomcat”を検索してみる
  25. 25. © 2019 Synopsys, Inc. 25 スキャンレポートを⾒てみる Tomcatのプロジェクトのスキャン結果レポート 検索結果の⼀覧から、 Apache Tomcatのプロジェクトのリンク(左端)を クリックしてレポートを表⽰ プロジェクトのスキャンをいつから始めた か、最後のスキャンしたビルド、⾔語、リ ポジトリなどの基礎情報
  26. 26. © 2019 Synopsys, Inc. 26 スキャンレポートを⾒てみる メトリクスは全体とコンポーネント毎で確認できる 対象バージョン、スキャンした⽇付、⾏数、バグ密度、 新たに発⾒されたバグ、総数、修正済みなど コンポーネントごとの⾏数やバグ密度
  27. 27. © 2019 Synopsys, Inc. 27 スキャンレポートを⾒てみる CWEトップ25ごと、コンポーネントごとの内訳 CWEのIDをクリックするとMITREのページ へジャンプ!
  28. 28. © 2019 Synopsys, Inc. 28 スキャンのためのビルドツールを使う • ⾔語を選択してビルドツールをダウンロード • ビルドツールでアップロード⽤のパッケージ を作成 – MacOSだと右の画⾯のようになる ビルドツールをダウンロードして環境を構築する
  29. 29. © 2019 Synopsys, Inc. 29 スキャンのためのビルドツールを使う ビルドツールをダウンロードして環境を構築する • パッケージの作成に成功したかどうか念のた めに”tail cov-int/build-log.txt”で確認してお く • ビルドで⽣成される”cov-int”の中⾝はこんな 感じ • ”cov-int“をzipで圧縮して出来上がり
  30. 30. © 2019 Synopsys, Inc. 30 スキャンのためのビルドツールを使う ビルドツールをダウンロードして環境を構築する • Coverity scanにビルドをアップロードするに は、マニュアルでやってみる – コマンドラインから⾃動実⾏もできる • ビルドの設定に失敗するとこのあと”failed” メールが⾶んでくる • ⾔語の指定やライセンスの種別の指定に注意 すること
  31. 31. © 2019 Synopsys, Inc. 31 スキャンのためのビルドツールを使う スキャン成功!バグを⾒てみよう • メトリクスを確認する • 最終解析⽇は2020年8⽉14⽇ • バグは11 • スキャンしたコードは7464⾏ • バグ密度は”1.48” • “View Defects”をクリックして詳細を確認
  32. 32. © 2019 Synopsys, Inc. 32 バグを確認する • 212175 DOM-ベース・XSS • 別のユーザーが表⽰またはアクセスしたWebペー ジ上で任意のJavaScriptを実⾏できます。セッ ションのハイジャック、DOMでの機密データの開 ⽰、キーボードとマウスのイベントの表⽰が可能 になる可能性があります。 • xmlHttp.onreadystatechange:信頼できないユー ザー提供のデータが、JavaScriptを実⾏できるコ ンテキストに挿⼊されます。(CWE-79) バグの詳細が表⽰される(ただし英語)
  33. 33. © 2019 Synopsys, Inc. 33 商⽤製品”Coverity“との⽐較
  34. 34. © 2019 Synopsys, Inc. 34 商⽤版Coverity v.s. 無償版Coverity scan • ⾔語サポートの豊富さ • フレームワークのサポート 当然のことながらできることに⼤きな差がある
  35. 35. © 2019 Synopsys, Inc. 35 商⽤版Coverityのメリット • 商⽤版はIDEから直接呼び出すことができる • もちろん各種コンパイラーをサポート • JenkinsでCI/CDパイプラインに統合可能 • JIRAなどと連動も容易 • CERT、MISRAなどのコーディング規約に基 づいたコーディングエラーも調べてくれる • もちろん、UIやヘルプなどのドキュメントも ⽇本語版が提供されている • 技術サポートが得られる(無償版にはないの で基本⾃⼰解決) IDEやJenkins、JIRAなどといった開発環境との統合が容易
  36. 36. © 2019 Synopsys, Inc. 36 まとめ
  37. 37. © 2019 Synopsys, Inc. 37 • そもそも静的解析は開発者の作業、コードがちゃんと書けているか教えてくれる – ⾃分の書いたコードが既知の脆弱性を抱えているかどうかを教えてくれる – コードレビューにかかる時間を劇的に短縮してくれる – 機能が正常に動作することをテストするものではないので、単体テストはもちろん必要 • 商⽤版の静的解析ツールを使ったことがないなら、Coverity scanのようなツールは便利 – でも、OSSにしか使⽤できないので、商⽤コードのスキャンはこれではできない • それでも、IDEから直接利⽤できるなど商⽤版のメリットは⼤きい – 業界ごとの規定や規制、認証制度などに沿ったコードの品質であることを⽰すためのチェッカーやレ ポート機能 – すぐに使える各種ツールとの連携の⾃動化機能 まとめ

×