SlideShare una empresa de Scribd logo
1 de 37
45分で分かる
 安全なWebアプリケーション開発のた
めの
  発注・要件・検収




                    2009年9月4日
          HASHコンサルティング株式会社
                        徳丸 浩
本日お話しするテーマ
• セキュア開発をベンダーに促すにはどうすればよいか
• セキュア開発においてコストを低減するには
• セキュア開発の要件定義はどう考えればよいか
• セキュア開発で大切な3つのこと
 – セキュリティ要件とセキュリティバグ
 – 開発標準と教育
 – セキュリティテスト
• セキュリティテストツールとしての「ウェブ健康診断仕
  様」




         Copyright (C) 2009 HASH Consulting Corp.   2
徳丸浩の自己紹介
• 経歴
  – 1985年 京セラ株式会社入社
  – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍
  – 2008年 KCCS退職、HASHコンサルティング株式会社設立
• 経験したこと
  – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当
  – その後、企業向けパッケージソフトの企画・開発・事業化を担当
  – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当
        Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿など
    を開始
  – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立
    ち上げ
• その他
  – 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開
    「大学時代のPascal演習がCabezonでした」という方にお目にかかることも
• 現在
  – HASHコンサルティング株式会社 代表                            http://www.hash-c.co.jp/
  – 京セラコミュニケーションシステム株式会社 技術顧問
     http://www.kccs.co.jp/security/
  – 独立行政法人情報処理推進機構 2009 HASH Consulting Corp. http://www.ipa.go.jp/security/
                        Copyright (C) 非常勤研究員                               3
責任と契約について
• Webアプリの脆弱性の責任は発注者か開発者か
 – 発注者に責任というのが主流のよう
 – ただし、判例があるわけではないので要注意
• 経産省の「モデル契約書」では、以下のような記述がある
 なお、本件ソフトウェアに関するセキュリティ対策については、具体的な機能、
 遵守方法、管理体制及び費用負担等を別途書面により定めることとしている(第
 50 条参照)。セキュリティ要件をシステム仕様としている場合には、「システ
 ム仕様書との不一致」に該当し、本条の「瑕疵」に含まれる。

 (セキュリティ)
 第50 条 乙が納入する本件ソフトウェアのセキュリティ対策について、甲及び乙
 は、その具体的な機能、遵守方法、管理体制及び費用負担等を協議の上、別途書
 面により定めるものとする。

• 発注者は自衛のために要求仕様にセキュリティ用件を盛り込んで
  おくべき
 – 「発注者のための・・・ 」
 – 「ウェブ健康診断仕様」によるテストに合格すること、と記述する手もあ
   りか
            Copyright (C) 2009 HASH Consulting Corp.   4
RFI/RFPの書き方アプローチ
• パターン1:提案を求める
 – 要求も提案も曖昧になりがち
  • 要求の例:セキュリティに留意して開発すること
  • 提案の例:セキュリティには万全の体制で臨みます
• パターン2:詳細な仕様を出す
 – 「安全なWebサイトの作り方」に準拠せよ
 – 「発注者のためのWebシステム/Webアプリケーション セ
   キュリティ要件書」に準拠せよ
• パターン3:検査仕様を提示する
 – 第三者に検査させる
 – 発注者が自ら検査する(後述)



          Copyright (C) 2009 HASH Consulting Corp.   5
RFI/RFPの書き方
• 漠然としたものは効果が薄い
• 脆弱性の名前を列挙する方法
 – XSS、SQLインジェクション【略】の対策を施すこと
 – 対策の「質」を問うことは難しい
• 実装方式を指定する方法
 – 例:SQLアクセスの際はPrepared Statementを使用すること
 – 既存ソフトの流用やフレームワークの使用に制限が生じると、コスト増の
   要因になり得る
• 検収の方法を指定する
 – 例:弊社の指定する脆弱性検査会社の試験に合格すること
 – コストは高くなる
 – 検査会社の検査内容がグレーなので、開発会社にとってはリスク
 – 「ウェブ健康診断仕様」の応用【後述】


              Copyright (C) 2009 HASH Consulting Corp.   6
提案する方法
• 基本はベンダーに提案してもらう
 – 開発言語、ミドルウェア、フレームワークを考慮したセキュア
   な開発体制を提案してもらう
 – セキュリティ的な機能の提案
 – 脆弱性を作り込まない体制の提示を求める
 – セキュリティ検査にパスできる根拠を説明してもらう
• 納品物としてセキュリティ検査結果を添付してもらう
 – 今後、納品検査としてのセキュリティ検査は必須とすべき
• 検収時の検査として自らもセキュリティ検査を実施する
 – 「Web健康診断仕様」による検査を自ら実施する(一種の抜き
   取り検査)
 – 予算に余裕があれば、第三者に検査してもらう

         Copyright (C) 2009 HASH Consulting Corp.   7
従来言われてきたセキュリティ仕様策定プロセス




経済産業省「モデル契約書」別紙3より引用 http://www.meti.go.jp/policy/it_policy/softseibi/index.html#05
資産洗いだし・リスク分析・対策の例




経済産業省「モデル契約書」別紙3より引用 http://www.meti.go.jp/policy/it_policy/softseibi/index.html#05
情報資産洗いだしの例




                            完全性と可用性は
                            だいたい「中」く
                            らいになる
                            機密性の高低くら
                            いを洗い出せば十
                            分
「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
脅威分析の例




                 脅威分析は、どのサイトでも
                 同じような結果になる
                 開発プロジェクトごとに脅威
                 分析をやってもあまり意味は
                 ない




「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
脅威に対する技術的対策の例




                   技術的対策も、毎回同じようなものが
                   「候補」にあがる
                   脅威分析の結果というより、情報資産
                   の価値と機密性に応じて、対策を選ぶ
                   ような形になりがち
                   脅威分析の結果によって技術的対策が
                   左右されることはあまりない・・・と思
                   う




「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
リスク分析は手間の割に効果が少ない
   一般的なWebアプリの場合、わかりきっていることをな
    ぞる結果になりやすい
       重要な情報はなにか?
         個人情報、企業情報など
       情報の格納場所はどこか
         データベースに決まっている
       情報資産に対する対策方法は?
         ベストプラクティスが分かっている
   重要なのは、なにが重要情報か(What)ではなく、それを
    どう(How)扱うか
   わかりきった資産洗いだしをするよりも、「対策を選
    ぶ」ようなアプローチの方が効果的


               Copyright (C) 2009 HASH Consulting Corp.   13
リバース・ リスク・アセスメントの勧め
      ベストプラクティスのセキュリティ対策から選択しあるいはリスクを許容する

対策         採用            不採用時のリスク                     代替コントロール
ファイアウ      ○             -                            -
オール
WAF        ○             -                            -
IDS/IPS    ×             攻撃予兆の見逃し、脆                   WAFによる防御、
                         弱性対策の漏れに対す                   WAF等のログ監視強化、
                         る攻撃                          脆弱性対策強化

認証方式       パスワード認証       パスワード管理の不備                   パスワード管理の徹底
                         を突いた攻撃を受ける
回線の選択      SSL           -                            -
データベー      △(パスワードの ストレージ持ちだしに                        入退室管理強化による持ち出
スの暗号化      ハッシュ化の   よる情報漏洩                            し対策
           み)
監査証跡       認証、エラー、       -                            -
           操作ログ
ウィルス対      ×             マルウェアの感染                     速やかなパッチ適用、
策ソフト                                                  本番環境と運用環境間のFW
                 Copyright (C) 2009 HASH Consulting Corp.             14
脆弱性対策と開発プロセス
   SQLインジェクションやクロスサイトスクリプティング
    (XSS)などが「ないこと」という要求は、仕様として盛
    り込みにくい
   リスク分析の結果で脆弱性対策をするものではない。
    脆弱性対策は常にすべき。
   これらはセキュリティバグであり、バグがないことはわ
    ざわざ仕様に明記するものではない
   脆弱性対策は、開発標準に盛り込むのがよい
       だから、ベンダーの開発標準が重要
       開発標準の閲覧を要求するのも一法
   ただし、契約上の問題は別
       ベンダーの責任範囲は、発注仕様に書いてある範囲

              Copyright (C) 2009 HASH Consulting Corp.   15
提案:3つのポイント
   セキュリティ要件とセキュリティバグ
   開発標準と教育
   セキュリティテスト




          Copyright (C) 2009 HASH Consulting Corp.   16
3分で分かるセキュアプログラミング
                                                セキュリティ・バグの撲
                ポイント①        ポイント②                   滅
セキュリティ機能(要件)と
セキュリティ・バグは分けて考える             開発標準の整備とメンバーの教育でチーム力をアップ

 認証方法などのセキュリティ要件は ユーザー                        コーディング規約をメンバーに学
                             方式設計において,開発標
 と相談して定義し,そのあとに粛々と実装する                        習してもらう。
 SQLインジェクションなどのセキュリティ・バ      準やテスト方式を整備し
                                              規約を破ると本当に危険だと認
                             ておく
 グへの対処法を明確にする                                 識してもらう




 要件定義      基本設計       詳細設計         開発          テスト        運用




                  コード・レビューの方針を決める。内部レ
                                             脆弱性テストの方針を決める。内部
                  ビューを基本とし,誰がどの範囲(抜き取り検
                                             テストを基本にし,必要に応じて外部
                  査など)を
                                             の専門ベンダーに依頼する。テストで
                  チェックするのかを明確にする。レビューでき
                                             きる担当者のリソースを確保する
                  る担当者のリソースを確保する


                   ポイント③
                                                 セキュリティ・バグの
                  コスト要因となるレビューとテストを計画的に              撲滅


日経SYSTEMS2009年8月号「プロマネの技で守るWebセキュリティ」図1を改変
セキュリティ要件とはなにか
   リバース・リスク・アセスメントのところで出てきたよ
    うな「積極的な」セキュリティ対策
   セキュリティ仕様の例
       パスワード仕様、アカウント・ロック…
       暗号化(回線、データベース)
       ログ
       ウィルス対策ソフトの導入
       …
   セキュティ仕様の実装は、要件定義からウォーター
    フォールで粛々と実施(通常機能と同じ)
   脆弱性対策は開発標準で対応


               Copyright (C) 2009 HASH Consulting Corp.   18
開発標準と教育
• SQLインジェクション対策やXSS対策などは、実装設計
  時に個別に設計していたのでは効率が悪いし、対応が統
  一できないので、開発標準で定義する
• 開発標準は作りっぱなしになることが多く、定着が難し
  い。教育を実施して、テストで定着度を確認するとよい
• 日経SYSTEMS寄稿時に各社にインタビューした際の印
  象では、「やられサイト」を作って開発者向けにデモし
  ている企業が意外に多く、効果が期待できる




        Copyright (C) 2009 HASH Consulting Corp.   19
開発標準として利用できるリソース
• 安全なウェブサイトの作り方 改訂第3版
  – http://www.ipa.go.jp/security/vuln/websecurity.html
• 発注者のためのWebシステム/Webアプリケーション セキュリティ要件書
  – http://脆弱性診断.jp/specifications/index.html
• いずれも基本的な内容だが、これくらいからスタートするほうが賢明



【参考】K社の
開発標準利用状況




           引用:http://techtarget.itmedia.co.jp/tt/news/0902/10/news01.html
                         Copyright (C) 2009 HASH Consulting Corp.           20
方式設計のすすめ
• 開発標準の抽象度が高い場合、基本設計フェーズの「方
  式設計」として、具体的なコードレベルに落としておく
  とよい
  XSS対策のため特殊文字をエスケープする                                         Bad
  H TM L表示の際に「 、「 、「 、「」
              <」 >」 &」 ”は文字参照によりエ
  スケープする
  H TM L表示の際にhtm l
                 speci chars()関数により
                     al            エスケープ
  H TM L表示の際にライブラリ e()関数を用いる
  【 実装】
  functi e($p) {
        on
    echo htm l
             speci chars($p,EN T_Q U O TES,' TF-8'
                 al                        U     );
  }                                                            Good


• 開発言語、アーキテクチャ、ライブラリ、チームの習慣
  等を考慮し、コピペ可能なレベルまで具体化しておく
• 方式設計の際には、テスト方法も検討しておくとよい
                    Copyright (C) 2009 HASH Consulting Corp.     21
コスト要素はどこか
• 「セキュリティ要件」については、機能が増えることになるの
  で、直接コスト増となる
 – 発注者と要件詰めをしっかり行う必要がある
• セキュリティバグについては以下がコスト要因となる
 – 開発標準作成、開発者の教育
 – セキュリティテスト
• 「発注者のための…セキュリティ要件書」でコスト増になるの
  は・・・
 – アカウントロック機能の作りこみ
 – SSLの証明書代       …たいしたことはない
• 開発標準や教育はプロジェクトをまたがって有効なので間接費用
  と考えられる。一度しっかりしつものを作れば使い回しがきく
• セキュリティテストはプロジェクトごとに必要であり、費用も大
  きいので、セキュリティテストのコスト削減が、セキュア開発の
  課題
           Copyright (C) 2009 HASH Consulting Corp.   22
セキュリティテスト
   セキュリティ要件にせよ、セキュリティバグにせよ、最
    終的にはテストで品質を保証することになる
   開発工程
       ソースコードレビュー、ソースコードチェッカー
       単体テスト工程での「ウェブ健康診断仕様」利用もあり
   テスト工程
       ツールでのテスト・・・ツールが高価、全項目テストできない
       ウェブ健康診断仕様の活用
       専門家にアウトソース
   受け入れテスト(検収)
       ウェブ健康診断仕様の活用
       専門家にアウトソース


              Copyright (C) 2009 HASH Consulting Corp.   23
ウェブ健康診断とは




 診断方式 : 遠隔地からインターネット経由による手動若しくは自動診断ツールを利用
 診断実施数:約300団体
 診断対象 : 地方公共団体が保有若しくは利用している、現在インターネットで稼動中
       のWeb サーバ1サイト分(1 ドメインネーム)

http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html より引用
ウェブ健康診断仕様(1)
   12項目の診断項目により危険度の高い脆弱性項目を網
    羅している
       実被害に至る可能性の高いものに限定
       「安全なウェブサイトの作りかた 改定第3版」で解説されてい
        る
        9種類の脆弱性を包含
   診断仕様、判定基準、抜き取り基準が明確に定義・公開
    されている
   公開された無償ツールのみで診断できる
   本番稼働サイトの診断を前提とした安全性の高い診断仕
    様である



               Copyright (C) 2009 HASH Consulting Corp.   25
ウェブ健康診断仕様(2)




http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html より引用
ウェブ健康診断仕様(3)




http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html より引用
ウェブ健康診断仕様(4)




Copyright (C) 2009 HASH Consulting Corp.   28
ウェブ健康診断仕様(5)




Copyright (C) 2009 HASH Consulting Corp.   29
検査に必要なツールの例(burp suite)




http://www.portswigger.net/suite/

                    Copyright (C) 2009 HASH Consulting Corp.   30
burp suiteの設定(Intercept)




   Copyright (C) 2009 HASH Consulting Corp.   31
burp Suite の設定(ログ取得)




   Copyright (C) 2009 HASH Consulting Corp.   32
Intercept と検査パターンの入力




   Copyright (C) 2009 HASH Consulting Corp.   33
デモ
テスト工程のコスト削減方法
• 専門家に全部頼むと高いので、できる部分は自分でやる
• 必ずしも全項目をテストする必要はない
• 明らかにテスト不要なもの
 – 外部コマンドを利用しない・・・OSコマンドインジェクショ
   ンは不要
 – メール送信しない・・・メールヘッダインジェクションは不要
• ソースコード検査の方が効率がよいもの
 – OSコマンドインジェクション
 – パストラバーサル
 – SQLインジェクション(ソースコード検査しやすいように開発
   標準を定めておくと良い)
• セルフテスト工数を削減して浮いた費用で、専門家にも
  検査してもらうとなお可

         Copyright (C) 2009 HASH Consulting Corp.   35
まとめ
• セキュアな発注方法論は発展途上であり、まだ業界標準
  といえる方法がない
• 要件について
 – セキュリティ要件とセキュリティバグに分けて考える
 – 資産洗い出し、脅威分析は定石だが、Webアプリの場合、
   うんと簡略化してよい
• セキュリティバグ対応は、開発標準整備とチームの教育
  が鍵
• テスト、検収について
 – おもなコスト要素はセキュリティテスト
 – セキュリティテストツールとしての「ウェブ健康診断仕様」
• 契約にも注意

           Copyright (C) 2009 HASH Consulting Corp.   36
ご清聴ありがとうございま
     した

Más contenido relacionado

La actualidad más candente

【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...devsumi2009
 
慣れない言語で 車輪の再発明をしよう〜JavaScriptでツリーソート編〜
慣れない言語で車輪の再発明をしよう〜JavaScriptでツリーソート編〜慣れない言語で車輪の再発明をしよう〜JavaScriptでツリーソート編〜
慣れない言語で 車輪の再発明をしよう〜JavaScriptでツリーソート編〜Hiromu Shioya
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!Shin Ise
 
2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニングPreferred Networks
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in DetailTim Lu
 
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&APreferred Networks
 
2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能Preferred Networks
 
Force.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPForce.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPHiroshi Ono
 
enNetforum Fukuoka Panelist
enNetforum Fukuoka PanelistenNetforum Fukuoka Panelist
enNetforum Fukuoka PanelistForum
 
2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジンPreferred Networks
 
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~devsumi2009
 
enNetforum Wakamatsu Presentation
enNetforum Wakamatsu PresentationenNetforum Wakamatsu Presentation
enNetforum Wakamatsu PresentationForum
 
980226投影片
980226投影片980226投影片
980226投影片thdl
 

La actualidad más candente (20)

【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
 
0423sync
0423sync0423sync
0423sync
 
Okayama_1
Okayama_1Okayama_1
Okayama_1
 
慣れない言語で 車輪の再発明をしよう〜JavaScriptでツリーソート編〜
慣れない言語で車輪の再発明をしよう〜JavaScriptでツリーソート編〜慣れない言語で車輪の再発明をしよう〜JavaScriptでツリーソート編〜
慣れない言語で 車輪の再発明をしよう〜JavaScriptでツリーソート編〜
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!
 
2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング
 
Agc紹介
Agc紹介Agc紹介
Agc紹介
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in Detail
 
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A
 
2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能
 
Force.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPForce.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JP
 
enNetforum Fukuoka Panelist
enNetforum Fukuoka PanelistenNetforum Fukuoka Panelist
enNetforum Fukuoka Panelist
 
2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン
 
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
 
rrds08
rrds08rrds08
rrds08
 
enNetforum Wakamatsu Presentation
enNetforum Wakamatsu PresentationenNetforum Wakamatsu Presentation
enNetforum Wakamatsu Presentation
 
地域サイト運営にあたって
地域サイト運営にあたって地域サイト運営にあたって
地域サイト運営にあたって
 
PFI会社案内
PFI会社案内PFI会社案内
PFI会社案内
 
future-search
future-searchfuture-search
future-search
 
980226投影片
980226投影片980226投影片
980226投影片
 

Destacado

Relationship driven requirement analysis
Relationship driven requirement analysisRelationship driven requirement analysis
Relationship driven requirement analysisKent Ishizawa
 
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」hiroyuki Yamamoto
 
さくさく要件定義セミナー in 大阪
さくさく要件定義セミナー in 大阪さくさく要件定義セミナー in 大阪
さくさく要件定義セミナー in 大阪Zenji Kanzaki
 
Coderetreat のススメ at Developers' Summit 2013 Unconference
Coderetreat のススメ at Developers' Summit 2013 UnconferenceCoderetreat のススメ at Developers' Summit 2013 Unconference
Coderetreat のススメ at Developers' Summit 2013 UnconferenceKiro Harada
 
すくすくスクラム瀬戸内_要件定義の嘘_20100205
すくすくスクラム瀬戸内_要件定義の嘘_20100205すくすくスクラム瀬戸内_要件定義の嘘_20100205
すくすくスクラム瀬戸内_要件定義の嘘_20100205Sukusuku Scrum
 
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせphpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせHiroshi Tokumaru
 
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱 WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱 Hiroshi Tokumaru
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまでHiroshi Tokumaru
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めHiroshi Tokumaru
 
UnicodeによるXSSと SQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSと SQLインジェクションの可能性Hiroshi Tokumaru
 
文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策 文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策 Hiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012Hiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011Hiroshi Tokumaru
 
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~Hiroshi Tokumaru
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかHiroshi Tokumaru
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Hiroshi Tokumaru
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013Hiroshi Tokumaru
 

Destacado (20)

Relationship driven requirement analysis
Relationship driven requirement analysisRelationship driven requirement analysis
Relationship driven requirement analysis
 
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」
第74回名古屋アジャイル勉強会「後悔しない要件定義のまとめ方」
 
さくさく要件定義セミナー in 大阪
さくさく要件定義セミナー in 大阪さくさく要件定義セミナー in 大阪
さくさく要件定義セミナー in 大阪
 
Code retreatの心得
Code retreatの心得Code retreatの心得
Code retreatの心得
 
Coderetreat のススメ at Developers' Summit 2013 Unconference
Coderetreat のススメ at Developers' Summit 2013 UnconferenceCoderetreat のススメ at Developers' Summit 2013 Unconference
Coderetreat のススメ at Developers' Summit 2013 Unconference
 
すくすくスクラム瀬戸内_要件定義の嘘_20100205
すくすくスクラム瀬戸内_要件定義の嘘_20100205すくすくスクラム瀬戸内_要件定義の嘘_20100205
すくすくスクラム瀬戸内_要件定義の嘘_20100205
 
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせphpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
 
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱 WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
 
UnicodeによるXSSと SQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSと SQLインジェクションの可能性
 
全体セミナー201108011
全体セミナー201108011全体セミナー201108011
全体セミナー201108011
 
文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策 文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
 
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
Salesforce
Salesforce Salesforce
Salesforce
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013
 

Más de Hiroshi Tokumaru

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証するHiroshi Tokumaru
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考Hiroshi Tokumaru
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入するHiroshi Tokumaru
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1Hiroshi Tokumaru
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方Hiroshi Tokumaru
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門Hiroshi Tokumaru
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)Hiroshi Tokumaru
 
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Hiroshi Tokumaru
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018Hiroshi Tokumaru
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようHiroshi Tokumaru
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座Hiroshi Tokumaru
 
ウェブセキュリティの常識
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識Hiroshi Tokumaru
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則Hiroshi Tokumaru
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門Hiroshi Tokumaru
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりHiroshi Tokumaru
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くHiroshi Tokumaru
 

Más de Hiroshi Tokumaru (20)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
 
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
 
ウェブセキュリティの常識
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
 

PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収

  • 1. 45分で分かる 安全なWebアプリケーション開発のた めの 発注・要件・検収 2009年9月4日 HASHコンサルティング株式会社 徳丸 浩
  • 2. 本日お話しするテーマ • セキュア開発をベンダーに促すにはどうすればよいか • セキュア開発においてコストを低減するには • セキュア開発の要件定義はどう考えればよいか • セキュア開発で大切な3つのこと – セキュリティ要件とセキュリティバグ – 開発標準と教育 – セキュリティテスト • セキュリティテストツールとしての「ウェブ健康診断仕 様」 Copyright (C) 2009 HASH Consulting Corp. 2
  • 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿など を開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立 ち上げ • その他 – 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開 「大学時代のPascal演習がCabezonでした」という方にお目にかかることも • 現在 – HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/ – 京セラコミュニケーションシステム株式会社 技術顧問 http://www.kccs.co.jp/security/ – 独立行政法人情報処理推進機構 2009 HASH Consulting Corp. http://www.ipa.go.jp/security/ Copyright (C) 非常勤研究員 3
  • 4. 責任と契約について • Webアプリの脆弱性の責任は発注者か開発者か – 発注者に責任というのが主流のよう – ただし、判例があるわけではないので要注意 • 経産省の「モデル契約書」では、以下のような記述がある なお、本件ソフトウェアに関するセキュリティ対策については、具体的な機能、 遵守方法、管理体制及び費用負担等を別途書面により定めることとしている(第 50 条参照)。セキュリティ要件をシステム仕様としている場合には、「システ ム仕様書との不一致」に該当し、本条の「瑕疵」に含まれる。 (セキュリティ) 第50 条 乙が納入する本件ソフトウェアのセキュリティ対策について、甲及び乙 は、その具体的な機能、遵守方法、管理体制及び費用負担等を協議の上、別途書 面により定めるものとする。 • 発注者は自衛のために要求仕様にセキュリティ用件を盛り込んで おくべき – 「発注者のための・・・ 」 – 「ウェブ健康診断仕様」によるテストに合格すること、と記述する手もあ りか Copyright (C) 2009 HASH Consulting Corp. 4
  • 5. RFI/RFPの書き方アプローチ • パターン1:提案を求める – 要求も提案も曖昧になりがち • 要求の例:セキュリティに留意して開発すること • 提案の例:セキュリティには万全の体制で臨みます • パターン2:詳細な仕様を出す – 「安全なWebサイトの作り方」に準拠せよ – 「発注者のためのWebシステム/Webアプリケーション セ キュリティ要件書」に準拠せよ • パターン3:検査仕様を提示する – 第三者に検査させる – 発注者が自ら検査する(後述) Copyright (C) 2009 HASH Consulting Corp. 5
  • 6. RFI/RFPの書き方 • 漠然としたものは効果が薄い • 脆弱性の名前を列挙する方法 – XSS、SQLインジェクション【略】の対策を施すこと – 対策の「質」を問うことは難しい • 実装方式を指定する方法 – 例:SQLアクセスの際はPrepared Statementを使用すること – 既存ソフトの流用やフレームワークの使用に制限が生じると、コスト増の 要因になり得る • 検収の方法を指定する – 例:弊社の指定する脆弱性検査会社の試験に合格すること – コストは高くなる – 検査会社の検査内容がグレーなので、開発会社にとってはリスク – 「ウェブ健康診断仕様」の応用【後述】 Copyright (C) 2009 HASH Consulting Corp. 6
  • 7. 提案する方法 • 基本はベンダーに提案してもらう – 開発言語、ミドルウェア、フレームワークを考慮したセキュア な開発体制を提案してもらう – セキュリティ的な機能の提案 – 脆弱性を作り込まない体制の提示を求める – セキュリティ検査にパスできる根拠を説明してもらう • 納品物としてセキュリティ検査結果を添付してもらう – 今後、納品検査としてのセキュリティ検査は必須とすべき • 検収時の検査として自らもセキュリティ検査を実施する – 「Web健康診断仕様」による検査を自ら実施する(一種の抜き 取り検査) – 予算に余裕があれば、第三者に検査してもらう Copyright (C) 2009 HASH Consulting Corp. 7
  • 10. 情報資産洗いだしの例 完全性と可用性は だいたい「中」く らいになる 機密性の高低くら いを洗い出せば十 分 「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
  • 11. 脅威分析の例 脅威分析は、どのサイトでも 同じような結果になる 開発プロジェクトごとに脅威 分析をやってもあまり意味は ない 「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
  • 12. 脅威に対する技術的対策の例 技術的対策も、毎回同じようなものが 「候補」にあがる 脅威分析の結果というより、情報資産 の価値と機密性に応じて、対策を選ぶ ような形になりがち 脅威分析の結果によって技術的対策が 左右されることはあまりない・・・と思 う 「情報システムの構築等におけるセキュリティ要件及びセキュリティ機能の検討に関する解説書」より引用
  • 13. リスク分析は手間の割に効果が少ない  一般的なWebアプリの場合、わかりきっていることをな ぞる結果になりやすい  重要な情報はなにか? 個人情報、企業情報など  情報の格納場所はどこか データベースに決まっている  情報資産に対する対策方法は? ベストプラクティスが分かっている  重要なのは、なにが重要情報か(What)ではなく、それを どう(How)扱うか  わかりきった資産洗いだしをするよりも、「対策を選 ぶ」ようなアプローチの方が効果的 Copyright (C) 2009 HASH Consulting Corp. 13
  • 14. リバース・ リスク・アセスメントの勧め ベストプラクティスのセキュリティ対策から選択しあるいはリスクを許容する 対策 採用 不採用時のリスク 代替コントロール ファイアウ ○ - - オール WAF ○ - - IDS/IPS × 攻撃予兆の見逃し、脆 WAFによる防御、 弱性対策の漏れに対す WAF等のログ監視強化、 る攻撃 脆弱性対策強化 認証方式 パスワード認証 パスワード管理の不備 パスワード管理の徹底 を突いた攻撃を受ける 回線の選択 SSL - - データベー △(パスワードの ストレージ持ちだしに 入退室管理強化による持ち出 スの暗号化 ハッシュ化の よる情報漏洩 し対策 み) 監査証跡 認証、エラー、 - - 操作ログ ウィルス対 × マルウェアの感染 速やかなパッチ適用、 策ソフト 本番環境と運用環境間のFW Copyright (C) 2009 HASH Consulting Corp. 14
  • 15. 脆弱性対策と開発プロセス  SQLインジェクションやクロスサイトスクリプティング (XSS)などが「ないこと」という要求は、仕様として盛 り込みにくい  リスク分析の結果で脆弱性対策をするものではない。 脆弱性対策は常にすべき。  これらはセキュリティバグであり、バグがないことはわ ざわざ仕様に明記するものではない  脆弱性対策は、開発標準に盛り込むのがよい  だから、ベンダーの開発標準が重要  開発標準の閲覧を要求するのも一法  ただし、契約上の問題は別  ベンダーの責任範囲は、発注仕様に書いてある範囲 Copyright (C) 2009 HASH Consulting Corp. 15
  • 16. 提案:3つのポイント  セキュリティ要件とセキュリティバグ  開発標準と教育  セキュリティテスト Copyright (C) 2009 HASH Consulting Corp. 16
  • 17. 3分で分かるセキュアプログラミング セキュリティ・バグの撲 ポイント① ポイント② 滅 セキュリティ機能(要件)と セキュリティ・バグは分けて考える 開発標準の整備とメンバーの教育でチーム力をアップ 認証方法などのセキュリティ要件は ユーザー コーディング規約をメンバーに学 方式設計において,開発標 と相談して定義し,そのあとに粛々と実装する 習してもらう。 SQLインジェクションなどのセキュリティ・バ 準やテスト方式を整備し 規約を破ると本当に危険だと認 ておく グへの対処法を明確にする 識してもらう 要件定義 基本設計 詳細設計 開発 テスト 運用 コード・レビューの方針を決める。内部レ 脆弱性テストの方針を決める。内部 ビューを基本とし,誰がどの範囲(抜き取り検 テストを基本にし,必要に応じて外部 査など)を の専門ベンダーに依頼する。テストで チェックするのかを明確にする。レビューでき きる担当者のリソースを確保する る担当者のリソースを確保する ポイント③ セキュリティ・バグの コスト要因となるレビューとテストを計画的に 撲滅 日経SYSTEMS2009年8月号「プロマネの技で守るWebセキュリティ」図1を改変
  • 18. セキュリティ要件とはなにか  リバース・リスク・アセスメントのところで出てきたよ うな「積極的な」セキュリティ対策  セキュリティ仕様の例  パスワード仕様、アカウント・ロック…  暗号化(回線、データベース)  ログ  ウィルス対策ソフトの導入  …  セキュティ仕様の実装は、要件定義からウォーター フォールで粛々と実施(通常機能と同じ)  脆弱性対策は開発標準で対応 Copyright (C) 2009 HASH Consulting Corp. 18
  • 19. 開発標準と教育 • SQLインジェクション対策やXSS対策などは、実装設計 時に個別に設計していたのでは効率が悪いし、対応が統 一できないので、開発標準で定義する • 開発標準は作りっぱなしになることが多く、定着が難し い。教育を実施して、テストで定着度を確認するとよい • 日経SYSTEMS寄稿時に各社にインタビューした際の印 象では、「やられサイト」を作って開発者向けにデモし ている企業が意外に多く、効果が期待できる Copyright (C) 2009 HASH Consulting Corp. 19
  • 20. 開発標準として利用できるリソース • 安全なウェブサイトの作り方 改訂第3版 – http://www.ipa.go.jp/security/vuln/websecurity.html • 発注者のためのWebシステム/Webアプリケーション セキュリティ要件書 – http://脆弱性診断.jp/specifications/index.html • いずれも基本的な内容だが、これくらいからスタートするほうが賢明 【参考】K社の 開発標準利用状況 引用:http://techtarget.itmedia.co.jp/tt/news/0902/10/news01.html Copyright (C) 2009 HASH Consulting Corp. 20
  • 21. 方式設計のすすめ • 開発標準の抽象度が高い場合、基本設計フェーズの「方 式設計」として、具体的なコードレベルに落としておく とよい XSS対策のため特殊文字をエスケープする Bad H TM L表示の際に「 、「 、「 、「」 <」 >」 &」 ”は文字参照によりエ スケープする H TM L表示の際にhtm l speci chars()関数により al エスケープ H TM L表示の際にライブラリ e()関数を用いる 【 実装】 functi e($p) { on echo htm l speci chars($p,EN T_Q U O TES,' TF-8' al U ); } Good • 開発言語、アーキテクチャ、ライブラリ、チームの習慣 等を考慮し、コピペ可能なレベルまで具体化しておく • 方式設計の際には、テスト方法も検討しておくとよい Copyright (C) 2009 HASH Consulting Corp. 21
  • 22. コスト要素はどこか • 「セキュリティ要件」については、機能が増えることになるの で、直接コスト増となる – 発注者と要件詰めをしっかり行う必要がある • セキュリティバグについては以下がコスト要因となる – 開発標準作成、開発者の教育 – セキュリティテスト • 「発注者のための…セキュリティ要件書」でコスト増になるの は・・・ – アカウントロック機能の作りこみ – SSLの証明書代 …たいしたことはない • 開発標準や教育はプロジェクトをまたがって有効なので間接費用 と考えられる。一度しっかりしつものを作れば使い回しがきく • セキュリティテストはプロジェクトごとに必要であり、費用も大 きいので、セキュリティテストのコスト削減が、セキュア開発の 課題 Copyright (C) 2009 HASH Consulting Corp. 22
  • 23. セキュリティテスト  セキュリティ要件にせよ、セキュリティバグにせよ、最 終的にはテストで品質を保証することになる  開発工程  ソースコードレビュー、ソースコードチェッカー  単体テスト工程での「ウェブ健康診断仕様」利用もあり  テスト工程  ツールでのテスト・・・ツールが高価、全項目テストできない  ウェブ健康診断仕様の活用  専門家にアウトソース  受け入れテスト(検収)  ウェブ健康診断仕様の活用  専門家にアウトソース Copyright (C) 2009 HASH Consulting Corp. 23
  • 24. ウェブ健康診断とは 診断方式 : 遠隔地からインターネット経由による手動若しくは自動診断ツールを利用 診断実施数:約300団体 診断対象 : 地方公共団体が保有若しくは利用している、現在インターネットで稼動中 のWeb サーバ1サイト分(1 ドメインネーム) http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html より引用
  • 25. ウェブ健康診断仕様(1)  12項目の診断項目により危険度の高い脆弱性項目を網 羅している  実被害に至る可能性の高いものに限定  「安全なウェブサイトの作りかた 改定第3版」で解説されてい る 9種類の脆弱性を包含  診断仕様、判定基準、抜き取り基準が明確に定義・公開 されている  公開された無償ツールのみで診断できる  本番稼働サイトの診断を前提とした安全性の高い診断仕 様である Copyright (C) 2009 HASH Consulting Corp. 25
  • 31. burp suiteの設定(Intercept) Copyright (C) 2009 HASH Consulting Corp. 31
  • 32. burp Suite の設定(ログ取得) Copyright (C) 2009 HASH Consulting Corp. 32
  • 33. Intercept と検査パターンの入力 Copyright (C) 2009 HASH Consulting Corp. 33
  • 35. テスト工程のコスト削減方法 • 専門家に全部頼むと高いので、できる部分は自分でやる • 必ずしも全項目をテストする必要はない • 明らかにテスト不要なもの – 外部コマンドを利用しない・・・OSコマンドインジェクショ ンは不要 – メール送信しない・・・メールヘッダインジェクションは不要 • ソースコード検査の方が効率がよいもの – OSコマンドインジェクション – パストラバーサル – SQLインジェクション(ソースコード検査しやすいように開発 標準を定めておくと良い) • セルフテスト工数を削減して浮いた費用で、専門家にも 検査してもらうとなお可 Copyright (C) 2009 HASH Consulting Corp. 35
  • 36. まとめ • セキュアな発注方法論は発展途上であり、まだ業界標準 といえる方法がない • 要件について – セキュリティ要件とセキュリティバグに分けて考える – 資産洗い出し、脅威分析は定石だが、Webアプリの場合、 うんと簡略化してよい • セキュリティバグ対応は、開発標準整備とチームの教育 が鍵 • テスト、検収について – おもなコスト要素はセキュリティテスト – セキュリティテストツールとしての「ウェブ健康診断仕様」 • 契約にも注意 Copyright (C) 2009 HASH Consulting Corp. 36