プラットフォーム概要
SecureCodingHubは、開発者が実践的な演習を通じてセキュリティ脆弱性を特定して修正する方法を学べる、インタラクティブなセキュアコーディングトレーニングプラットフォームです。カタログは現在提供されている4つのOWASPトップ10ファミリー (Web、API、モバイル、クライアントサイド) にわたる200以上のトピックを網羅しており、学習者体験は8つのUI言語で利用可能です。
SecureCodingHubとは?
SecureCodingHubは、実世界のセキュアコーディングスキルを構築するために設計された2つのトレーニングモードを提供します:
練習モード
開発者が脆弱なコードブロックを見つけ、正しい修正を選択するコードレビューチャレンジ。7つのバックエンド言語、6つのフロントエンドスタック (React、Vue、Angular — 各々TypeScriptとJavaScript)、2つのモバイルプラットフォームで利用可能。
学習モード
シミュレートされたブラウザ環境でのインタラクティブなステップバイステップ攻撃シナリオ。開発者は実世界の攻撃チェーンを順を追って体験し、脆弱性がどのように悪用されるかを理解します。
サポートされているOWASPカテゴリ
トレーニングコンテンツは、4つの主要なOWASPセキュリティ標準にわたって編成されています:
| カテゴリ | トピック | 説明 |
|---|---|---|
| Web Top 10 | 10モジュール、約88トピック | SQL Injection、XSS、CSRF、Broken Access Control、その他 |
| API Top 10 | 10モジュール、約45トピック | BOLA、Broken Authentication、Mass Assignment、SSRF、その他 |
| Mobile Top 10 | 10モジュール、約47トピック | Insecure Storage、WebView Injection、Certificate Pinning、その他 |
| Client-Side Top 10 | 10モジュール、約46トピック | DOM XSS、Prototype Pollution、Local Storage Secrets、その他 |
サポート言語とフレームワーク
バックエンド言語
フロントエンドフレームワーク
モバイルプラットフォーム
ユーザーロール
各組織内で、ユーザーは2つのロールのいずれかになります:
| ロール | アクセス権 |
|---|---|
| 組織管理者 | ユーザー、チーム、課題、カスタムコース、SSO、SCIM、SCORM、APIキー、Webhook、監査ログ、コンプライアンスダッシュボード、組織設定を管理します。 |
| 学習者 | 練習チャレンジと学習シナリオを完了し、個人の進捗を追跡し、XPを獲得します。 |
詳細はロールと権限を参照してください。
UI言語
学習者と管理者のインターフェースは8つの言語に翻訳されています。ユーザーはトップバーからUI言語を選択でき、選択はセッション間で維持されます。
トレーニングコンテンツの翻訳は別途展開中です — チャレンジシナリオと散文は、ローカライズされるにつれて同じ言語セットに翻訳されます。
ダッシュボードの概要
こちらが初回サインイン時に表示される管理者ダッシュボードです:
2つのモードがどのように補完し合うか
練習と学習は、2つの形式の同じ演習ではありません。練習モードはコードレベルのパターン認識を対象としています: 数行のコードを与えられたとき、安全でないプリミティブを見つけて、安全な置換を選択できるかどうかです。これは高速で反復可能であり、幅広い脆弱性タイプにわたる筋肉記憶を構築するのに最適です。PythonとTypeScriptで40種類のSQLインジェクションの亜種を見てきた開発者は、実際のプルリクエストで次のものを考えることなく検出します。2段階フローについては練習モードを参照してください。
学習モードは練習モードがカバーできないものを扱います。コードレビューチャレンジはスニペットを示しますが、実際の脆弱性は2つのファイル、2つのサービス、または2つの信頼層のギャップに存在します。学習シナリオはシミュレートされたアプリケーションの前にあなたを置き、攻撃者の経路を順を追って案内します: 発見、悪用、影響、防止。そのコンテキストこそが、チェックリストの緩和策を設計の本能に変えるものです。幅には練習を、深さには学習を使用してください。新入社員は通常、そのカテゴリの練習を集中的に行う前に、各カテゴリで1つの学習シナリオから始めます。シナリオ構造については学習モードを参照してください。
プラットフォームが脆弱性クラスを中心に構築されている理由
カタログはOWASPカテゴリと脆弱性タイプによって編成されており、プログラミング言語ではありません。これは意図的なものです。脆弱性は言語に依存しない概念です: SQLインジェクションは、クエリがPython、Java、Goで存在するかどうかに関係なく、ユーザー入力がクエリプランに到達する方法の問題です。言語別に編成されたプラットフォームは、知識のサイロ化を招きます。自分の言語でXSSを学ぶPython開発者は、同じプリミティブがVue、Angular、Reactに異なるエスケープルールで現れることを決して見ません。クラス別に編成することで、このギャップを回避します。
スタック設定システムは、その下にある言語固有の表面積を処理します。スタック設定を介してスタックを一度選択すると、すべてのチャレンジはあなたが流暢に読める構文にデフォルト設定されます。その下では、同じ脆弱性クラスが、サポートされているすべてのスタックにわたって同じ概念的フレームで教えられます。後でチームを移動したり新しい言語を学んだりするとき、概念は最初から1つの構文に縛られていなかったため、すぐに転送されます。