実践的なセキュアコーディング
OWASP Top 10のようなソフトウェアの脆弱性を理解し軽減するためのセキュアコーディングガイドラインを確認しましょう。また、実践的なアプリシミュレーションを通じて学べるトレーニングミッションにもぜひ挑戦してください。
すべてのミッションを見る
目次

SQLインジェクション
インターネットバンキングソリューションの取引検索機能において、SQLインジェクションの脆弱性を悪用できるとの報告がユーザーから寄せられました。報告によると、他ユーザーの取引履歴が閲覧可能であり、この脆弱性を突くことでデータベースのテーブル削除や他テーブルのデータ閲覧、データの挿入といった悪意ある操作が可能になる恐れがあるとのことです。このミッションでは、報告された内容を実際に再現してみてください。

Spring MvcRequestMatchers
2023年3月、Springは内部で発見された脆弱性「CVE-2023-20860」に対する修正をリリースしました。これは、mvcRequestMatchersで二重ワイルドカード「**」を使用すると、Spring SecurityとSpring MVCの間でパターン不一致が発生し、最終的にユーザーが特定のエンドポイントへ不正アクセスできてしまう可能性があるというものです。ここでは、いくつかのエンドポイントを持つ非常にシンプルな銀行アプリケーションを用意しました。手順に従って、このアクセス制御の脆弱性の影響を再現してみてください。

サイキック・シグネチャー - 既知の脆弱性のあるコンポーネントの使用
CVE-2022-21449は、脆弱性の別名としては最高にクールな「Javaのサイキック・シグネチャー」と呼ばれています。なぜこのような名前がついたのでしょうか。これは『ドクター・フー』に登場する「サイキック・ペーパー」に由来します。この真っ白な紙は、相手に見せると相手が期待する内容がそこに浮かび上がるというものです。Java(バージョン15から18)のECDSAアルゴリズムの実装でも同様の現象が起こり、JWTの署名検証に影響を及ぼしました。無効な署名を送信しても、Javaがそれを有効だと誤認してしまうのです。仕組みが気になりますか?それでは見ていきましょう。

Apacheのパス・トラバーサル - 既知の脆弱性のあるコンポーネントの使用
2021年10月4日、ApacheチームはApache 2.4.48におけるパス・トラバーサルおよびリモートコード実行の脆弱性(CVE-2021-41773)に対処するため、バージョン2.4.49をリリースしました。その後、2.4.50の修正が不完全であったため、2021年10月7日にバージョン2.4.51がリリースされました。この脆弱性はCVE-2021-42013として追跡されています。このミッションを通じて、この脆弱性がどのように悪用されるのかを実際に体験してみましょう。

Log4j - 既知の脆弱性コンポーネントの使用
2021年12月初旬、非常に広く利用されているログライブラリ「Log4j」にゼロデイ脆弱性(CVE-2021-44228)が発見され、Javaコミュニティに大きな衝撃が走りました。「Log4Shell」と名付けられたこの脆弱性は、Log4j v2のバージョン2.0-beta9から2.14.1に影響を及ぼし、リモートコード実行につながる恐れがあります。この脆弱性を再現する環境を用意しましたので、その影響を直接体験してみてください。今すぐ試す。

トロイの木馬ソース - 信頼できないソースからのコンポーネントの使用
Viking Bankの開発者が、クレジットカード管理用の管理者権限チェック機能を実装する際、インターネット上の信頼できないソースからコードを安易にコピーしてしまいました。そのコードには脆弱なコンポーネントが含まれている可能性があります。本来は管理者のみが変更できるはずのクレジットカードの利用限度額を、一般ユーザーが変更できてしまう事象が確認されました。このコードに問題があると考えられます。ミッションに挑戦して、コードを調査してください。

CodeStashBin - 安全でないパスワードリセット機能
CodeStashBinは、世界最大級のコードバージョン管理ホスティング企業です。パスワードの再設定プロセスに欠陥があり、安全でないパスワードリセット機能の脆弱性が存在するという噂があります。特権ユーザーのパスワードを変更し、アカウントに不正アクセスできる可能性があります。このミッションに参加して、問題を調査しましょう。

「ChatterGPT」におけるクロスサイトスクリプティング(XSS)
このミッションでは、広く利用されているLLMの馴染み深いインターフェースを再現し、2023年11月下旬に生成された実際のコードスニペットを使用します。ユーザーはこのスニペットを読み解き、本来の目的で使用された場合に潜むセキュリティ上のリスクを調査します。