Slide 1

Slide 1 text

OWASP Top 10 をベースとした
 自社最適なセキュアコーディングガイドの作成
 奥野 健一 @okuken3 2019.08.19 WASNight 2019 Summer = OWASP x WASForum Night

Slide 2

Slide 2 text

Agenda 1. 自己紹介
 2. 背景
 3. セキュアコーディングガイドの作成
 4. セキュアコーディングガイドの運用
 5. まとめ


Slide 3

Slide 3 text

奥野 健一 @okuken3 
 株式会社ウエディングパーク
 プロダクトセキュリティチーム(2018年12月に立上げ)
 
 情報処理安全確保支援士 登録申請中
 
 
 自己紹介


Slide 4

Slide 4 text

✓ 主要部分は概ねPHP/Laravelで実装


Slide 5

Slide 5 text

2. 背景


Slide 6

Slide 6 text

プロダクトセキュリティ チーム立上げ
 脆弱性診断一部内製化 
 運用開始
 2018.12 2019.01 02 03 04 05 06 07 08 プロダクトセキュリティチームの経過
 Vuls運用開始
 新卒向け
 プロダクトセキュリティ研修 
 セキュアコーディング ガイド作成・運用開始 
 脆弱性情報共有 定例会議開始
 プロダクトセキュリティ 
 社内ポータルサイト開始 
 RISS試験合格
 (奥野)


Slide 7

Slide 7 text

開発フロー上の課題点
 企画
 設計
 実装
 単体
 テスト
 総合
 テスト
 脆弱性 診断
 リリース
 ✓ ブラックボックス診断であり脆弱性発見の網羅性に限界がある 
 ✓ このタイミングの脆弱性発見では手戻りの影響が大きい 
 ✓ セキュアコーディングガイドを全社開発標準として組み込むことで、 
   設計・実装のタイミングで脆弱性の混入を防止する 
 ✓ 脆弱性診断は開発フローの最後の砦
 ✓ 「脆弱性診断では指摘ゼロが当たり前」を全開発者に意識づけ


Slide 8

Slide 8 text

3. セキュアコーディングガイドの作成


Slide 9

Slide 9 text

HTTP Server PHP Application DB 設計書 一般的なセキュアコーディングガイド


Slide 10

Slide 10 text

HTTP Server PHP Application DB 設計書 Prepared Statements を使いましょう
 ユーザー入力をウェブページ に出力する場合はエスケープ 処理を施しましょう
 認証機能を設けましょう 
 一般的なセキュアコーディングガイド


Slide 11

Slide 11 text

HTTP Server PHP Laravel Middleware Controller Model View HTTP Server PHP Application DB DB 自社最適なセキュアコーディングガイド


Slide 12

Slide 12 text

HTTP Server PHP Laravel Middleware Controller Model View DB Blade(ViewFW) での実装例がな いと曖昧になる
 Eloquent(ORM) での実装例がな いと曖昧になる
 HTTP Server PHP Application DB 認証認可は
 middlewareでの 実装例がないと 曖昧になる
 HTTP Serverで各種 HTTPヘッダを付与し ている事実を前提に しないと曖昧になる
 自社最適なセキュアコーディングガイド


Slide 13

Slide 13 text

自社最適なセキュアコーディングガイド
 DBアクセスの
 改修あり?
 【SQLインジェクション防止のルール内容を確認】 Eloquent(ORM)を適切に使用する 実装イメージ
 湧かない?
 次のルールへ 【実装のOK例/NG例を確認】 OK例:User::where(“name”, $name)->get(); NG例:User::whereRaw("name='" . $name . "'")->get(); ルール順守を確認 次のルールへ ✓ こんな感じのルールが
 ✓ 表形式で
 ✓ 重要度順に過多でない分量で 
 一覧化されたガイドが望ましい。 
 (静的チェック自動化は追々)
 
 


Slide 14

Slide 14 text

攻撃
 可能性
 診断指摘
 ゼロ
 何をベースとするか
 適度な
 分量
 ✓ 実績を基にした重大リスクトップ 10であり、
 ✓ 脆弱性診断の観点にも含まれている、 
 OWASP Top 10 をベースとすることで、
 直接的に要件を満たすガイドを作成する。


Slide 15

Slide 15 text

いかにしてガイドに落とし込むか
 https://www.owasp.org/images/2/23/OWASP_Top_10-2017%28ja%29.pdf OWAST Top 10 (2017, 2013) の各リスクを主軸とし、
 下記資料等を参考に、セキュアコーディングルールに落とし込み。 
 
 ✓ OWASP Top 10 の「防止方法」「参考資料」の項(右図赤枠)
 ✓ Webアプリケーション脆弱性診断ガイドライン (OWASP Pentester Skillmap Project JP) ✓ OWASP Cheat Sheet Series
 ✓ 安全なウェブサイトの作り方 (IPA) ✓ Laravel Documentation ✓ 自社サービスのソースコード、インフラの設定 


Slide 16

Slide 16 text

4. セキュアコーディングガイドの運用


Slide 17

Slide 17 text

✓ 全社開発標準に組み込み
 ✓ まずはセルフチェックをルール化
 
 ✓ 開発者からの質問・要望の受付窓口設置(Slackチャンネル)
 ✓ 追記すべき事柄があれば随時追記・周知
 
 ✓ セキュアコーディングガイド勉強会の開催
 セキュアコーディングガイドの運用


Slide 18

Slide 18 text

まとめ
 ✓ OWASP Top 10 をベースとした、自社最適なセキュアコーディングガイドを作成
 
 ✓ 全社開発標準に組み込み、まずはセルフチェックによる運用から開始
 
 ✓ 質問・要望の受付窓口を設置し、現場の声を吸い上げ
 
 ✓ 現場の声や、最新のセキュリティ知見を取り入れ、継続的に改善


Slide 19

Slide 19 text

ご清聴ありがとうございました