mcpField
O
owasp-top-10

owasp-top-10

github.com/claude-dev-suiteセキュリティ46311 回インストール3 日前に更新
リポジトリ

owasp-top-10 について

アプリケーションのセキュリティを確認する開発者向けに、OWASP Top 10:2025 のリスクと予防策をまとめたスキルです。10 分野の早見表、例、スキャンコマンド、トラブルシューティングを収録しています。

主な機能

  1. 012025 年版の 10 分野を網羅
  2. 02予防策とコード例を掲載
  3. 03セキュリティスキャンコマンドを紹介
  4. 04リスク対策チェックリストを収録
  5. 05トラブルシューティングとアンチパターンを説明

活用シーン

  1. 01アプリケーションのセキュリティリスク確認
  2. 02アクセス制御と認証の実践状況の確認
  3. 03依存関係とインジェクション対策の監査
  4. 04一般的なセキュリティ問題の修正策の調査

MCP 対応

包括的なドキュメント取得に `mcp__documentation__fetch_docs` を `owasp` の技術指定で使う方法が記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill owasp-top-10

インストール後、Claude Code で/owasp-top-10を入力して読み込まれたか確認します。

詳細

OWASP Top 10:2025

このスキルを使用しない場合

  • OWASP Top 10:2021 - 2021 年版には owasp スキルを使用してください
  • 詳細なシークレット管理 - secrets-management スキルを使用してください
  • 詳細なサプライチェーンセキュリティ - 依存関係管理の詳細については supply-chain スキルを使用してください
  • ライセンスコンプライアンス - license-compliance スキルを使用してください

深い知識:包括的なドキュメントについては、テクノロジーに owasp を指定して mcp__documentation__fetch_docs を使用してください。

クイックリファレンス

順位カテゴリー防止策
A01アクセス制御の不備認可チェック、デフォルトで拒否
A02セキュリティ設定ミス強化、セキュリティヘッダー、デフォルト設定を使用しない
A03サプライチェーンの障害依存関係の監査、ロックファイル、SBOM
A04暗号化の不備強力なアルゴリズム、適切な鍵管理
A05インジェクションパラメーター化クエリ、入力検証
A06安全でない設計脅威モデリング、安全なパターン
A07認証の不備MFA、レート制限、安全なセッション
A08完全性の不備署名付き更新、安全なデシリアライズ
A09ログ記録の不備監査ログ、アラート、監視
A10例外処理適切なエラー処理、情報漏えいの防止

A01: アクセス制御の不備

// Always verify ownership
if (resource.userId !== currentUser.id) {
  throw new ForbiddenException();
}

// Deny by default
const allowed = permissions.includes(requiredPermission);
if (!allowed) throw new ForbiddenException();

// Rate limit sensitive endpoints
app.use('/api/admin/*', adminRateLimiter);

A02: セキュリティ設定ミス

// Security headers
import helmet from 'helmet';
app.use(helmet());

// Strict CORS
app.use(cors({
  origin: ['https://myapp.com'],
  credentials: true
}));

// Hide errors in production
if (process.env.NODE_ENV === 'production') {
  app.use((err, req, res, next) => {
    res.status(500).json({ error: 'Internal error' });
  });
}

A03: サプライチェーンの障害(2025 年の新項目)

# Audit dependencies
npm audit
pip-audit
mvn dependency-check:check

# Use lockfiles
npm ci  # Instead of npm install

# Verify package integrity
npm install --ignore-scripts
npm config set ignore-scripts true

A04: 暗号化の不備

// Strong password hashing
import { hash, verify } from 'argon2';
const hashed = await hash(password, { type: argon2id });

// Secure random
import { randomBytes, randomUUID } from 'crypto';
const token = randomBytes(32).toString('hex');

// AES-256-GCM for encryption (not CBC)

A05: インジェクション

// SQL - use parameterized queries
const user = await prisma.user.findUnique({ where: { id } });
await db.query('SELECT * FROM users WHERE id = $1', [id]);

// Command - use execFile, not exec
import { execFile } from 'child_process';
execFile('ls', ['-la', safeArg]);

// XSS - sanitize HTML
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);

A06: 安全でない設計

主な実践事項:

  • 設計段階での脅威モデリング
  • 安全な設計パターン(フェイルセーフ、多層防御)
  • ユーザーストーリーにおけるセキュリティ要件
  • 悪用ケースのテスト

A07: 認証の不備

// Rate limiting
import rateLimit from 'express-rate-limit';
const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 5
});

// Secure cookies
res.cookie('session', token, {
  httpOnly: true,
  secure: true,
  sameSite: 'strict'
});

// Strong passwords (12+ chars, mixed)

A08: 完全性の不備

// Verify signatures on updates
// Use subresource integrity (SRI)
<script src="lib.js"
  integrity="sha384-..."
  crossorigin="anonymous">
</script>

// Safe deserialization
// Avoid: JSON.parse(untrusted)
// Use: zod/yup validation

A09: ログ記録とアラートの不備

// Log security events
logger.warn({
  event: 'auth_failure',
  userId: attemptedId,
  ip: req.ip,
  timestamp: new Date().toISOString()
});

// Events to log:
// - Login success/failure
// - Password changes
// - Permission denied
// - Rate limit exceeded

A10: 例外処理(2025 年の新項目)

// Graceful error handling
try {
  await riskyOperation();
} catch (error) {
  logger.error({ error, context });
  // Generic response to user
  throw new InternalServerException('Operation failed');
}

// Never expose stack traces
// Never expose internal paths
// Never expose SQL/DB errors

セキュリティスキャンコマンド

# Dependencies
npm audit --json
snyk test

# Secrets
gitleaks detect
trufflehog git file://.

# SAST
semgrep --config=p/security-audit .

# Docker
trivy image myimage:latest

チェックリスト

リスク防止策
SQL インジェクションパラメーター化クエリ、ORM
XSS出力のエスケープ、CSP ヘッダー
CSRFCSRF トークン、SameSite Cookie
認証の問題MFA、レート制限、安全なセッション
シークレット環境変数、ボールト
サプライチェーン監査、ロックファイル、SBOM

アンチパターン

アンチパターン問題点正しい方法
フロントエンドだけで権限を確認するクライアント側で回避される(A01)必ずバックエンドで検証する
弱い暗号(MD5、DES)を使用する簡単に破られる(A04)AES-256-GCM、argon2、SHA-256 以上を使用する
CI/CD で npm install を実行するビルドが再現可能でない(A03)ロックファイルとともに npm ci を使用する
すべての例外を黙って捕捉するセキュリティ上の問題が隠れる(A10)エラーをログに記録し、適切に処理する
クエリ内のユーザー入力を信頼するインジェクション攻撃(A05)必ずパラメーター化クエリを使用する
セッションタイムアウトがないセッションハイジャック(A07)アイドル時と絶対時間のタイムアウトを実装する

トラブルシューティングのクイックガイド

問題考えられる原因解決策
npm audit で脆弱性が表示される依存関係が古い(A03)npm audit fix を実行するか、手動で更新する
5 回試行すると必ずログインに失敗するレートリミッターの制限が厳しすぎる(A07)レート制限の設定を見直す
Git の履歴にシークレットが漏えいした.env ファイルをコミットした(A02)BFG で履歴を整理し、シークレットをローテーションする
データベースのクエリが遅い/失敗するSQL インジェクション攻撃(A05)ログを確認し、パラメーター化クエリに切り替える
ユーザーが他のユーザーのデータにアクセスしている認可が不足している(A01)すべてのエンドポイントに所有者チェックを追加する
本番環境でスタックトレースが表示される例外処理が無効になっている(A10)本番環境向けのエラー処理を有効にする

関連スキル

コメント