Developers
Summit




         増加するセキュリティ脆弱性の解決策
       開発者がセキュリティに意識をもつために




15-A-6                                         安竹 由起夫
#devsumiA                                        コベリティ日本支社
             Developers Summit 2013 Action !
典型的なテスト

    UI テスト

    パフォーマンス

    機能テスト

    セキュリティ

    未テストコード




2
典型的なテスト

    UI テスト

    パフォーマンス

    機能テスト

    セキュリティ

    未テストコード




3
静的解析によるシミュレーション
              コールグラフ+条件分岐

    UI テスト

    パフォーマンス

    機能テスト
                              全パス
    セキュリティ                    全自動
                            シュミレーション
    未テストコード




4
これまでは、コード品質から攻めてきてたんです。




コード品質を高めれば、
約6割の脆弱性は防ぐことができる
5   © 2011 Forrester Research, Inc. Reproduction Prohibited
 Javaセキュアコーディングガイド(CERT/Oracle)
       – https://www.jpcert.or.jp/java-rules/
     C言語全般のセキュアコーディングガイド
       – ISO IEC - JTC1/SC22/WG14-C
       – http://www.open-std.org/jtc1/sc22/wg14/

     Android アプリのセキュアコーディングガイド
       – http://www.jssec.org/news/20121119_securecoding.html

     PCI DSS
       – アカウントデータ保護に関するコンプライアンス




6    © 2011 Forrester Research, Inc. Reproduction Prohibited
Developers
Summit




             まだまだ足りないようです




                Developers Summit 2013 Action !
現在のWebアプリケーション開発における
セキュリティ対策は
未だ経験的が浅発展途上であり、
多くの側面が欠如している状態
8   © 2011 Forrester Research, Inc. Reproduction Prohibited
Forrester レポート: Web アプリケーションでは、
   いまだにセキュリティ問題にコストがかけられている
                                                                        “2011年に、あなたの組織でセキュリティ
                                                              インシデントの対応にかかった、おおよそのコストは?”*


                                                                    10億円以上            1%


                                                             5億円~10億円                 1%                 18%
                                                                1億円~5億円                       6%
    このアンケートでは、
    153社中 28社が                                                 5千万円~1億円                            10%

     5千万円以上の                                                 1千万~5千万円                                               24%
    損害を被っている
                                                                   1千万円以下                                                 29%


                                                                    わからない                                                 28%




Base: 153 North American and European development and information security managers who have experienced a breach
Source: a©commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012
  9        2011 Forrester Research, Inc. Reproduction Prohibited
Forrester レポート:基本的な問題が上位を占めている

     “ どのようなセキュリティ問題が組織にもっともインパクトを与えていると考えていますか?”




                        41%                                         37%
                                                                                                     36%
             デフォルトアカウントの                                            運用環境の
               パスワード設定                                            コンフィギュレーシ                        インジェクション
                                                                     ョンミス




Base: 240 North American and European development and information security managers
Source: a commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012
10      © 2011 Forrester Research, Inc. Reproduction Prohibited
11   © 2011 Forrester Research, Inc. Reproduction Prohibited
12   © 2011 Forrester Research, Inc. Reproduction Prohibited
13   © 2011 Forrester Research, Inc. Reproduction Prohibited
Developers
Summit




             イライラしない




              Developers Summit 2013 Action !
Forrester レポート:基本的な問題が上位を占めている

     “ どのようなセキュリティ問題が組織にもっともインパクトを与えていると考えていますか?”




                        41%                                         37%
                                                                                                     36%
             デフォルトアカウントの                                            運用環境の
               パスワード設定                                            コンフィギュレーシ                        インジェクション
                                                                     ョンミス




Base: 240 North American and European development and information security managers
Source: a commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012
15      © 2011 Forrester Research, Inc. Reproduction Prohibited
SQL インジェクション(SQLi)とは?
                                                              汚染データ
                                                                             W eb ブ ラ ウザ

  W eb ア プ リ ケーシ ョ ン 内                                                   メ ール
                                                                        暗証番号
                                      2 . 汚染データ かど う かを チ
                                      ェ ッ ク し て いない場合、 処理
                                      が進み、 データ ベース の検索
                                      や更新のSQL文が汚染データ
                                      と と も に形づく ら れる 。
                                                                      1 . 悪意ある ユーザが、 開発者の
                                                                      意図し て いないデータ ( =SQL)
                                      select カ ード 番号 from 顧客情報
                                                                      を わざ と 入力(※)する 。
                                      where メ ール = ‘
                                                                      例: メ ールと し て 以下を 入力:
                                      sa@coverity.com’ OR ‘1’=’1
                                      ’ AND 暗証番号=‘1234’                s a @ c o v e r ity .c o m ’ OR ‘1’='1
     顧客情報データ ベース

  メ ール                 カ ード 番号
                                                                      ※通常はフ ォ ーム入力など を 行わず、
                暗証番号                  3 . 本来はメ ールと 暗証番号
                                                                      http://sample.com/list?mail=’ OR ’1′=’1
sa@ co v...     1012    8 9 0 3 ...   の組合せが必要だが、 条件文
yu k io @ ...   4649    6 7 6 9 ...                                   など で、 直接サーバにアク セスする
sju n g @ ...   8015    8 9 0 3 ...
                                      にO R が埋め込ま れたため、
sn ish i@ ...   0721    6 9 6 9 ...   暗証番号が合致し な く て も 顧
                                      客情報が参照可能に。
クロスサイトスクリプティング(XSS)と
は?

              1 . 悪意ある ユーザが、 不正な ス ク
              リ プ ト を 含むU R Lを メ ールで 送信
                                                        2 . 信頼し ている サイ ト だと 勘違い
                                                        し 、 不正な スク リ プ ト を 脆弱性の
       W eb ア プ リ ケーシ ョ ン 内                             ある サイ ト に送信。



                                                                  暗証番号
                                                                   を 入力
                                 3 . 不正なス ク リ プ ト を チェ ッ ク し      し て 下さ い
                                 ていな い場合、 それを 実行する
                                                                    OK
脆弱性のある W eb ア プ リ ケーシ ョ ン        ページ を 生成し てし ま う 。

                                         暗証番号

                                                               ※他にも脆弱性のあるサイトに攻撃させ
                              4 . 信頼し て いる サイ ト のつも り          るなど、複数の手口があります。

                              が、 実はスク リ プ ト によ っ て、 他
                              の場所に情報を 送信。
Developers
Summit




             イライラしない




              Developers Summit 2013 Action !
ソフトウェア開発プロジェクト自体にも
セキュリティの対処を遅らせる問題が
存在している
なぜセキュリティ脆弱性は回避しづらいのか
 セキュリティ不具合のテストは開発の後工程で行われる


      コード                                     コード                        コード      開発の
     変更 #1                                    変更 #2                      変更 #3    完了

                                                                開発サイクル




品質の確認                                   品質の確認                        品質の確認        品質 +
                                                                                 セキュリティ
                                                                                  の確認
        出荷遅延、脆弱性検出が見逃されるリスクの増加
20    © 2011 Forrester Research, Inc. Reproduction Prohibited
開発者とセキュリティチームは視点が違う
                                                     “なぜ、Web セキュリティの問題が
                                                 早期に発見さず、また修正されていない
                                                               と思いますか?”




                                                                          セキュリティ監査
     開発者




 #1: 時間的なプレッシャー            #1: 開発者がセキュリティに対して非協力的
 #2: セキュリティ脆弱性を発見するツールや技術  #2: 時間的なプレッシャー
  がない



21   © 2011 Forrester Research, Inc. Reproduction Prohibited
Developers
Summit




             イライラしない




              Developers Summit 2013 Action !
開発プロセス全体で
継続的なセキュリティテストを



      コード                                     コード                        コード      開発の
     変更 #1                                    変更 #2                      変更 #3    完了

                                                                開発サイクル




 品質 +                                    品質 +                         品質 +        品質 +
セキュリティ                                  セキュリティ                       セキュリティ      セキュリティ
 の確認                                     の確認                          の確認         の確認


23    © 2011 Forrester Research, Inc. Reproduction Prohibited
Coverity Development Testing Platform
                               解析 | 修正 | 統制

     解析パッケージ                                                     SDLC 統合
                              Policy Manager
                                                                 サードパーティ
      Dynamic                                                     メトリクス
      Analysis
                                                                    IDE
                              Coverity Connect
                                                                  コード
                                                                 カバレッジ
     Architecture
       Analysis                                                   テスト

                    Quality       Security              Test
                                                                  実行



     解析結果統合
                    Advisor       Advisor              Advisor    ビルド/
                                                                 継続的統合
     FindBugs™ |
        FxCop                                                      バグ
                                                                 トラッキング

                                                                   SCM
     解析結果統合
     ツールキット               Coverity SAVE™                         ALM 連携
                                                                  HP | IBM
                        Static Analysis Verification Engine

                           商用コード | オープンソースコード
24
Coverity Security Advisor (Java)

• Security Advisor は
  Webアプリケーション内の


  • 汚染データ(Tainted Data = 悪意あるデータ)の
    入り口と経路、および到達点を突き止め、
  • 悪意あるデータがコード内でチェックされている
    かを確認し、
  • 脆弱性が存在する場合は、修正方法を提示する
SQLi, CMDi, XSS を解決する 3つの機能
                               現サポートフレームワーク
    高速、全パス解析を                  (Java7対応)
    行う高精度静的解析                       Spring MVC 2.x, 3.x
    エンジン                            Java EE
                                    JDBC, Spring JDBC
                                    Hibernate, JPA
                                    JSP




 汚染データが利用され                    汚染データの入り口
 るコンテキストで必要                    (Source)、その経路と
 となるエスケーパや修                    到達点(Sink)を異種フ
 正方法を提示       Source から汚染データ   レームワーク間を超え
              を注入、Sink到達まで     て確認
              にデータチェックや、サ
              ニタイズさるかを確認
フレームワークアナライザ
                           HTTP リクエスト

フレームワークを                                                Web アプリケーション
理解しなければ、
                                                               Data
汚染データの                                                        Access
入口、経路、到達点                                     Model
                            Controller
を知ることができない                                                     View
                                                              Resolver
                                              View

現サポートフレームワーク
(Java7対応)
     Spring MVC 2.x, 3.x
     Java EE                        Model   View Technology   View
     JDBC, Spring JDBC
     Hibernate, JPA
     JSP


                                            HTTP レスポンス
ホワイトボックスファザーとサニタイズ
                                              a b c d …
                                      <        >  &    “              ‘
 発見した汚染データの侵入経路に
 汚染データを投入し、
 無害化されているかを
 自動的に確認する
                                            htmlEncode()


                                  &lt; &gt; &amp; &quot; &#x27;

                                              a    b    c d …

コベリティが開発したエスケーパーをオープンソースに:
https://github.com/coverity/coverity-security-library/tree/gh-pages
     28
的確なルート情報と修正方法の提示

                 入り 口 (so u rce)




       経路




                               サニタ イ ズすべき 箇所




            修正方法の提示
Developers
Summit




少しでも、コードに自信が持てるように。




             Developers Summit 2013 Action !
Developers
  Summit
               意識することから始めよう
MY RECOMMEND    NEXT ACTION!




• セキュリティに関連するインシデントがある?
• セキュアコーディングガイドがある?
• ペネトレーションテストが実施されている?
• 発見された脆弱性を修正できる情報があ
  る?
• セキュリティについて以前より意識しよう


                         Developers Summit 2013 Action !

デブサミ2013【15-A-6】増加するセキュリティ脆弱性の解決策

  • 1.
    Developers Summit 増加するセキュリティ脆弱性の解決策 開発者がセキュリティに意識をもつために 15-A-6 安竹 由起夫 #devsumiA コベリティ日本支社 Developers Summit 2013 Action !
  • 2.
    典型的なテスト UI テスト パフォーマンス 機能テスト セキュリティ 未テストコード 2
  • 3.
    典型的なテスト UI テスト パフォーマンス 機能テスト セキュリティ 未テストコード 3
  • 4.
    静的解析によるシミュレーション コールグラフ+条件分岐 UI テスト パフォーマンス 機能テスト 全パス セキュリティ 全自動 シュミレーション 未テストコード 4
  • 5.
  • 6.
     Javaセキュアコーディングガイド(CERT/Oracle) – https://www.jpcert.or.jp/java-rules/  C言語全般のセキュアコーディングガイド – ISO IEC - JTC1/SC22/WG14-C – http://www.open-std.org/jtc1/sc22/wg14/  Android アプリのセキュアコーディングガイド – http://www.jssec.org/news/20121119_securecoding.html  PCI DSS – アカウントデータ保護に関するコンプライアンス 6 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 7.
    Developers Summit まだまだ足りないようです Developers Summit 2013 Action !
  • 8.
  • 9.
    Forrester レポート: Webアプリケーションでは、 いまだにセキュリティ問題にコストがかけられている “2011年に、あなたの組織でセキュリティ インシデントの対応にかかった、おおよそのコストは?”* 10億円以上 1% 5億円~10億円 1% 18% 1億円~5億円 6% このアンケートでは、 153社中 28社が 5千万円~1億円 10% 5千万円以上の 1千万~5千万円 24% 損害を被っている 1千万円以下 29% わからない 28% Base: 153 North American and European development and information security managers who have experienced a breach Source: a©commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012 9 2011 Forrester Research, Inc. Reproduction Prohibited
  • 10.
    Forrester レポート:基本的な問題が上位を占めている “ どのようなセキュリティ問題が組織にもっともインパクトを与えていると考えていますか?” 41% 37% 36% デフォルトアカウントの 運用環境の パスワード設定 コンフィギュレーシ インジェクション ョンミス Base: 240 North American and European development and information security managers Source: a commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012 10 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 11.
    11 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 12.
    12 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 13.
    13 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 14.
    Developers Summit イライラしない Developers Summit 2013 Action !
  • 15.
    Forrester レポート:基本的な問題が上位を占めている “ どのようなセキュリティ問題が組織にもっともインパクトを与えていると考えていますか?” 41% 37% 36% デフォルトアカウントの 運用環境の パスワード設定 コンフィギュレーシ インジェクション ョンミス Base: 240 North American and European development and information security managers Source: a commissioned study conducted by Forrester Consulting on behalf of Coverity, June, 2012 15 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 16.
    SQL インジェクション(SQLi)とは? 汚染データ W eb ブ ラ ウザ W eb ア プ リ ケーシ ョ ン 内 メ ール 暗証番号 2 . 汚染データ かど う かを チ ェ ッ ク し て いない場合、 処理 が進み、 データ ベース の検索 や更新のSQL文が汚染データ と と も に形づく ら れる 。 1 . 悪意ある ユーザが、 開発者の 意図し て いないデータ ( =SQL) select カ ード 番号 from 顧客情報 を わざ と 入力(※)する 。 where メ ール = ‘ 例: メ ールと し て 以下を 入力: sa@coverity.com’ OR ‘1’=’1 ’ AND 暗証番号=‘1234’ s a @ c o v e r ity .c o m ’ OR ‘1’='1 顧客情報データ ベース メ ール カ ード 番号 ※通常はフ ォ ーム入力など を 行わず、 暗証番号 3 . 本来はメ ールと 暗証番号 http://sample.com/list?mail=’ OR ’1′=’1 sa@ co v... 1012 8 9 0 3 ... の組合せが必要だが、 条件文 yu k io @ ... 4649 6 7 6 9 ... など で、 直接サーバにアク セスする sju n g @ ... 8015 8 9 0 3 ... にO R が埋め込ま れたため、 sn ish i@ ... 0721 6 9 6 9 ... 暗証番号が合致し な く て も 顧 客情報が参照可能に。
  • 17.
    クロスサイトスクリプティング(XSS)と は? 1 . 悪意ある ユーザが、 不正な ス ク リ プ ト を 含むU R Lを メ ールで 送信 2 . 信頼し ている サイ ト だと 勘違い し 、 不正な スク リ プ ト を 脆弱性の W eb ア プ リ ケーシ ョ ン 内 ある サイ ト に送信。 暗証番号 を 入力 3 . 不正なス ク リ プ ト を チェ ッ ク し し て 下さ い ていな い場合、 それを 実行する OK 脆弱性のある W eb ア プ リ ケーシ ョ ン ページ を 生成し てし ま う 。 暗証番号 ※他にも脆弱性のあるサイトに攻撃させ 4 . 信頼し て いる サイ ト のつも り るなど、複数の手口があります。 が、 実はスク リ プ ト によ っ て、 他 の場所に情報を 送信。
  • 18.
    Developers Summit イライラしない Developers Summit 2013 Action !
  • 19.
  • 20.
    なぜセキュリティ脆弱性は回避しづらいのか セキュリティ不具合のテストは開発の後工程で行われる コード コード コード 開発の 変更 #1 変更 #2 変更 #3 完了 開発サイクル 品質の確認 品質の確認 品質の確認 品質 + セキュリティ の確認 出荷遅延、脆弱性検出が見逃されるリスクの増加 20 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 21.
    開発者とセキュリティチームは視点が違う “なぜ、Web セキュリティの問題が 早期に発見さず、また修正されていない と思いますか?” セキュリティ監査 開発者  #1: 時間的なプレッシャー  #1: 開発者がセキュリティに対して非協力的  #2: セキュリティ脆弱性を発見するツールや技術  #2: 時間的なプレッシャー がない 21 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 22.
    Developers Summit イライラしない Developers Summit 2013 Action !
  • 23.
    開発プロセス全体で 継続的なセキュリティテストを コード コード コード 開発の 変更 #1 変更 #2 変更 #3 完了 開発サイクル 品質 + 品質 + 品質 + 品質 + セキュリティ セキュリティ セキュリティ セキュリティ の確認 の確認 の確認 の確認 23 © 2011 Forrester Research, Inc. Reproduction Prohibited
  • 24.
    Coverity Development TestingPlatform 解析 | 修正 | 統制 解析パッケージ SDLC 統合 Policy Manager サードパーティ Dynamic メトリクス Analysis IDE Coverity Connect コード カバレッジ Architecture Analysis テスト Quality Security Test 実行 解析結果統合 Advisor Advisor Advisor ビルド/ 継続的統合 FindBugs™ | FxCop バグ トラッキング SCM 解析結果統合 ツールキット Coverity SAVE™ ALM 連携 HP | IBM Static Analysis Verification Engine 商用コード | オープンソースコード 24
  • 25.
    Coverity Security Advisor(Java) • Security Advisor は Webアプリケーション内の • 汚染データ(Tainted Data = 悪意あるデータ)の 入り口と経路、および到達点を突き止め、 • 悪意あるデータがコード内でチェックされている かを確認し、 • 脆弱性が存在する場合は、修正方法を提示する
  • 26.
    SQLi, CMDi, XSSを解決する 3つの機能 現サポートフレームワーク 高速、全パス解析を (Java7対応) 行う高精度静的解析 Spring MVC 2.x, 3.x エンジン Java EE JDBC, Spring JDBC Hibernate, JPA JSP 汚染データが利用され 汚染データの入り口 るコンテキストで必要 (Source)、その経路と となるエスケーパや修 到達点(Sink)を異種フ 正方法を提示 Source から汚染データ レームワーク間を超え を注入、Sink到達まで て確認 にデータチェックや、サ ニタイズさるかを確認
  • 27.
    フレームワークアナライザ HTTP リクエスト フレームワークを Web アプリケーション 理解しなければ、 Data 汚染データの Access 入口、経路、到達点 Model Controller を知ることができない View Resolver View 現サポートフレームワーク (Java7対応) Spring MVC 2.x, 3.x Java EE Model View Technology View JDBC, Spring JDBC Hibernate, JPA JSP HTTP レスポンス
  • 28.
    ホワイトボックスファザーとサニタイズ a b c d … < > & “ ‘ 発見した汚染データの侵入経路に 汚染データを投入し、 無害化されているかを 自動的に確認する htmlEncode() &lt; &gt; &amp; &quot; &#x27; a b c d … コベリティが開発したエスケーパーをオープンソースに: https://github.com/coverity/coverity-security-library/tree/gh-pages 28
  • 29.
    的確なルート情報と修正方法の提示 入り 口 (so u rce) 経路 サニタ イ ズすべき 箇所 修正方法の提示
  • 30.
  • 31.
    Developers Summit 意識することから始めよう MY RECOMMEND NEXT ACTION! • セキュリティに関連するインシデントがある? • セキュアコーディングガイドがある? • ペネトレーションテストが実施されている? • 発見された脆弱性を修正できる情報があ る? • セキュリティについて以前より意識しよう Developers Summit 2013 Action !