お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
コース概要
1日目
ITセキュリティとセキュアコーディング
- セキュリティの本質
- ITセキュリティ関連用語
- リスクの定義
- ITセキュリティの異なる側面
- 異なるアプリケーション領域の要件
- ITセキュリティとセキュアコーディングの違い
-
脆弱性からボットネット、サイバー犯罪へ
- セキュリティ欠陥の本質
- 困難な理由
- 感染したコンピュータから標的型攻撃へ
-
セキュリティ欠陥の分類
- Landwehrの分類学
- Seven Pernicious Kingdoms(7つの悪の王国)
- OWASP Top Ten 2013
- OWASP Top Ten 比較 2003 – 2013
Microsoft® Security Development Lifecycle (SDL) の概要
- アジェンダ
-
攻撃下のアプリケーション...
- サイバー犯罪の進化
- 攻撃はアプリケーションに集中しています
- 大多数の脆弱性は小型ISVアプリにあります
-
Microsoft SDLの起源...
- Microsoftにおけるセキュリティのタイムライン...
- SDLに従うことが求められるアプリは何か?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- SDL前要件:セキュリティトレーニング
- フェーズ1:要件定義
- フェーズ2:設計
- フェーズ3:実装
- フェーズ4:検証
- フェーズ5:リリース – 対応計画
- フェーズ5:リリース – 最終セキュリティレビュー
- フェーズ5:リリース – アーカイブ
- SDL後要件:対応
- LOBアプリ向けのSDLプロセスガイドライン
- アジャイルメソッド論向けのSDLガイドライン
- 安全なソフトウェア開発にはプロセスの改善が必要です
安全な設計の原則
-
攻撃面(Attack Surface)
- 攻撃面の削減
- 攻撃面 – 例
- 攻撃面分析
- 攻撃面の削減 – 例
-
プライバシー
- プライバシー
- アプリケーションの動作と懸念事項の理解
-
多層防御(Defense in Depth)
- SDLのコア原則:多層防御
- 多層防御 – 例
-
最小権限の原則
- 最小権限 – 例
-
安全なデフォルト設定
- 安全なデフォルト設定 – 例
安全な実装の原則
- アジェンダ
- Microsoft Security Development Lifecycle (SDL)
-
バッファオーバーフローの基礎
- Intel 80x86 プロセッサ – メインレジスタ
- メモリアドレスのレイアウト
- x86環境におけるC/C++の関数呼び出しメカニズム
- ローカル変数とスタックフレーム
-
スタックオーバーフロー
- スタック上のバッファオーバーフロー
- 演習 – 導入
- 演習 BOFIntro
- 演習 BOFIntro – スタックレイアウトの決定
- 演習 BOFIntro – シンプルなエクスプロイト
-
入力検証
- 入力検証の概念
-
整数の問題
- 負の整数の表現
- 整数オーバーフロー
- 算術オーバーフロー – 出力を当ててみましょう!
- 演習 IntOverflow
- Math.Abs(int.MinValue) の値は?
-
整数問題の緩和
- 整数問題の緩和
- 算術オーバーフローの回避 – 加算
- 算術オーバーフローの回避 – 乗算
- C#におけるcheckedキーワードによるオーバーフロー検出
- 演習 – C#でのcheckedキーワードの使用
- C#でオーバーフローによってトリガーされる例外
-
ケーススタディ – .NETにおける整数オーバーフロー
- リアルワールドの整数オーバーフロー脆弱性
- 整数オーバーフロー脆弱性の悪用
-
パストラバーサル脆弱性
- パストラバーサルの緩和
2日目
安全な実装の原則
-
インジェクション
- 典型的なSQLインジェクション攻撃手法
- ブラインドSQLインジェクションとタイムベースSQLインジェクション
- SQLインジェクション対策手法
- コマンドインジェクション
-
認証の破損 - パスワード管理
- 演習 – ハッシュ化されたパスワードの弱さ
- パスワードの管理と保存
- パスワード保存のための専用ハッシュアルゴリズム
-
クロスサイトスクリプティング (XSS)
- クロスサイトスクリプティング (XSS)
- CSSインジェクション
- 悪用:他のHTMLタグを通じたインジェクション
- XSSの防止
-
関数レベルのアクセス制御の欠如
- ファイルアップロードのフィルタリング
-
実用的な暗号技術
- 対称暗号による機密性の提供
- 対称暗号化アルゴリズム
- ブロック暗号 – 動作モード
- ハッシュまたはメッセージダイジェスト
- ハッシュアルゴリズム
- メッセージ認証コード (MAC)
- 対称キーによる完全性と真正性の提供
- 公開鍵暗号による機密性の提供
- 経験則 – 秘密鍵の所持
- パスワード管理における典型的な誤り
- 演習 – ハードコードされたパスワード
- 結論
安全な検証の原則
- 機能テストとセキュリティテスト
- セキュリティ脆弱性
- 優先順位付け
- SDLCにおけるセキュリティテスト
- テスト計画の手順(リスク分析)
-
スコーピングと情報収集
- ステークホルダー
- アセット
- 攻撃面
- テストのためのセキュリティ目標
-
脅威モデリング
- 脅威モデリング
- 攻撃者プロファイル
- 攻撃ツリーに基づく脅威モデリング
- Misuse/Abuseケースに基づく脅威モデリング
- Misuse/Abuseケース – シンプルなWebショップの例
- 要素ごとのSTRIDEアプローチによる脅威モデリング – MS SDL
- セキュリティ目標の特定
- ダイアグラミング – DFD要素の例
- データフローダイアグラム – 例
- 脅威列挙 – MS SDLのSTRIDEとDFD要素
- リスク分析 – 脅威の分類
- DREAD脅威/リスクランキングモデル
-
セキュリティテスト技術とツール
- 一般的なテストアプローチ
- SDLCの各種ステップのための技術
-
コードレビュー
- ソフトウェアセキュリティのためのコードレビュー
- Taint分析
- 経験則(ヒューリスティクス)
-
静的コード分析
- 静的コード分析
- 演習 – 静的コード分析ツールの使用
-
実装のテスト
- 手動ランタイム検証
- 手動テストと自動化セキュリティテスト
- ペネトレーションテスト
- ストレステスト
-
Fuzzing
- 自動化セキュリティテスト - Fuzzing
- Fuzzingの課題
-
Web脆弱性スキャナ
- 演習 – 脆弱性スキャナの使用
-
環境の確認とハードニング
- 共通脆弱性評価システム – CVSS
- 脆弱性スキャナ
- 公開データベース
-
ケーススタディ – フォーム認証バイパス
- NULLバイト終了脆弱性
- コード内のフォーム認証バイパス脆弱性
- フォーム認証バイパスの悪用
知識の源泉
- セキュアコーディングの情報源 – スターターキット
- 脆弱性データベース
- MSDNにある.NETセキュアコーディングガイドライン
- .NETセキュアコーディングチートシート
- 推奨書籍 – .NET および ASP.NET
14 時間
お客様の声 (3)
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
コース - C/C++ Secure Coding
講師の知識は非常に高かったです。彼は自分が話している内容をよく理解しており、私たちの質問にも的確に答えることができました。
Adam - Fireup.PRO
コース - Advanced Java Security
機械翻訳
このトピックは最新のものであり、私が必要な情報をアップデートする必要がありました。
Damilano Marco - SIAP s.r.l.
コース - Secure Developer Java (Inc OWASP)
機械翻訳