Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019

494 visualizaciones

Publicado el

ゲーム開発における品質と納期の要求は、ますます厳しくなっています。また、開発におけるオープンソースの利用ももはや欠かすことはできず、OSSのライセンスリスク対策も大きな課題になっています。シノプシスは、No.1の実績と精度を誇る静的解析「Coverity」や、やはりNo.1の実績と膨大なDBによるOSS管理「Black Duck」で、これらのゲーム開発における課題への対応を支援します。このセッションでは、シノプシスのゲーム開発ソリューションの特長や活用方法とそのメリットを詳しく紹介いたします。

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019

  1. 1. © 2017 Synopsys, Inc. 1 品質と開発スピードの両立と、OSSのリスク低減策のご紹介 日本シノプシス ソフトウェア・インテグリティ・グループ シニアセールスエンジニア 吉井雅人
  2. 2. © 2017 Synopsys, Inc. 2 ゲーム開発における課題 •短期間で高品質なゲームをリリースしなければならない –リリーススケジュールの遵守 –高品質 •OSSを適正に利用しなければならない –OSSライセンスリスク –OSS脆弱性
  3. 3. © 2017 Synopsys, Inc. 3 品質と開発スピードの両立のために Coverity
  4. 4. © 2016 Synopsys, Inc. 4 バグはどこにあるでしょう? int simple_example(int c) { void *p = malloc(10); if(c) return -1; /* ... */ free(p); return 0; }
  5. 5. © 2016 Synopsys, Inc. 5 バグはどこにあるでしょう? #include <stdio.h> void print(int srcId, int dstId){ printf("source Id is %d. n", srcId); printf("destination Id is %d. n", dstId); } void test() { int srcId = 1; int dstId = 2; print(dstId, srcId); }
  6. 6. © 2017 Synopsys, Inc. 6 早期のバグ修正で後工程の手間を減らします 設計 開発 QA 製品リリース & 管理 5倍のコスト 10倍のコスト 30倍のコスト Coverity 早い段階で不具合を除去
  7. 7. © 2017 Synopsys, Inc. 7 静的解析技術の種類 •パターンマッチング系 –バグに陥りやすい書き方を指摘 –予め定義したコーディングルールに対し違反がないかを確認 –PGRelief, QACなど •ランタイムエラー検出系 –バグ自体を検出 –従来、実行時でないと確認できなかった、メモリリーク、データ破壊、データ競合など を静的に検出
  8. 8. © 2016 Synopsys, Inc. 8 コードをより深く解析 • アプリケーション全体にわたって関数呼び 出しを追跡 • 人によるインスペクションではミスする複 雑な不具合を検出 • プログラムの目的を推測し、予期しない動作 を報告 int *p = myfunc(sizeof(int)); if(p != 0) p=&a; ... int *p = myfunc(sizeof(int)); if(p != 0) p=&b; int *p = myfunc(sizeof(int)); p=&c; たぶん正しい たぶん間違い 統計的な解析プロシージャ間解析&フルパス解析
  9. 9. © 2017 Synopsys, Inc. 9 Coverityがサポートする言語 言語 セキュリティ チェッカー 2014 2015 2016 2017 2018 C/C++ ー Java ○ C# ○ Objective-C ー JavaScript ○ Python ○ PHP ○ Ruby ○(2018予定) Fortran ー Swift ○ Scala ー VB.NET ー
  10. 10. © 2017 Synopsys, Inc. 10 Coverityがサポートするコンパイラ / 開発環境 (一部) • Visual Studio • GCC • Clang • PS4 • Nintendo Switch SDK • Microsoft Xbox One • Xcode • Android Studio • Unity(Visual Studioが必要) • Unreal Engine • Cocos-2d-x など多数
  11. 11. © 2017 Synopsys, Inc. 11 C/C++ 並列処理の問題 •デッドロック •競合状態 パフォーマンスの低下 •メモリ・リーク •スタックの使用度合い クラッシュの原因 •Null ポインタの間接参照 •ポインタの解放後のメモリ使用 •二重解放 •配列の新規作成と削除の不一致 プログラムの不正な動作 •デッドコード •未初期化変数 •負の変数の無効な使用 •コピー&ペーストのミス •異なる分岐に対して同じコードを利用 セキュリティ上の脆弱性 •バッファ・オーバーフロー Java 並列処理の問題 •デッドロック •競合状態 パフォーマンス低下/スケーリングの制限 •リソース・リーク •データベース接続リーク クラッシュの原因 •Null の間接参照 プログラムの不正な動作 •デッドコード •未初期化変数 •コピー&ペーストのミス •異なる分岐に対して同じコードを利用 Webアプリケーションセキュリティ •SQLインジェクション •XSS •CSRF Androidセキュリティ •Mobile IDの誤用 検出可能な不具合タイプ(一部)
  12. 12. © 2017 Synopsys, Inc. 12 JavaScript クラッシュの原因 •Null の間接参照 プログラムの不正な動作 •デッドコード •コピー&ペーストのミス •異なる分岐に対して同じコードを利用 •識別子のタイポ AngularJS •AngularJS Express インジェクション Webアプリケーションセキュリティ •SQLインジェクション •XSS •CSRF •センシティブなデータのリーク •脆弱な暗号アルゴリズム PHP / Python クラッシュの原因 •Null の間接参照 プログラムの不正な動作 •デッドコード •コピー&ペーストのミス •異なる分岐に対して同じコードを利用 •識別子のタイポ Webアプリケーションセキュリティ •SQLインジェクション •XSS •CSRF 検出可能な不具合タイプ(一部)
  13. 13. © 2017 Synopsys, Inc. 17 開発者にやさしい、わかりやすい修正方法 • XSS の脆弱性は発生するコンテキストに応じて適切なエスケープ処理が変わります。 • どうすれば正しく直せるのでしょう? HTML script タグ内の JavaScript String 用の エスケープが必要 HTML用のエスケープが必要
  14. 14. © 2017 Synopsys, Inc. 19 Coverity システムアーキテクチャ ビルド 解析 コミット 発行リポジトリ ビルド・解析サーバー (Coverity Static Analysis) 不具合閲覧サーバー (Coverity Connect) Web サーバー 不具合データベース クライアント cov-analysis-<Platform>-<Version> cov-platform-<Platform>-<Version>
  15. 15. © 2017 Synopsys, Inc. 20 Coverity Connect 解析環境 Policy Manager コベリティ運用のベストプラクティス 解析環境
  16. 16. © 2017 Synopsys, Inc. 21 OSSのリスクの低減のために Black Duck Hub
  17. 17. © 2017 Synopsys, Inc. 22 OSSの利用の広がり
  18. 18. © 2017 Synopsys, Inc. 23 OSSのリスク • OSS部分の脆弱性を攻撃されるリスク 1.セキュリティ • ライセンスの条件を遵守していない場合、最悪の 場合は訴訟に至る ライセンス • 活発に開発がされていないOSSコミュニテイでは、 脆弱性修正や新機能追加が行われないリスク 運用
  19. 19. © 2017 Synopsys, Inc. 24 OSSのセキュリティ脆弱性 0 1000 2000 3000 4000 5000 6000 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 New Open Source Vulnerabilities per Year 2017年に4898件の 脆弱性
  20. 20. © 2017 Synopsys, Inc. 25 ソフトウェアに含まれるOSSの脆弱性 のアプリケー ションは既知 のOSS脆弱性 を含む 個々のアプリケーショ ンに含まれるOSS脆弱 性の個数 Heartbleed, Poodle, Freak, Drownを 含む割合 セキュリティ脆弱性 が深刻である割合 個々のアプリケー ションに含まれる OSSコンポーネント の個数 セキュリティ脆弱 性の発見からの平 均経過年数
  21. 21. © 2017 Synopsys, Inc. 26 OSSの脆弱性への対応 • Heartbleed (2014年4月) • 大部分の会社が2014年末までに修正対応 • 弊社監査サービスの結果 • 2015年末で10%のアプリに存在 • 2016年末で7%のアプリに存在 • Poodle (2014年10月) • 大部分の会社が2014年末までに修正対応 • 2015年3月 • 某Anti Virusベンダーが修正対応 • 2016年12月 • 某銀行アプリが修正対応
  22. 22. © 2017 Synopsys, Inc. 27 OSSのリスクが顕在化した例 •Equifaxの例 –Apache Struts2の脆弱性が原因 –CVE-2017-5638 –1億4300万人の個人情報が流出 –訴訟多数 –CEO、CIO、CSOが辞任
  23. 23. © 2017 Synopsys, Inc. 28 OSSライセンスに対するよくある誤解 [誤解1]OSSは条件なく無償で使える ⇒無償で利用できるが、利用するためには条件がある ⇒条件はライセンスによる。様々な条件がある ⇒そのソフトウェアの著作権者が決定する [誤解2]OSSは利用すると訴えられるので使わない ⇒条件を守って利用すれば全く問題ない ⇒現在のソフトウエア開発でOSSを使わないということは現実的ではない ⇒便利なOSSを使わないでいると開発スピードが遅くなり、競合他社に負ける
  24. 24. © 2017 Synopsys, Inc. 29 OSSライセンスに対する考え方 • OSSはOSSの著作者からのプレゼントである • そのプレゼントをどのように使ってほしいか、著作者の思いを表現したものがライセンス • プレゼントを利用する以上、ライセンスを遵守する必要がある
  25. 25. © 2017 Synopsys, Inc. 30 OSSライセンス概要 OSSライセンスの 類型 代表的な ライセンス 利用時にユーザーがしなければならないこと コピーレフト GPLv2 GPL v3 AGPL • ライセンステキストの添付 • OSSのソースコードの開示 • OSSを改変した部分のソースコードの開示 • リンクした範囲のソースコードの開示 準コピーレフト LGPL 3, LGPL2.1 MPL 2.0 EPL • ライセンステキストの添付 • OSSのソースコードの開示 • OSSを改変した部分のソースコードの開示 非コピーレフト BSD 2,3-clause Apache 2.0 MIT License • ライセンステキストの添付
  26. 26. © 2017 Synopsys, Inc. 31 OSSライセンス条件はいつ発動するのか 入手 •Webからダウンロード 修正 •ソースコード修正・改変 実行 •コンパイル後実行 頒布 •販売、提供 • 自家使用は頒布にならない • ゲームソフトウェアは基本的に「配布」という行為が発生する
  27. 27. © 2017 Synopsys, Inc. 32 GPL違反発覚事例 https://japanese.engadget.com/2007/11/29/ico-gpl/ 2007年11月のGPL違反事例。 これにより日本のゲーム業界にOSS管理の取り組みが 急速に広がる。 しかし、10年経ってこの教訓を知らない世代が増えて いる現状がある。
  28. 28. © 2017 Synopsys, Inc. 33 OSS管理の課題 OSSを特定することが困難 • SDLC最終段階での集計 • バージョンの特定 • 多大な労力 OSSの一覧表を一覧表で管理 • 日々バージョンアップするOSS • 精度の欠如、現実との乖離 • 依存関係の把握が困難 コストのかかるOSSコミュニティの監視 • 様々な情報源からの脆弱性情報入手 • ライセンスの変更を検知 • 人海戦術
  29. 29. © 2017 Synopsys, Inc. 34 OSS管理のために必要なこと 特定 管理 監視
  30. 30. © 2017 Synopsys, Inc. 35 特定
  31. 31. © 2017 Synopsys, Inc. 36 OSSの特定 • ファイルハッシュとフォルダ構造をKBと比較 apache-log4j-1.2.17 src main java pattern varia xml Appender.java 4 KB Category.java 32 KB Layout.java 7 KB Logger.java 10 KB LogManager.java 12 KB フォルダ構造 ファイルサイズ ファイル名 ファイル内容 (ハッシュ)
  32. 32. © 2017 Synopsys, Inc. 37 BlackDuck Hub アーキテクチャ HTTPS Open Source Detection On-Premise Black Duck KnowledgeBase Black Duck Datacenter Hub Web Application HTTPS On-Premise / SaaS
  33. 33. © 2017 Synopsys, Inc. 38 Black Duck Hub ナレッジベース 15 Years of OSS Activity 60 Security Researchers 530 Terabytes of Content 2M Open Source Projects (5M+ Releases) Data Sources 9,000 2,500 License Types 100,000 Open Source Vulnerabilities Black Duck KnowledgeBaseTM
  34. 34. © 2017 Synopsys, Inc. 39 管理
  35. 35. © 2017 Synopsys, Inc. 40 SDLCへの統合
  36. 36. © 2017 Synopsys, Inc. 41
  37. 37. © 2017 Synopsys, Inc. 42
  38. 38. © 2017 Synopsys, Inc. 43
  39. 39. © 2017 Synopsys, Inc. 44 監視
  40. 40. © 2017 Synopsys, Inc. 45
  41. 41. © 2017 Synopsys, Inc. 46 OSSコミュニティの状態を常に把握
  42. 42. © 2017 Synopsys, Inc. 47 OSSの脆弱性が発見された場合のリスク National Vulnerability Database 脆弱性 発見 担当者による 脆弱性の把握 担当者による 脆弱性の修正 脆弱性情報 公開 攻撃者による 攻撃・侵入 攻撃されるリスクが存在 脆弱性 混入
  43. 43. © 2017 Synopsys, Inc. 48 Black Duck Hub: 新たに発見された脆弱性の通知 • Apache Struts 2 の脆弱性 (S2-045/CVE-2017-5638) Black Duck Hubの顧客には脆弱 性情報公開の当日に通知 (2017年3月6日) v2.3.5 脆弱性 混入 National Vulnerability Database NVD 更新 担当者による 脆弱性の把握 2012年10月 攻撃コード 公開 2017年3月7日 2017年3月11日 v2.3.3 2 脆弱性情報 公開 2017年3月6日 担当者による 脆弱性の修正 ! VulnDB
  44. 44. © 2017 Synopsys, Inc. 49 通知された脆弱性への対応方法の示唆
  45. 45. © 2017 Synopsys, Inc. 50 OSS管理の課題とベストプラクティス OSSを特定することが困難 • SDLC最終段階での集計 • バージョンの特定 • 多大な労力 OSSの一覧表の管理 • 日々バージョンアップするOSS • 精度の欠如、現実との乖離 • 依存関係の把握が困難 コストのかかるOSSコミュニティの監視 • 様々な情報源からの脆弱性情報入手 • ライセンスの変更のフォロー • 人海戦術 自動的なOSSの特定 • 巨大なOSSデータベース • 高速かつ高精度の検知 • 開発段階でOSSを検知 最新の状態をBOMで管理 • SDLCへの統合 • ポリシー違反の有無 • コンポーネント • バージョン • 脆弱性 • ライセンス 自動的なOSSコミュニティの監視 • OSSコミュニティの動向を常に監視 • NVDに登録される前の脆弱性を通知 • 変更されたライセンスの自動的な通知
  46. 46. © 2017 Synopsys, Inc. 51 まとめ •短期間で高品質なゲーム をリリースしなければな らない –リリーススケジュールの 遵守 –高品質(不具合が少ない) •OSSを適正に利用しなけ ればならない –OSSライセンスリスク –OSS脆弱性 Coverity BlackDuck Hub
  47. 47. Thank You

×