コース概要

Day 1

ITセキュリティと安全なコーディング

  • セキュリティの性質
  • ITセキュリティに関連する用語
  • リスクの定義
  • ITセキュリティの異なる側面
  • 異なるアプリケーション領域の要件
  • ITセキュリティと安全なコーディング
  • 脆弱性からボットネットとサイバー犯罪まで
    • セキュリティ欠陥の性質
    • 困難な理由
    • 感染したコンピュータから標的型攻撃まで
  • セキュリティ欠陥の分類
    • Landwehr の分類法
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • OWASP Top Ten 2003 – 2013 の比較

Microsoft® Secure Development Lifecycle (SDL) への導入

  • アジェンダ
  • 攻撃を受けているアプリケーション...
    • サイバー犯罪の進化
    • 攻撃はアプリケーションに焦点を当てています
    • 多くの脆弱性が小さなISVアプリに存在します
  • Microsoft SDL の起源...
    • Microsoft におけるセキュリティの年表...
    • SDL を遵守する必要があるアプリは?
  • Microsoft Secure Development Lifecycle (SDL)
    • Microsoft Secure Development Lifecycle (SDL)
    • SDL 前の要件:セキュリティトレーニング
    • 第1フェーズ: 要件
    • 第2フェーズ: デザイン
    • 第3フェーズ: 実装
    • 第4フェーズ: 検証
    • 第5フェーズ: リリース – 応答計画
    • 第5フェーズ: リリース – 最終セキュリティレビュー
    • 第5フェーズ: リリース – アーカイブ
    • SDL 後の要件:応答
    • LOBアプリケーションのSDLプロセスガイドライン
    • 敏捷開発手法のためのSDLガイドライン
    • 安全なソフトウェア開発にはプロセス改善が必要です

安全なデザインの原則

  • 攻撃面積
    • 攻撃面積の削減
    • 攻撃面積 – 例
    • 攻撃面積分析
    • 攻撃面積の削減 – 例
  • プライバシー
    • プライバシー
    • アプリケーションの動作と懸念点の理解
  • 深層防御
    • SDL コア原則: 深層防御
    • 深層防御 – 例
  • 最小特権の原則
    • 最小特権 – 例
  • セキュアなデフォルト設定
    • セキュアなデフォルト設定 – 例

安全な実装の原則

  • アジェンダ
  • Microsoft Secure Development Lifecycle (SDL)
  • スタックオーバーフローの基本
    • Intel 80x86 プロセッサ – 主要レジスタ
    • メモリアドレスレイアウト
    • x86 上の C/C++ の関数呼び出しメカニズム
    • 局所変数とスタックフレーム
    • スタックオーバーフロー
      • スタック上のバッファオーバーフロー
      • 演習 – はじめに
      • 演習 BOFIntro
      • 演習 BOFIntro – スタックレイアウトの決定
      • 演習 BOFIntro – 単純なエクスプロイト
  • 入力検証
    • 入力検証の概念
    • 整数問題
      • 負の整数の表現
      • 整数オーバーフロー
      • 算術オーバーフロー – 出力を予測してみよう!
      • 演習 IntOverflow
      • Math.Abs(int.MinValue) の値は?
    • 整数問題の対策
      • 整数問題の対策
      • 算術オーバーフローの回避 – 加算
      • 算術オーバーフローの回避 – 乗算
      • C# の checked キーワードでオーバーフローを検出
      • 演習 – C# の checked キーワードの使用
      • C# でのオーバーフローによる例外の発生
    • .NET における整数オーバーフローのケーススタディ
      • 実際の整数オーバーフローバグの脆弱性
      • 整数オーバーフローバグの脆弱性を悪用する方法
    • パストラバーサルの脆弱性
      • パストラバーサルの対策

Day 2

安全な実装の原則

  • インジェクション
    • 典型的な SQL インジェクション攻撃手法
    • ブラインドおよび時間ベースの SQL インジェクション
    • SQL インジェクションの保護方法
    • コマンドインジェクション
  • 破れた認証 - パスワード管理
    • 演習 – ハッシュ化されたパスワードの脆弱性
    • パスワードの管理と保存
    • パスワード保存用の特殊なハッシュアルゴリズム
  • クロスサイトスクリプティング (XSS)
    • クロスサイトスクリプティング (XSS)
    • CSS インジェクション
    • 悪用: 他の HTML タグを介したインジェクション
    • XSS の防止方法
  • 関数レベルのアクセス制御の欠如
    • ファイルアップロードのフィルタリング
  • 実践的な暗号化
    • 対称鍵暗号による機密性の提供
    • 対称暗号アルゴリズム
    • ブロック暗号 – 操作モード
    • ハッシュまたはメッセージダイジェスト
    • ハッシュアルゴリズム
    • メッセージ認証コード (MAC)
    • 対称鍵による整合性と認証の提供
    • 公開鍵暗号による機密性の提供
    • 指針 – 秘密鍵の所有
    • パスワード管理における典型的な間違い
    • 演習 – 硬codedされたパスワード
    • 結論

安全な検証の原則

  • 機能テストとセキュリティテスト
  • セキュリティ脆弱性
  • 優先順位付け
  • SDLCにおけるセキュリティテスト
  • テスト計画の手順(リスク分析)
  • 範囲設定と情報収集
    • 利害関係者
    • アセット
    • 攻撃面積
    • テストのセキュリティ目的
  • 脅威モデリング
    • 脅威モデリング
    • 攻撃者プロファイル
    • セキュリティツリーに基づく脅威モデリング
    • 不正使用/悪用ケースに基づく脅威モデリング
    • 不正使用/悪用ケース – 単純なWebショップの例
    • STRIDE要素別の脅威モデリング – MS SDL
    • セキュリティ目的の特定
    • ダイアグラム – DFD要素の例
    • データフローダイアグラム – 例
    • 脅威列挙 – MS SDL の STRIDE と DFD 要素
    • リスク分析 – 脅威の分類
    • DREAD脅威/リスクランクモデル
  • セキュリティテスト手法とツール
    • 一般的なテストアプローチ
    • SDLCの各ステップにおける技術
  • コードレビュー
    • ソフトウェアセキュリティのためのコードレビュー
    • 汚染分析
    • ヒューリスティック
  • 静的コード解析
    • 静的コード解析
    • 演習 – 静的コード解析ツールの使用
  • 実装のテスト
    • 手動実行時の検証
    • 手動と自動化されたセキュリティテスト
    • ペネトレーションテスト
    • ストレストテスト
  • ファジング
    • 自動化されたセキュリティテスト - ファジング
    • ファジングの課題
  • Web脆弱性スキャナー
    • 演習 – 脆弱性スキャナーの使用
  • 環境のチェックと強化
    • 共通脆弱性スコアリングシステム – CVSS
    • 脆弱性スキャナー
    • 公開データベース
  • ケーススタディ – フォーム認証バイパス
    • NULLバイト終端の脆弱性
    • コードにおけるフォーム認証バイパスの脆弱性
    • フォーム認証バイパスを悪用する方法

知識源

  • 安全なコーディングの情報源 – スターターキット
  • 脆弱性データベース
  • .NET の安全なコーディングガイドライン (MSDN)
  • .NET の安全なコーディングチェックリスト
  • 推薦書籍 – .NET と ASP.NET
 14 時間

参加者の人数


参加者1人当たりの料金

お客様の声 (5)

今後のコース

関連カテゴリー