SlideShare a Scribd company logo
⽇本シノプシス合同会社
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ベンダー
2桁の成⻑率
業界のリーダー
1桁後半の成⻑率
6年
約10%の売り上げ
16年
約20%の売り上げ
31年
約65%の売り上げ
© 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
© 2019 Synopsys, Inc. 6
• 2015年
• Heartbleedを発⾒した
技術とチーム
• 2014年
• セキュリティと品質、
静的解析のリーダー
• 2016年
• 400⼈以上の
セキュリティ専⾨家
• マネージドサービスと
プロフェッショナルサー
ビス
• 2017年
• OSSセキュリティと
リスク管理ツールと
専⾨家
セキュリティと品質はシノプシスのDNA
• 2020年
• 先進的なDAST技術
• Web API のセキュリティ
© 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
© 2019 Synopsys, Inc. 8
多彩な業界でソフトウェアのセキュリティと品質を牽引
モバイルおよび
コンシューマ機器
エンタープライズ
ソフトウェアおよび
ネットワーク
⾼信頼性システム ⾦融サービス
© 2019 Synopsys, Inc. 9
脆弱性によって何が起こったか?
© 2019 Synopsys, Inc. 10
脆弱性を悪⽤されるサイバーインシデントは最⼤のビジネスリスク
サイバーインシデントは最⼤のリスクに
https://www.agcs.allianz.com/content/dam/onemarketing/agcs/agcs/reports/Allianz-Risk-Barometer-2019.pdf
© 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
© 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
© 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/
© 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/
© 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);
• ⼀部の関数の戻りを確認する必要がある。
• チェックに失敗すると、プログラムのクラッシュ、ハッカーによる深刻なセキュリティの悪⽤、
または意図しないプログラムの動作が発⽣する可能性がある。
主なバグ ‒ CHECKED_RETURN (11%)
静的解析でどんなことがわかるか?
fgets()でエラーが発⽣した場合、
また、bufがnullで終了していない場合は
「バッファオーバーフロー」
© 2019 Synopsys, Inc. 20
静的解析でどんなことがわかるか?
• デッドコードは、実⾏されないコードブロッ
クがある場合に発⽣する。
• 開発者にプログラミングエラーがあり、その
原因となる条件がfalseであることが保証さ
れていることがわかる。
• 開発者は誤った仮定をすることもできる。
主なバグ ‒ デッドコード
© 2019 Synopsys, Inc. 21
静的解析でどんなことがわかるか?
• i2c_read()にエラーがあるとどうなるか?
• チームは何が適切かについてどのように同意
するか?
• bufは常に0x0に初期化されるか?
CHECK_RETURN ‒ どのように処理するか(CID17995)
© 2019 Synopsys, Inc. 22
例えば、Pythonの開発者達は使っている
• Coverityの静的コード分析はコードを実⾏せず、
代わりに、抽象的な解釈を使⽤して、コードの
制御フローとデータフローに関する情報を取得
する。
• プログラムが取る可能性のあるすべてのコード
パスをたどることができる。
• たとえば、アナライザーは、malloc()が後で
free()で解放する必要があるメモリを返すこと
を理解している。
• すべての分岐と関数呼び出しをたどって、考え
られるすべての組み合わせがメモリを解放する
かどうかを確認する。
• アナライザーは、リソースリーク(メモリ、
ファイル記述⼦)、NULL逆参照、解放後の使
⽤、未チェックの戻り値、デッドコード、バッ
ファーオーバーフロー、整数オーバーフロー、
初期化されていない変数など、あらゆる種類の
問題を検出できる。
Coverity scanを使ってCコードを解析している
https://devguide.python.org/coverity/
© 2019 Synopsys, Inc. 23
Coverity scanにアカウントを作成
webブラウザーでscan.coverity.comへアクセス
https://scan.coverity.com/
アカウントを作るには、
右上の「Sign Up」ボタンをクリックする 名前、メール、パスワー
ドを⼊⼒して「Sign Up」
をクリック
GitHubのアカウントでもOK
© 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”で確認してお
く
• ビルドで⽣成される”cov-int”の中⾝はこんな
感じ
• ”cov-int“をzipで圧縮して出来上がり
© 2019 Synopsys, Inc. 30
スキャンのためのビルドツールを使う
ビルドツールをダウンロードして環境を構築する
• Coverity scanにビルドをアップロードするに
は、マニュアルでやってみる
– コマンドラインから⾃動実⾏もできる
• ビルドの設定に失敗するとこのあと”failed”
メールが⾶んでくる
• ⾔語の指定やライセンスの種別の指定に注意
すること
© 2019 Synopsys, Inc. 31
スキャンのためのビルドツールを使う
スキャン成功!バグを⾒てみよう
• メトリクスを確認する
• 最終解析⽇は2020年8⽉14⽇
• バグは11
• スキャンしたコードは7464⾏
• バグ密度は”1.48”
• “View Defects”をクリックして詳細を確認
© 2019 Synopsys, Inc. 32
バグを確認する
• 212175 DOM-ベース・XSS
• 別のユーザーが表⽰またはアクセスしたWebペー
ジ上で任意のJavaScriptを実⾏できます。セッ
ションのハイジャック、DOMでの機密データの開
⽰、キーボードとマウスのイベントの表⽰が可能
になる可能性があります。
• xmlHttp.onreadystatechange:信頼できないユー
ザー提供のデータが、JavaScriptを実⾏できるコ
ンテキストに挿⼊されます。(CWE-79)
バグの詳細が表⽰される(ただし英語)
© 2019 Synopsys, Inc. 33
商⽤製品”Coverity“との⽐較
© 2019 Synopsys, Inc. 34
商⽤版Coverity v.s. 無償版Coverity scan
• ⾔語サポートの豊富さ • フレームワークのサポート
当然のことながらできることに⼤きな差がある
© 2019 Synopsys, Inc. 35
商⽤版Coverityのメリット
• 商⽤版はIDEから直接呼び出すことができる
• もちろん各種コンパイラーをサポート
• JenkinsでCI/CDパイプラインに統合可能
• JIRAなどと連動も容易
• CERT、MISRAなどのコーディング規約に基
づいたコーディングエラーも調べてくれる
• もちろん、UIやヘルプなどのドキュメントも
⽇本語版が提供されている
• 技術サポートが得られる(無償版にはないの
で基本⾃⼰解決)
IDEやJenkins、JIRAなどといった開発環境との統合が容易
© 2019 Synopsys, Inc. 36
まとめ
© 2019 Synopsys, Inc. 37
• そもそも静的解析は開発者の作業、コードがちゃんと書けているか教えてくれる
– ⾃分の書いたコードが既知の脆弱性を抱えているかどうかを教えてくれる
– コードレビューにかかる時間を劇的に短縮してくれる
– 機能が正常に動作することをテストするものではないので、単体テストはもちろん必要
• 商⽤版の静的解析ツールを使ったことがないなら、Coverity scanのようなツールは便利
– でも、OSSにしか使⽤できないので、商⽤コードのスキャンはこれではできない
• それでも、IDEから直接利⽤できるなど商⽤版のメリットは⼤きい
– 業界ごとの規定や規制、認証制度などに沿ったコードの品質であることを⽰すためのチェッカーやレ
ポート機能
– すぐに使える各種ツールとの連携の⾃動化機能
まとめ

More Related Content

PDF
DDDをScrumで廻す あるいは ScrumをDDDで廻す
PDF
マイクロサービス 4つの分割アプローチ
PDF
MagicOnion入門
PDF
それはYAGNIか? それとも思考停止か?
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
PDF
ChatGPTは思ったほど賢くない
PPTX
世界一わかりやすいClean Architecture
PDF
ドメイン駆動設計 失敗したことと成功したこと
DDDをScrumで廻す あるいは ScrumをDDDで廻す
マイクロサービス 4つの分割アプローチ
MagicOnion入門
それはYAGNIか? それとも思考停止か?
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ChatGPTは思ったほど賢くない
世界一わかりやすいClean Architecture
ドメイン駆動設計 失敗したことと成功したこと

What's hot (20)

PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
イミュータブルデータモデル(入門編)
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
GraphQLのsubscriptionで出来ること
PDF
ドメイン駆動設計サンプルコードの徹底解説
PDF
マルチテナントのアプリケーション実装〜実践編〜
PDF
Ml system in_python
PDF
ソーシャルゲームのためのデータベース設計
PDF
ウォーターフォールとアジャイルのフェアな比較
PPTX
DeNAの最新のマスタデータ管理システム Oyakata の全容
PDF
なぜ「マイクロサービス“化”」が必要なのか
PPTX
5分で解るセキュアコーディング
PDF
俺も エクストリームプログラミング入門
PDF
人生がときめくAPIテスト自動化 with Karate
PDF
【Unite Tokyo 2018】その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
世界でいちばんわかりやすいドメイン駆動設計
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
PDF
Elasticsearchを使うときの注意点 公開用スライド
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
イミュータブルデータモデル(入門編)
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
Dockerfile を書くためのベストプラクティス解説編
GraphQLのsubscriptionで出来ること
ドメイン駆動設計サンプルコードの徹底解説
マルチテナントのアプリケーション実装〜実践編〜
Ml system in_python
ソーシャルゲームのためのデータベース設計
ウォーターフォールとアジャイルのフェアな比較
DeNAの最新のマスタデータ管理システム Oyakata の全容
なぜ「マイクロサービス“化”」が必要なのか
5分で解るセキュアコーディング
俺も エクストリームプログラミング入門
人生がときめくAPIテスト自動化 with Karate
【Unite Tokyo 2018】その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
世界でいちばんわかりやすいドメイン駆動設計
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Elasticsearchを使うときの注意点 公開用スライド
Ad

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

PDF
【B-6】Androidスマホの生体認証の脆弱性、調べてみたらよくある話だった。
PDF
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
PDF
セキュリティ担当者が見たAWS re:Inforce 2019
PDF
ソースコード検査に耐えるコードとは?
PPTX
Klocworkのご紹介
PDF
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
PPTX
静的解析ツールKlocwork によるCERT-C/CWE対応
PDF
初めてのWebプログラミング講座
PDF
IPv6 アプリケーション開発入門
PDF
New Integration "X" 新インテグレーションソリューション
PDF
2019 1101 dev_io_tokyo_30min_slideshare
PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PDF
2019 1102 jaws_festa_f-secure10min_lt_slideshare
PDF
PHPカンファレンス2014セキュリティ対談資料
PPTX
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
PDF
NIST Cybersecurity Framework 概要
PDF
20200928 aibid (rtb app install) sales deck (jp) v shared
PPTX
Security measures
PDF
2019 1009 f-secure_ali_eater_tokyo13_slideshare
PDF
エンタープライズソフトウェア開発とOSS
【B-6】Androidスマホの生体認証の脆弱性、調べてみたらよくある話だった。
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
セキュリティ担当者が見たAWS re:Inforce 2019
ソースコード検査に耐えるコードとは?
Klocworkのご紹介
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
静的解析ツールKlocwork によるCERT-C/CWE対応
初めてのWebプログラミング講座
IPv6 アプリケーション開発入門
New Integration "X" 新インテグレーションソリューション
2019 1101 dev_io_tokyo_30min_slideshare
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
2019 1102 jaws_festa_f-secure10min_lt_slideshare
PHPカンファレンス2014セキュリティ対談資料
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
NIST Cybersecurity Framework 概要
20200928 aibid (rtb app install) sales deck (jp) v shared
Security measures
2019 1009 f-secure_ali_eater_tokyo13_slideshare
エンタープライズソフトウェア開発とOSS
Ad

More from Developers Summit (20)

PDF
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
PDF
【C-2・小林様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
PDF
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
PDF
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
PDF
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
PDF
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
PDF
【14-E-3】セキュリティ・テストの自動化によるDevSecOpsの実現 (デモ有)
PDF
【15-D-2】デンソーのMaaS開発~アジャイル開発で顧客との協調・チームビルディング・実装概要~
PDF
【14-C-8】みんなの暮らしを支えるAmazon S3の裏側、お伝えします
PDF
【14-C-7】コンピュータビジョンを支える深層学習技術の新潮流
PDF
【15-B-7】無意味なアラートからの脱却 ~ Datadogを使ってモダンなモニタリングを始めよう ~
PDF
【15-A-1】ドラゴンクエストXを支える失敗事例
PDF
【15-A-5】ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは~面白さを伝える × 面白く魅せる~
PDF
【B-2】福岡発Node.jsで支える大規模システム!〜「誰ガ為のアルケミスト」と歩んだ三年〜
PDF
【B-5】モダンな開発を実現するツールチェーンのご紹介
PDF
【C-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実現した機械学習
PDF
【A-2】とあるマーケティング部隊とデータエンジニアのデータドリブンへの道
PDF
【B-2】AI時代におけるエンジニアの生存戦略
PDF
【B-2】AI時代のエンジニア生存戦略
PDF
【A-1】AIを支えるGPUコンピューティングの今
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【C-2・小林様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
【14-E-3】セキュリティ・テストの自動化によるDevSecOpsの実現 (デモ有)
【15-D-2】デンソーのMaaS開発~アジャイル開発で顧客との協調・チームビルディング・実装概要~
【14-C-8】みんなの暮らしを支えるAmazon S3の裏側、お伝えします
【14-C-7】コンピュータビジョンを支える深層学習技術の新潮流
【15-B-7】無意味なアラートからの脱却 ~ Datadogを使ってモダンなモニタリングを始めよう ~
【15-A-1】ドラゴンクエストXを支える失敗事例
【15-A-5】ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは~面白さを伝える × 面白く魅せる~
【B-2】福岡発Node.jsで支える大規模システム!〜「誰ガ為のアルケミスト」と歩んだ三年〜
【B-5】モダンな開発を実現するツールチェーンのご紹介
【C-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実現した機械学習
【A-2】とあるマーケティング部隊とデータエンジニアのデータドリブンへの道
【B-2】AI時代におけるエンジニアの生存戦略
【B-2】AI時代のエンジニア生存戦略
【A-1】AIを支えるGPUコンピューティングの今

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

  • 2. © 2019 Synopsys, Inc. 2 • Synopsysのご紹介 • 脆弱性によって何が起こったか? • 無償利⽤可能な静的解析ツール”Coverity scan” • 商⽤製品”Coverity“との⽐較 • まとめ アジェンダ
  • 3. © 2019 Synopsys, Inc. 3 Synopsysのご紹介
  • 4. © 2019 Synopsys, Inc. 4 シノプシス:市場と技術のリーダー シリコン設計 および検証 シリコン IP ソフトウェア インテグリティ 新興市場のリーダー 広範なポートフォリオ 15〜20%の成⻑率 世界 2位のIPベンダー 2桁の成⻑率 業界のリーダー 1桁後半の成⻑率 6年 約10%の売り上げ 16年 約20%の売り上げ 31年 約65%の売り上げ
  • 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. © 2019 Synopsys, Inc. 6 • 2015年 • Heartbleedを発⾒した 技術とチーム • 2014年 • セキュリティと品質、 静的解析のリーダー • 2016年 • 400⼈以上の セキュリティ専⾨家 • マネージドサービスと プロフェッショナルサー ビス • 2017年 • OSSセキュリティと リスク管理ツールと 専⾨家 セキュリティと品質はシノプシスのDNA • 2020年 • 先進的なDAST技術 • Web API のセキュリティ
  • 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. © 2019 Synopsys, Inc. 8 多彩な業界でソフトウェアのセキュリティと品質を牽引 モバイルおよび コンシューマ機器 エンタープライズ ソフトウェアおよび ネットワーク ⾼信頼性システム ⾦融サービス
  • 9. © 2019 Synopsys, Inc. 9 脆弱性によって何が起こったか?
  • 10. © 2019 Synopsys, Inc. 10 脆弱性を悪⽤されるサイバーインシデントは最⼤のビジネスリスク サイバーインシデントは最⼤のリスクに https://www.agcs.allianz.com/content/dam/onemarketing/agcs/agcs/reports/Allianz-Risk-Barometer-2019.pdf
  • 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. © 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. © 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. © 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. © 2019 Synopsys, Inc. 15 無償利⽤可能な静的解析ツール”Coverity scan”
  • 16. © 2019 Synopsys, Inc. 16 そもそも静的解析ってなんだっけ? 静的解析とは、ソースコードを解析して以下 のことを調べる: • コーディング・エラー • セキュリティ上の問題 • テストが不⼗分な⾏、ファイル、関数
  • 17. © 2019 Synopsys, Inc. 17 そもそも静的解析ってなんだっけ? 1. 最初に、コードをスキャン 2. 次に、呼び出しや依存関係を計算
  • 18. © 2019 Synopsys, Inc. 18 そもそも静的解析ってなんだっけ? 3. 続いて、コード内のすべての可能なパスを計算 • ⾔語によるが、if-else、caseあるいはswitchなどによってパスが ノードとともに追加される 4.最後に、すべてのパスを通って⽋陥(バグ)を探す
  • 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. © 2019 Synopsys, Inc. 20 静的解析でどんなことがわかるか? • デッドコードは、実⾏されないコードブロッ クがある場合に発⽣する。 • 開発者にプログラミングエラーがあり、その 原因となる条件がfalseであることが保証さ れていることがわかる。 • 開発者は誤った仮定をすることもできる。 主なバグ ‒ デッドコード
  • 21. © 2019 Synopsys, Inc. 21 静的解析でどんなことがわかるか? • i2c_read()にエラーがあるとどうなるか? • チームは何が適切かについてどのように同意 するか? • bufは常に0x0に初期化されるか? CHECK_RETURN ‒ どのように処理するか(CID17995)
  • 22. © 2019 Synopsys, Inc. 22 例えば、Pythonの開発者達は使っている • Coverityの静的コード分析はコードを実⾏せず、 代わりに、抽象的な解釈を使⽤して、コードの 制御フローとデータフローに関する情報を取得 する。 • プログラムが取る可能性のあるすべてのコード パスをたどることができる。 • たとえば、アナライザーは、malloc()が後で free()で解放する必要があるメモリを返すこと を理解している。 • すべての分岐と関数呼び出しをたどって、考え られるすべての組み合わせがメモリを解放する かどうかを確認する。 • アナライザーは、リソースリーク(メモリ、 ファイル記述⼦)、NULL逆参照、解放後の使 ⽤、未チェックの戻り値、デッドコード、バッ ファーオーバーフロー、整数オーバーフロー、 初期化されていない変数など、あらゆる種類の 問題を検出できる。 Coverity scanを使ってCコードを解析している https://devguide.python.org/coverity/
  • 23. © 2019 Synopsys, Inc. 23 Coverity scanにアカウントを作成 webブラウザーでscan.coverity.comへアクセス https://scan.coverity.com/ アカウントを作るには、 右上の「Sign Up」ボタンをクリックする 名前、メール、パスワー ドを⼊⼒して「Sign Up」 をクリック GitHubのアカウントでもOK
  • 24. © 2019 Synopsys, Inc. 24 プロジェクトを選択する “contributor” じゃないとスキャンできません! Coverity scanを使っているプロジェクト はここから選択できる 試しに”tomcat”を検索してみる
  • 25. © 2019 Synopsys, Inc. 25 スキャンレポートを⾒てみる Tomcatのプロジェクトのスキャン結果レポート 検索結果の⼀覧から、 Apache Tomcatのプロジェクトのリンク(左端)を クリックしてレポートを表⽰ プロジェクトのスキャンをいつから始めた か、最後のスキャンしたビルド、⾔語、リ ポジトリなどの基礎情報
  • 26. © 2019 Synopsys, Inc. 26 スキャンレポートを⾒てみる メトリクスは全体とコンポーネント毎で確認できる 対象バージョン、スキャンした⽇付、⾏数、バグ密度、 新たに発⾒されたバグ、総数、修正済みなど コンポーネントごとの⾏数やバグ密度
  • 27. © 2019 Synopsys, Inc. 27 スキャンレポートを⾒てみる CWEトップ25ごと、コンポーネントごとの内訳 CWEのIDをクリックするとMITREのページ へジャンプ!
  • 28. © 2019 Synopsys, Inc. 28 スキャンのためのビルドツールを使う • ⾔語を選択してビルドツールをダウンロード • ビルドツールでアップロード⽤のパッケージ を作成 – MacOSだと右の画⾯のようになる ビルドツールをダウンロードして環境を構築する
  • 29. © 2019 Synopsys, Inc. 29 スキャンのためのビルドツールを使う ビルドツールをダウンロードして環境を構築する • パッケージの作成に成功したかどうか念のた めに”tail cov-int/build-log.txt”で確認してお く • ビルドで⽣成される”cov-int”の中⾝はこんな 感じ • ”cov-int“をzipで圧縮して出来上がり
  • 30. © 2019 Synopsys, Inc. 30 スキャンのためのビルドツールを使う ビルドツールをダウンロードして環境を構築する • Coverity scanにビルドをアップロードするに は、マニュアルでやってみる – コマンドラインから⾃動実⾏もできる • ビルドの設定に失敗するとこのあと”failed” メールが⾶んでくる • ⾔語の指定やライセンスの種別の指定に注意 すること
  • 31. © 2019 Synopsys, Inc. 31 スキャンのためのビルドツールを使う スキャン成功!バグを⾒てみよう • メトリクスを確認する • 最終解析⽇は2020年8⽉14⽇ • バグは11 • スキャンしたコードは7464⾏ • バグ密度は”1.48” • “View Defects”をクリックして詳細を確認
  • 32. © 2019 Synopsys, Inc. 32 バグを確認する • 212175 DOM-ベース・XSS • 別のユーザーが表⽰またはアクセスしたWebペー ジ上で任意のJavaScriptを実⾏できます。セッ ションのハイジャック、DOMでの機密データの開 ⽰、キーボードとマウスのイベントの表⽰が可能 になる可能性があります。 • xmlHttp.onreadystatechange:信頼できないユー ザー提供のデータが、JavaScriptを実⾏できるコ ンテキストに挿⼊されます。(CWE-79) バグの詳細が表⽰される(ただし英語)
  • 33. © 2019 Synopsys, Inc. 33 商⽤製品”Coverity“との⽐較
  • 34. © 2019 Synopsys, Inc. 34 商⽤版Coverity v.s. 無償版Coverity scan • ⾔語サポートの豊富さ • フレームワークのサポート 当然のことながらできることに⼤きな差がある
  • 35. © 2019 Synopsys, Inc. 35 商⽤版Coverityのメリット • 商⽤版はIDEから直接呼び出すことができる • もちろん各種コンパイラーをサポート • JenkinsでCI/CDパイプラインに統合可能 • JIRAなどと連動も容易 • CERT、MISRAなどのコーディング規約に基 づいたコーディングエラーも調べてくれる • もちろん、UIやヘルプなどのドキュメントも ⽇本語版が提供されている • 技術サポートが得られる(無償版にはないの で基本⾃⼰解決) IDEやJenkins、JIRAなどといった開発環境との統合が容易
  • 36. © 2019 Synopsys, Inc. 36 まとめ
  • 37. © 2019 Synopsys, Inc. 37 • そもそも静的解析は開発者の作業、コードがちゃんと書けているか教えてくれる – ⾃分の書いたコードが既知の脆弱性を抱えているかどうかを教えてくれる – コードレビューにかかる時間を劇的に短縮してくれる – 機能が正常に動作することをテストするものではないので、単体テストはもちろん必要 • 商⽤版の静的解析ツールを使ったことがないなら、Coverity scanのようなツールは便利 – でも、OSSにしか使⽤できないので、商⽤コードのスキャンはこれではできない • それでも、IDEから直接利⽤できるなど商⽤版のメリットは⼤きい – 業界ごとの規定や規制、認証制度などに沿ったコードの品質であることを⽰すためのチェッカーやレ ポート機能 – すぐに使える各種ツールとの連携の⾃動化機能 まとめ