VulnVault は、一般的かつ重大なアプリケーションセキュリティ脆弱性に関する、実践的で開発者ファーストのナレッジベースであり、コードからビルド、インフラストラクチャ、デプロイまでのライフサイクル全体をカバーしています。
明確な説明、現実的な安全でないコードと安全なコードの例、および複数のプログラミング言語とフレームワークにわたる実行可能なガイダンスを提供し、チームがデフォルトで安全なアプリケーションを構築できるように支援します。
🎯 目標: セキュアコーディングを理解しやすく、アクセスしやすく、再現可能にすることで、組織のアプリケーションセキュリティ体制を向上させる。
ほとんどのセキュリティガイダンスは次のいずれかです:
VulnVault は次のことでそのギャップを埋めます:
このリポジトリは次のような人々による使用を想定しています:
VulnVault は、ツールや標準ではなく脆弱性カテゴリ別に整理されています。
各脆弱性には通常、以下が含まれます:
例は、作為的なスニペットではなく、現実的なアプリケーションパターンを用いて書かれています。
現在のカバレッジには以下が含まれます (そして拡大中です):
各例は ❌ 安全でない実装と ✅ 安全な実装を並べて対比しています。
String query = "SELECT * FROM users WHERE username = '" + username + "'";
これが重要な理由: 信頼できない入力がクエリに直接連結されており、攻撃者が SQL ロジックを操作できるようになります。
String query = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
📚 学習とリファレンス 開発中のセキュアコーディングハンドブックとして使用します。
🔍 コードレビュー PR コメントに関連する VulnVault ページを直接リンクします。
🧪 セキュリティテスト SAST、DAST、またはペネトレーションテストの検出結果が悪用可能かどうかを検証します。
🎓 トレーニングとオンボーディング 新入社員やジュニア開発者のスキルアップに例を使用します。
🛡 AppSec プログラムの実現 ガイダンスを内部標準、脅威モデル、リスクアペタイトに合わせます。
コントリビューションは歓迎され、奨励されています。 以下の方法で貢献できます:
コントリビューションの指針:
VulnVault は意図的に以下に焦点を当てています:
これは脆弱性スキャナーではなく、セキュリティを実現するための資産です。
このリポジトリの例は教育目的のみです。 安全でない例を本番システムにデプロイしないでください。
このプロジェクトは MIT ライセンスの下でライセンスされています。 詳細は LICENSE ファイルを参照してください。
現実世界のセキュリティレビュー、ペネトレーションテスト、および本番システムの構築と保護から得られた教訓に触発されています。
🔐 安全なソフトウェアを構築しましょう。設計によって。