SecurePatch Quest

https://github.com/itukis/security-game

Next.js

TypeScript

Docker

Node.js

MySQL

サイバーセキュリティ初学者向けの実践型学習ゲームです。

玉川和樹

和田侑也

西田鼓動

福場滉太郎

推しアイデア

攻撃→原因確認→修正→再攻撃→防御確認までを一連の流れで体験できる点です。脆弱性を知るだけでなく、実際に見つけて直せる力をゲーム感覚で身につけられます。

作った背景

私たちはサイバーセキュリティを専攻しています。AI活用が進む中、コードを安全に修正する力の重要性が高まっていますが、初学者向けの実践教材は不足しています。その課題解決を目指しました。

推し技術

Docker上で動く脆弱アプリに対し、自動攻撃と自動検証を実装。修正前は攻撃成功、修正後は攻撃失敗を機械的に判定し、実践的なセキュリティ学習環境を実現しました。

プロジェクト詳細

SecurePatch Quest

概要

SecurePatch Questは、Webアプリの脆弱性を実際に体験しながら学べるゲーム型セキュリティ学習サービスです。

私たちは大学でサイバーセキュリティを専攻する中で、脆弱性の仕組みを説明する教材は多い一方で、「攻撃される理由を理解し、自分で修正して防御する」までを体験できる初学者向けコンテンツが不足していると感じました。

そこで本プロジェクトでは、攻撃から修正、防御確認までを一つの流れとして学べる実践型教材の開発を目指しました。

学習フロー

image

SecurePatch Questでは、まず脆弱なアプリに対して攻撃を実行し、脆弱性が実際に悪用される様子を確認します。その後、原因となるコードを分析して修正し、同じ攻撃を再実行することで、本当に防御できたかを検証します。

一般的な教材が「脆弱性を知ること」に重点を置いているのに対し、本サービスは「脆弱性を見つけて修正し、防御できるようになること」を目的としています。


問題を選択して学習開始

学習者はSQLインジェクション、XSS、認証・認可の不備など、実際のWebアプリで発生する脆弱性を題材にした問題へ挑戦できます。

image 各問題には学習内容や難易度が設定されており、段階的にセキュアコーディングを学べる構成になっています。


攻撃を実行して脆弱性を確認

まずは脆弱な状態のアプリに対して自動攻撃を実行します。

学習者は実際に攻撃が成功する様子を確認しながら、どのような入力によって脆弱性が悪用されるのかを体験できます。

image

従来の座学教材とは異なり、「攻撃が成立すると何が起きるのか」を視覚的に理解できることが特徴です。


コードを修正し、防御を検証

攻撃結果を確認した後は、原因となるコードを読み取り、脆弱性を修正します。

修正後は同じ攻撃を自動で再実行し、本当に防御できたかを判定します。

image 攻撃成功から修正、防御確認までを一連の流れとして体験できるため、単なる知識ではなく実践的な問題解決能力を身につけることができます。


実装成果

基本・応用問題を含め、合計12問の学習コンテンツを実装しています。

今回の検証では、対象となる全問題において

  • 修正前:攻撃成功
  • 修正後:攻撃失敗
  • クリア判定

を確認しており、攻撃から修正までの学習サイクルが正常に動作することを確認しました。


CSV(Creating Shared Value)

社会的価値

AIによるコード生成が普及する中、安全性を確認し、脆弱性を修正できる人材の重要性が高まっています。

SecurePatch Questは、初学者が実践的なセキュリティ知識を身につける機会を提供し、安全なシステム開発に貢献します。

経済的価値

企業では生成AIを活用した開発が進む一方で、生成コードのレビューやセキュリティ教育が課題となっています。

本サービスは企業研修や大学・専門学校向け教材として展開でき、実践的なセキュアコーディング教育の効率化と人材育成コストの削減に貢献します。

「AIでコードを書く力」だけでなく、「AIが作ったコードを安全に直す力」を育てる新しい教育コンテンツを目指します。


挑戦・成長したところ

本プロジェクトでは、単に脆弱なアプリを作るだけでなく、「修正前は攻撃成功、修正後は攻撃失敗」を自動で判定できる学習環境の構築に挑戦しました。

特に難しかった点は、脆弱性ごとに攻撃方法や成功条件が異なることです。SQLインジェクション、XSS、認証・認可の不備など、それぞれに対して適切な攻撃シナリオと判定ロジックを実装する必要がありました。

また、ユーザーが行った修正が本当に有効かを検証するため、攻撃スクリプトの自動実行や検証フローの設計にも取り組みました。

この開発を通じて、脆弱性の知識だけでなく、実際の攻撃手法や防御方法、セキュリティ検証の考え方について理解を深めることができました。


チームワーク・チーム開発で工夫したところ

本プロジェクトは4人チームで開発を行い、

  • フロントエンド・サーバー担当
  • バックエンド担当
  • バックエンド担当
  • プロジェクトマネジメント・アーキテクチャ担当

に役割を分担して進めました。

一方で、担当領域を完全に分離するのではなく、定期的な進捗共有や相互レビューを実施しました。特にセキュリティ学習サービスでは、「作る側」と「解く側」の視点が重要になるため、実装した問題を他のメンバーが実際にプレイし、難易度や説明の分かりやすさを確認しました。

また、開発初期の段階で学習フローやUI構成を共有し、攻撃→原因確認→修正→再テストという体験をチーム全体で統一して設計しました。

その結果、各メンバーが専門性を活かしながら開発を進めつつ、一貫した学習体験を提供できるサービスとして完成させることができました

玉川和樹

@52ec46aef6af738f