学習モード
学習モードでは、シミュレートされたブラウザ環境でのインタラクティブなステップバイステップ攻撃シナリオを提供します。実世界の攻撃チェーンを順を追って体験して、脆弱性がどのように悪用され、どのように防止するかを理解します。
仕組み
学習モードは、インタラクティブな攻撃シナリオに沿って進むガイド付きの分割画面インターフェースを使用します:
左パネル — シナリオガイド
ステップバイステップの指示、シナリオコンテキスト、攻撃チェーン全体を案内するナレーター。各ステップは何をすべきかを正確に伝えます。
右パネル — シミュレートされた環境
アクションを実行する完全にインタラクティブなブラウザ、モバイルデバイス、またはプロキシシミュレーション — ボタンをクリックし、フォームを記入し、リアルタイムで応答を観察します。
学習モードインターフェース
シナリオ中の分割画面学習モードは次のようになります:
URL内のidを/profile/1から/profile/2に変更します。アプリが所有権を確認せずに2人目のユーザーのデータを提供することに注意してください。
params.idを信頼しています。シナリオ構造
すべてのシナリオは、実世界のセキュリティアセスメントを反映した一貫した5段階パターンに従います:
シミュレートされた環境
学習モードは、脆弱性カテゴリに応じて3種類のシミュレーションを使用します:
| 環境 | 使用対象 | 説明 |
|---|---|---|
| SimBrowser | Web脆弱性 | URLバー、ナビゲーション、フォーム、動的応答を備えた完全にインタラクティブなWebブラウザシミュレーション。XSS、CSRF、SQL Injection、その他のWeb攻撃に使用。 |
| SimMobilePhone | モバイル脆弱性 | ネイティブUI要素、ステータスバー、タッチインタラクションを備えたiOSとAndroidデバイスのシミュレーション。安全でないストレージ、WebViewインジェクション、証明書ピンニングシナリオに使用。 |
| SimWebProxy | API脆弱性 | 生のAPI呼び出し、ヘッダー、ペイロードを表示するHTTPリクエスト/レスポンスプロキシ。BOLA、マスアサインメント、壊れた認証、その他のAPIセキュリティシナリオに使用。 |
進捗トラッキング
各シナリオは、終了した場所から正確に再開できるように進捗を追跡します:
| メトリック | 説明 |
|---|---|
| 現在のステップ / 合計ステップ | シナリオ内の位置を表示 — 例: 「ステップ 8 / 14」 |
| 完了ステータス | in_progressまたはcompleted |
| 再開サポート | シナリオを閉じて後で戻ることができます — 最後のステップから再開します |
シナリオ進捗
シナリオリストには現在の進捗が一目で表示されます:
ガイド付きシナリオがコードレビューチャレンジで教えられないことを教えるとき
練習モードのコードレビューチャレンジは自己完結型のスニペットを渡します。それは脆弱性が行レベルでどのように見えるかの公正な表現ですが、ほとんどの実際の脆弱性は単一の行にはありません。それらはファイル間、サービス間、またはクライアントとサーバー間の境界にわたって存在します。IDORは典型的な例です: 悪いコードはデータベースクエリではなく、スタックを3層上にある欠落した認可チェックです。学習モードは、アプリケーション全体を目の前に置くため、そのギャップを示すことができる形式です。
悪用がセッション状態、複数ステップのリクエストフロー、または攻撃者制御のタイミングに依存する脆弱性についても同じことが言えます。蓄積型XSSは、ペイロードが1人のユーザーから別のユーザーに移動して初めて重要になります。マスアサインメントは、モデル層が露出すべきでなかったリクエストボディキーを信頼するときに初めて重要になります。スニペットはそのチェーンを示すことはできません。シナリオはそれができます。なぜなら、ログインし、アクションを実行し、応答を観察し、脆弱性がリアルタイムで侵害に変わるのを見るからです。上の5段階のシナリオ構造は、まさにその弧の周りに設計されています。
すでにシニアの場合に学習モードを使用する方法
シニア開発者とセキュリティエンジニアは、ナレーターとステップバイステップの指示が遅く感じるため、学習モードをスキップすることがあります。それは個人的に数十回悪用した脆弱性クラスについては公正です。シニア学習者にとっての学習モードの正しい使用法は、完了主義ではなく的を絞ったものです。導入を流し読みし、発見を流し読みし、攻撃面が馴染みのないときだけ悪用で減速してください。iOSコードを書いたことがないバックエンドエンジニアは、同じカテゴリで20回の練習チャレンジよりも、単一のモバイル安全でないストレージシナリオから多くを学びます。なじみのない部分は概念ではなくプラットフォームだからです。
もう1つのシニアユースケースは言語ギャップを埋めることです。よく知らないスタックを使用するチームに参加した場合、そのスタックの学習シナリオは、レビューするアプリケーションの形状と攻撃面の高速ツアーとしても機能します。スタック設定からのスタックに合わせた練習と組み合わせて、ドキュメントを読むだけよりも早く新しいコードベースにランプアップしてください。
カスタムコースは学習と練習を1つにバンドル
組織管理者は、学習シナリオと練習トピックを単一の厳選されたパスに混在させる名前付きのシーケンスを構築できます — ビルドフローについてはカスタムコースを参照。カスタムコースがあなたに割り当てられると、組み込みコースであるかのように/learn/custom/<courseId>で消費し、項目は管理者が定義した順序で表示されます。練習項目は練習モードと同じようにスコアし、XPを報酬します。学習項目はここと同じようにシナリオごとの進捗を書き込みます。