セキュリティ・キャンプ全国大会2023 開発コース Z8【ブロックチェーンゲームを作って学ぶWebセキュリティゼミ】応募課題 大きく分けて2問あります。両者とも必須とします。マークダウン形式で記述しているので、対応しているエディタで開くと見やすくなるかもしれません。 解答の正確性も必要ですが、参考書からの転記だけではなく、あなたが興味をもっているところを掘り下げてもらえると評価しやすくなります。 # [課題1]脆弱性のあるコード オープンソースのWebアプリケーションや、過去で使用したコードなどをもとに、「脆弱性を再現するコード」と、その「脆弱性を修正するコード」を書いてください。 * XSS(クロスサイトスクリプティング) * SQLインジェクションなどのインジェクション攻撃 * CSRF(クロスサイトリクエストフォージェリー) 解答は以下の項目を満たすようにしてください。もし、説明するうえで他の項目も必要であれば増やしても大丈夫です。 * 脆弱性のある部分(ソースコードの部分、また当該部分がソフトウェアに対しどのような機能をもつのか) * なぜ脆弱性があると判断したのか、またその影響度 * 脆弱性を再現する PoC コード * 脆弱性の対策方法(一般論ではなく、そのソフトウェアに特化するものであると望ましい) 特に対象のコードとして思いつかない場合は OWASP Juice Shop ( [https://github.com/juice-shop/juice-shop](https://github.com/juice-shop/juice-shop) )などを参考にしてください。※ OWASP Juice Shop を使用したことによる加点・減点はありません。 # セキュリティ施策の提案 以下、ゲームプロデューサーとゲームエンジニアの会話を参考にし、課題に回答してください。 ## プロフィール あなた: 外部のセキュリティ技術者およびプロジェクトマネージャを兼任する。今回新しいゲームを開発するにあたり、セキュリティを万全にしたいためキックオフミーティングに呼ばれた。 ゲームプロデューサー(P): プロジェクト全体の管理と方向性を担当し、プロジェクトのマネジメントを行います。具体的には、リソースやスケジュールを管理し、関係者と連携して品質を確保します。 ゲームエンジニア(E): ゲームの技術面を担当し、専門的な技術を使用してアプリケーションを開発します。機能やシステムの実装・最適化を行い、セキュリティ対策も含めた開発プロセスも望まれます。 ※ その他、細かい設定は自由に付き足して構いません。但し、現実的な仮定から大きく離れないでください。(良い例 : プロジェクトの参加人数や予算規模など / 悪い例 : エンジニアは魔法が使えるとする) ## 会話 P: 今回の新しいブロックチェーンゲームの開発が進んでいるみたいだね。ユーザーが安心してプレイできるように、セキュリティ対策は万全にしよう。 E: そうですね。まず、ユーザーアカウントのセキュリティを強化するために、パスワードの強度チェックや二要素認証を導入しましょう。 P: 良いアイディアだね。それに加えて、フロントエンドとバックエンドの通信はHTTPSで暗号化しよう。データの漏洩や改ざんを防ぐためにも重要だと思う。 E: その通りです。また、XSSやCSRFといった一般的なWebアプリケーションの脆弱性に対処するために、セキュリティヘッダーやCSP(Content Security Policy)を適用しましょう。 P: うん、それも大事だね。ゲーム内でリアルマネートレーディングが発生しないように、スマートコントラクトの設計も見直しておいてほしい。 E: 了解しました。スマートコントラクトの機能やアクセス制御を適切に設計し、オーバーフロー攻撃を防ぐ対策を行います。 P: そうだ、プライバシーも大切だから、ユーザーの個人情報は適切に保護しよう。GDPRやCCPAに準拠したデータ管理方法を確立しておこう。 E: その点も考慮して、データの暗号化やアクセス制御を適切に行い、プライバシー保護に努めます。 P: 最後に、定期的な脆弱性スキャンやペネトレーションテストを実施して、新たなセキュリティリスクに対処できるようにしよう。外部のセキュリティ専門家にも協力を仰ぐことで、より強固なセキュリティ対策が可能になるはずだ。 E: その方が良いですね。外部の専門家による監査を受けることで、見落としている脆弱性や対策の不備を発見し、修正することができます。また、定期的なレビューとアップデートを行うことで、セキュリティ状況を継続的に改善していけます。 P: もちろん、開発チーム全員がセキュリティ意識を持って作業に取り組むことが大切だね。セキュリティトレーニングを定期的に実施して、チーム全員が最新のセキュリティ知識を持っていることを確認しよう。 E: その通りです。チーム全員がセキュリティに関心を持ち、適切な対策を行うことで、安全性の高いゲームを提供することができます。また、ユーザーからのフィードバックや報告も大切にし、セキュリティに関する問題に迅速に対応できる体制を整えましょう。 P: ありがとう。これからも一緒に、安全で楽しいゲームを作り上げていこう。 ## [課題2]設問 以上の会話からいくつかのセキュリティの課題や潜在的なリスクなどが問題意識としてあがっています。あなたはこの課題のなかから1つ選んで、解決するプロジェクトをゲームプロデューサーに提案してください。全ての問題を解決する必要はありません。 解答は以下の項目を満たすようにしてください。もし、説明するうえで他の項目も必要であれば増やしても大丈夫です。金銭的な見積もりは不要です。 1. 提案名 : 一言で提案内容をあらわしてください 2. 背景 : あなたがセキュリティの課題と感じたも、その理由を教えてください 3. 対策提案 : 実際の提案内容を記載してください 4. 体制とスケジュール : あなたが解決するまでの時間を見積もりしてください。また、あなた一人で解決が難しい場合は、どういう人と連携するかも記載してください。 5. 今後の課題 : このプロジェクトでのリスク、またはこのプロジェクトで解決しないものや、継続的に必要なものがあれば補足してください。