トーナメント


Secure Code Warrior には、セキュアコーディングスキルを競う「トーナメント」機能が搭載されています。トーナメント参加者達は、提示されたコードから脆弱性を特定し修正する課題をクリアし、獲得ポイントを競い合います。課題は、初歩的なものから難易度の高いものまで、実際のコード例に基づいて作成されていますが、ゲーム感覚で実施できるので参加者は楽しみながら挑むことができます。


リーダーボードは以下のように表示されます。

狙い

トーナメントは、開発チームにセキュアコーディング学習を導入する際のキックオフや、新しい開発者が参画した際など、初めに実施するのが良いと言えます。その理由として、さまざまな脆弱性について、初歩的なものから難易度の高いものまで最低でも24問の課題が出題されるため、開発者のスキルレベルについて、短い時間で多角的な分析結果を得ることができるからです。
  • 開発者のセキュアコーディングに関するスキルレベルを知ることができる
  • 開発者の理解度が低い脆弱性が何かを知ることができる
  • チームの理解度が低い脆弱性が何かを知ることができる

以下は、トーナメントで実施する言語をJava Enterprise Edition(Basic)に設定したときの課題一覧例。

理解度の低い脆弱性を知ることの重要性

多忙な開発者にセキュアコーディング学習を行ってもらうためには、学習の効率性が求められます。例えば、5時間も費やす必要がある全般的な学習カリキュラムを渡しても、業務の合間に集中して学習する時間はありません。一方で、開発者やチームの理解度が低い脆弱性が何かを知っておくことで、その弱みに対するピンポイントな学習を促すことが可能になります。マネジャーは、開発者やチームの弱みを克服するための的を絞った学習カリキュラムを「コース」機能で作成し、開発者やチームにアサインできます。例えば、以下のような学習フローが効率的な学習と言えます。

  1. トーナメントで弱みを把握する
  2. コースで弱みに焦点を当て学習する
  3. アセスメントで理解度をチェックする

*Secure Code Warrior社によると、一気に沢山の課題を克服しようとするのではなく、最も理解度が低い脆弱性Top3に注力し、確実に理解を高める学習運用が推奨されています。

スキルレベルが高い開発者を知ることの重要性

セキュアコーディングに精通した開発者はまだ多いとは言えず、貴重な人材です。トーナメントは、こうした人材を短時間で発見することを可能にします。開発チームや組織の力を向上させるために、スキルレベルの高い開発者をセキュアコーディング学習の運用メンバーとして採用し、継続的な学習を運営していく上での企画や学習カリキュラムの作成などに関与してもらうことが推奨されています。

トーナメントの出題形式

トーナメントは、「課題」と呼ばれる問題形式で出題されます。課題は、コードに実装された「脆弱性の特定」と「脆弱性の修正」の2つの問題から構成されています。詳しくは、「課題」をご参照ください。

 
トーナメント        
〇  〇 
       

以下は、「脆弱性の特定」の例。4つの選択肢から脆弱性の実装箇所を特定します。

獲得ポイント

  • 不正解の選択肢で解答すると「ライフ」を失います。課題ごとに「ライフ」が3つあります。
  • 3回不正解となると獲得ポイントは 0 ポイントになります。また、該当の課題は不合格となり、次の課題に進みます。
  • 試行回数に応じて、以下のように正解時の獲得ポイントが変動します(デフォルト設定の場合)。
    • 1回目で正解したら獲得ポイント 100%
    • 2回目で正解したら獲得ポイント   60%
    • 3回目で正解したら獲得ポイント   30%
  • ヒントを使用すると、使用回数に応じて獲得ポイントがマイナスになるペナルティが適用されます。

デモサイトで体験

デモサイトでは、「ミッション・ウォークスルー」と呼ばれる問題形式に挑戦できます。ミッション・ウォークスルーでは、実際に脆弱性が実装されたアプリケーションに対して攻撃をしながらセキュアコーディングを学習することができます。

  動画 ガイドライン コーディングラボ ミッション・ウォークスルー 課題
デモサイト       〇 
 

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。