Claude Code Plugins

Community-maintained marketplace

Feedback

security-audit

@ntaksh42/agents
0
0

Perform security audits detecting OWASP Top 10 vulnerabilities, insecure dependencies, and security misconfigurations. Use when auditing applications for security vulnerabilities.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name security-audit
description Perform security audits detecting OWASP Top 10 vulnerabilities, insecure dependencies, and security misconfigurations. Use when auditing applications for security vulnerabilities.

Security Audit Skill

セキュリティ脆弱性を包括的に検出するスキルです。

概要

OWASP Top 10、CVE、セキュリティベストプラクティスに基づいて、コードとシステム設定のセキュリティ監査を実施します。

主な機能

  • OWASP Top 10 チェック: SQLインジェクション、XSS、CSRF、認証欠陥等
  • 依存関係の脆弱性: 既知のCVEを持つライブラリの検出
  • 機密情報漏洩: ハードコードされたAPI キー、パスワード、トークン
  • 暗号化評価: 弱い暗号、不適切なハッシュアルゴリズム
  • 認証・認可: JWT、OAuth、セッション管理の問題
  • セキュアコーディング: インプットバリデーション、出力エスケープ
  • HTTPS/TLS設定: 証明書、暗号スイート、プロトコルバージョン
  • CORS/CSP設定: セキュリティヘッダーの適切性
  • ファイルアップロード: 拡張子、MIME タイプ検証
  • レート制限: DDoS、ブルートフォース対策

使用方法

基本的なセキュリティ監査

このコードのセキュリティ監査を実施:
[コード]

重点項目:
- SQLインジェクション
- XSS
- 認証・認可

OWASP Top 10 スキャン

OWASP Top 10 の観点で以下を監査:
[プロジェクトディレクトリ]

出力: 重大度別レポート

依存関係監査

package.json / requirements.txt の脆弱性チェック:
既知のCVEを検出
推奨アップデート提案

チェック項目

1. インジェクション攻撃

SQLインジェクション:

# ❌ 脆弱
query = f"SELECT * FROM users WHERE id = {user_id}"

# ✅ 安全
query = "SELECT * FROM users WHERE id = ?"
cursor.execute(query, (user_id,))

コマンドインジェクション:

// ❌ 脆弱
exec(`ping ${userInput}`);

// ✅ 安全
execFile('ping', [userInput]);

NoSQL インジェクション:

// ❌ 脆弱
db.users.find({ username: req.body.username });

// ✅ 安全
db.users.find({ username: { $eq: req.body.username } });

2. XSS (Cross-Site Scripting)

// ❌ 脆弱
element.innerHTML = userInput;

// ✅ 安全
element.textContent = userInput;
// または
element.innerHTML = DOMPurify.sanitize(userInput);

3. 認証・セッション管理

# ❌ 弱いパスワードハッシュ
password_hash = md5(password)

# ✅ 強力なハッシュ
password_hash = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))

# ❌ 予測可能なセッションID
session_id = str(user_id) + str(time.time())

# ✅ 暗号学的に安全
session_id = secrets.token_urlsafe(32)

4. 機密情報の露出

// ❌ ハードコード
const API_KEY = "sk_live_abc123xyz";

// ✅ 環境変数
const API_KEY = process.env.API_KEY;

// ❌ ログに機密情報
console.log("User password:", password);

// ✅ 機密情報を除外
console.log("User authenticated:", userId);

5. アクセス制御

// ❌ 不十分な認可チェック
app.delete('/api/users/:id', (req, res) => {
  User.delete(req.params.id);
});

// ✅ 適切な権限確認
app.delete('/api/users/:id', requireAuth, (req, res) => {
  if (req.user.id !== req.params.id && !req.user.isAdmin) {
    return res.status(403).json({ error: 'Forbidden' });
  }
  User.delete(req.params.id);
});

6. セキュリティ設定ミス

// ❌ 不適切なCORS
app.use(cors({ origin: '*' }));

// ✅ 適切なCORS
app.use(cors({
  origin: ['https://example.com'],
  credentials: true
}));

// ❌ 弱いCSP
helmet.contentSecurityPolicy({
  directives: { defaultSrc: ["'unsafe-inline'", "'unsafe-eval'"] }
});

// ✅ 強力なCSP
helmet.contentSecurityPolicy({
  directives: {
    defaultSrc: ["'self'"],
    scriptSrc: ["'self'"],
    styleSrc: ["'self'", "'unsafe-inline'"],
  }
});

出力例

# セキュリティ監査レポート

## サマリー
- **Critical**: 2件
- **High**: 5件
- **Medium**: 8件
- **Low**: 3件

## Critical 問題

### [CRITICAL] SQLインジェクション脆弱性
**ファイル**: api/users.py:45
**問題**: ユーザー入力を直接SQL クエリに埋め込んでいます
**影響**: データベース全体への不正アクセス、データ漏洩
**CVE参照**: CWE-89

**脆弱なコード**:
```python
query = f"SELECT * FROM users WHERE username = '{username}'"

修正案:

query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))

優先度: 即時修正必須

[CRITICAL] ハードコードされたAPI キー

ファイル: config/api.js:12 問題: Stripe APIキーがコードに直接書かれています 影響: APIキーの漏洩、不正課金の可能性

現在:

const stripeKey = "sk_live_abc123xyz";

推奨:

const stripeKey = process.env.STRIPE_SECRET_KEY;

High 問題

[HIGH] 弱いパスワードハッシュ (MD5)

ファイル: auth/password.py:23 問題: MD5でパスワードをハッシュ化 影響: レインボーテーブル攻撃に脆弱

推奨: bcrypt または Argon2 使用

[HIGH] XSS脆弱性

ファイル: views/profile.html:67 問題: ユーザー入力をエスケープせずに表示 影響: クロスサイトスクリプティング攻撃

依存関係の脆弱性

パッケージ バージョン CVE 重大度 推奨
lodash 4.17.15 CVE-2020-8203 High 4.17.21+
axios 0.18.0 CVE-2020-28168 Medium 0.21.1+

推奨アクション

即時対応 (Critical/High):

  1. SQLインジェクションの修正
  2. ハードコードされたキーの削除
  3. パスワードハッシュアルゴリズムの変更
  4. XSS対策の実装
  5. 依存関係の更新

短期対応 (Medium):

  1. CORS設定の厳格化
  2. CSP ヘッダーの追加
  3. レート制限の実装

セキュリティチェックリスト

  • すべてのユーザー入力を検証・サニタイズ
  • パラメータ化クエリを使用
  • 強力な暗号化アルゴリズム使用
  • 環境変数で機密情報管理
  • HTTPS強制
  • セキュリティヘッダー設定
  • 依存関係を最新に保つ
  • エラーメッセージで情報を漏らさない

## ベストプラクティス

1. **多層防御**: 複数のセキュリティレイヤーを実装
2. **最小権限の原則**: 必要最小限の権限のみ付与
3. **セキュアバイデフォルト**: デフォルト設定を安全に
4. **定期的な監査**: 継続的なセキュリティチェック
5. **依存関係管理**: 定期的なアップデートとスキャン

## バージョン情報

- スキルバージョン: 1.0.0
- 最終更新: 2025-01-22