security-audit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Security Audit Skill

Security Audit Skill

セキュリティ脆弱性を包括的に検出するスキルです。
这是一项全面检测安全漏洞的技能。

概要

概要

OWASP Top 10、CVE、セキュリティベストプラクティスに基づいて、コードとシステム設定のセキュリティ監査を実施します。
基于OWASP Top 10、CVE以及安全最佳实践,对代码和系统配置执行安全审计。

主な機能

主要功能

  • OWASP Top 10 チェック: SQLインジェクション、XSS、CSRF、認証欠陥等
  • 依存関係の脆弱性: 既知のCVEを持つライブラリの検出
  • 機密情報漏洩: ハードコードされたAPI キー、パスワード、トークン
  • 暗号化評価: 弱い暗号、不適切なハッシュアルゴリズム
  • 認証・認可: JWT、OAuth、セッション管理の問題
  • セキュアコーディング: インプットバリデーション、出力エスケープ
  • HTTPS/TLS設定: 証明書、暗号スイート、プロトコルバージョン
  • CORS/CSP設定: セキュリティヘッダーの適切性
  • ファイルアップロード: 拡張子、MIME タイプ検証
  • レート制限: DDoS、ブルートフォース対策
  • OWASP Top 10 检查: SQL注入、XSS、CSRF、认证缺陷等
  • 依赖项漏洞检测: 检测存在已知CVE的库
  • 敏感信息泄露: 硬编码的API密钥、密码、令牌
  • 加密评估: 弱加密、不恰当的哈希算法
  • 认证与授权: JWT、OAuth、会话管理问题
  • 安全编码: 输入验证、输出转义
  • HTTPS/TLS配置: 证书、加密套件、协议版本
  • CORS/CSP配置: 安全标头的合理性
  • 文件上传: 扩展名、MIME类型验证
  • 速率限制: DDoS、暴力破解防护

使用方法

使用方法

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

基础安全审计

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

重点項目:
- SQLインジェクション
- XSS
- 認証・認可
对这段代码执行安全审计:
[代码]

重点检查项:
- SQL注入
- XSS
- 认证与授权

OWASP Top 10 スキャン

OWASP Top 10 扫描

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

出力: 重大度別レポート
从OWASP Top 10的角度审计以下内容:
[项目目录]

输出: 按严重程度分类的报告

依存関係監査

依赖项审计

package.json / requirements.txt の脆弱性チェック:
既知のCVEを検出
推奨アップデート提案
检查package.json / requirements.txt的漏洞:
检测已知CVE
推荐更新方案

チェック項目

检查项目

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

1. 注入攻击

SQLインジェクション:
python
undefined
SQL注入:
python
undefined

❌ 脆弱

❌ 存在漏洞

query = f"SELECT * FROM users WHERE id = {user_id}"
query = f"SELECT * FROM users WHERE id = {user_id}"

✅ 安全

✅ 安全写法

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

**コマンドインジェクション**:
```javascript
// ❌ 脆弱
exec(`ping ${userInput}`);

// ✅ 安全
execFile('ping', [userInput]);
NoSQL インジェクション:
javascript
// ❌ 脆弱
db.users.find({ username: req.body.username });

// ✅ 安全
db.users.find({ username: { $eq: req.body.username } });
query = "SELECT * FROM users WHERE id = ?" cursor.execute(query, (user_id,))

**命令注入**:
```javascript
// ❌ 存在漏洞
exec(`ping ${userInput}`);

// ✅ 安全写法
execFile('ping', [userInput]);
NoSQL注入:
javascript
// ❌ 存在漏洞
db.users.find({ username: req.body.username });

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

2. XSS (Cross-Site Scripting)

2. XSS(跨站脚本攻击)

javascript
// ❌ 脆弱
element.innerHTML = userInput;

// ✅ 安全
element.textContent = userInput;
// または
element.innerHTML = DOMPurify.sanitize(userInput);
javascript
// ❌ 存在漏洞
element.innerHTML = userInput;

// ✅ 安全写法
element.textContent = userInput;
// 或者
element.innerHTML = DOMPurify.sanitize(userInput);

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

3. 认证与会话管理

python
undefined
python
undefined

❌ 弱いパスワードハッシュ

❌ 弱密码哈希

password_hash = md5(password)
password_hash = md5(password)

✅ 強力なハッシュ

✅ 强哈希算法

password_hash = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
password_hash = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))

❌ 予測可能なセッションID

❌ 可预测的会话ID

session_id = str(user_id) + str(time.time())
session_id = str(user_id) + str(time.time())

✅ 暗号学的に安全

✅ 符合加密安全标准

session_id = secrets.token_urlsafe(32)
undefined
session_id = secrets.token_urlsafe(32)
undefined

4. 機密情報の露出

4. 敏感信息泄露

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

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

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

// ✅ 機密情報を除外
console.log("User authenticated:", userId);
javascript
// ❌ 硬编码
const API_KEY = "sk_live_abc123xyz";

// ✅ 使用环境变量
const API_KEY = process.env.API_KEY;

// ❌ 日志中包含敏感信息
console.log("User password:", password);

// ✅ 排除敏感信息
console.log("User authenticated:", userId);

5. アクセス制御

5. 访问控制

javascript
// ❌ 不十分な認可チェック
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);
});
javascript
// ❌ 授权检查不充分
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. セキュリティ設定ミス

6. 安全配置错误

javascript
// ❌ 不適切な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'"],
  }
});
javascript
// ❌ 不恰当的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'"],
  }
});

出力例

输出示例

markdown
undefined
markdown
undefined

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

安全审计报告

サマリー

摘要

  • Critical: 2件
  • High: 5件
  • Medium: 8件
  • Low: 3件
  • Critical: 2项
  • High: 5件
  • Medium: 8件
  • Low: 3件

Critical 問題

Critical 问题

[CRITICAL] SQLインジェクション脆弱性

[CRITICAL] SQL注入漏洞

ファイル: api/users.py:45 問題: ユーザー入力を直接SQL クエリに埋め込んでいます 影響: データベース全体への不正アクセス、データ漏洩 CVE参照: CWE-89
脆弱なコード:
python
query = f"SELECT * FROM users WHERE username = '{username}'"
修正案:
python
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))
優先度: 即時修正必須
文件: api/users.py:45 问题: 将用户输入直接嵌入SQL查询 影响: 非法访问整个数据库、数据泄露 CVE参考: CWE-89
存在漏洞的代码:
python
query = f"SELECT * FROM users WHERE username = '{username}'"
修复方案:
python
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))
优先级: 必须立即修复

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

[CRITICAL] 硬编码的API密钥

ファイル: config/api.js:12 問題: Stripe APIキーがコードに直接書かれています 影響: APIキーの漏洩、不正課金の可能性
現在:
javascript
const stripeKey = "sk_live_abc123xyz";
推奨:
javascript
const stripeKey = process.env.STRIPE_SECRET_KEY;
文件: config/api.js:12 问题: Stripe API密钥直接写入代码中 影响: API密钥泄露、可能被非法扣费
当前写法:
javascript
const stripeKey = "sk_live_abc123xyz";
推荐写法:
javascript
const stripeKey = process.env.STRIPE_SECRET_KEY;

High 問題

High 问题

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

[HIGH] 弱密码哈希(MD5)

ファイル: auth/password.py:23 問題: MD5でパスワードをハッシュ化 影響: レインボーテーブル攻撃に脆弱
推奨: bcrypt または Argon2 使用
文件: auth/password.py:23 问题: 使用MD5对密码进行哈希 影响: 易受彩虹表攻击
推荐: 使用bcrypt 或 Argon2

[HIGH] XSS脆弱性

[HIGH] XSS漏洞

ファイル: views/profile.html:67 問題: ユーザー入力をエスケープせずに表示 影響: クロスサイトスクリプティング攻撃
文件: views/profile.html:67 问题: 未转义用户输入直接显示 影响: 跨站脚本攻击

依存関係の脆弱性

依赖项漏洞

パッケージバージョンCVE重大度推奨
lodash4.17.15CVE-2020-8203High4.17.21+
axios0.18.0CVE-2020-28168Medium0.21.1+
包名版本CVE严重程度推荐版本
lodash4.17.15CVE-2020-8203High4.17.21+
axios0.18.0CVE-2020-28168Medium0.21.1+

推奨アクション

推荐措施

即時対応 (Critical/High):

立即处理(Critical/High):

  1. SQLインジェクションの修正
  2. ハードコードされたキーの削除
  3. パスワードハッシュアルゴリズムの変更
  4. XSS対策の実装
  5. 依存関係の更新
  1. 修复SQL注入问题
  2. 删除硬编码的密钥
  3. 更换密码哈希算法
  4. 实施XSS防护
  5. 更新依赖项

短期対応 (Medium):

短期处理(Medium):

  1. CORS設定の厳格化
  2. CSP ヘッダーの追加
  3. レート制限の実装
  1. 严格CORS配置
  2. 添加CSP标头
  3. 实现速率限制

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

安全检查清单

  • すべてのユーザー入力を検証・サニタイズ
  • パラメータ化クエリを使用
  • 強力な暗号化アルゴリズム使用
  • 環境変数で機密情報管理
  • HTTPS強制
  • セキュリティヘッダー設定
  • 依存関係を最新に保つ
  • エラーメッセージで情報を漏らさない
undefined
  • 验证并净化所有用户输入
  • 使用参数化查询
  • 使用强加密算法
  • 通过环境变量管理敏感信息
  • 强制使用HTTPS
  • 配置安全标头
  • 保持依赖项为最新版本
  • 错误消息不泄露敏感信息
undefined

ベストプラクティス

最佳实践

  1. 多層防御: 複数のセキュリティレイヤーを実装
  2. 最小権限の原則: 必要最小限の権限のみ付与
  3. セキュアバイデフォルト: デフォルト設定を安全に
  4. 定期的な監査: 継続的なセキュリティチェック
  5. 依存関係管理: 定期的なアップデートとスキャン
  1. 多层防御: 实现多个安全层级
  2. 最小权限原则: 仅授予必要的最小权限
  3. 默认安全: 默认配置设为安全状态
  4. 定期审计: 持续进行安全检查
  5. 依赖项管理: 定期更新和扫描

バージョン情報

版本信息

  • スキルバージョン: 1.0.0
  • 最終更新: 2025-01-22
  • 技能版本: 1.0.0
  • 最后更新: 2025-01-22