跳到主要内容
知仓学习社ZHICANG

security-audit

全面的代码安全检查和服务器安全审计skill。适用于:(1) 代码漏洞扫描 - 检测SQL注入、XSS、SSRF等OWASP Top 10漏洞,(2) 依赖安全检查 - 识别过时或有漏洞的第三方库,结合实时搜索确认最新CVE,(3) 服务器配置审计 - 检查SSH、防火墙、权限等安全配置,(4)…

执行命令读凭据写文件严重 15 · 高危 7staruhub/ClaudeSkills

它会碰到什么

扫了多少8 个文本文件,68 KB
它会碰到什么执行命令读凭据写文件
命中总数46 处
命中统计严重 15 · 高 7 · 中 5 · 低 0
逐条看命中(22 条严重或高危)
  • 严重 references/detection_rules.md:177deserialize-unsafe
    pickle.loads(user_data)
  • 严重 references/detection_rules.md:178yaml-unsafe
    yaml.load(user_data)  # 使用yaml.safe_load代替
  • 严重 references/remediation_guide.md:36cred-paths
    grep -r "API_KEY\|SECRET\|PASSWORD\|TOKEN" .env*
  • 严重 references/remediation_guide.md:53persistence
    crontab -l
  • 严重 references/server_hardening.md:92disable-security
    sudo iptables -F
  • 严重 references/server_hardening.md:144cred-paths
    ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@server
  • 严重 references/server_hardening.md:144cred-paths
    ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@server
  • 严重 references/server_hardening.md:147cred-paths
    chmod 700 ~/.ssh
  • 严重 references/server_hardening.md:148cred-paths
    chmod 600 ~/.ssh/authorized_keys
  • 严重 references/server_hardening.md:148cred-paths
    chmod 600 ~/.ssh/authorized_keys
  • 严重 references/server_hardening.md:148cred-write
    chmod 600 ~/.ssh/authorized_keys
  • 严重 references/server_hardening.md:238persistence
    sudo systemctl enable auditd
  • 严重 scripts/secrets_scan.py:238cred-paths
    '.env', '.properties', '.xml', '.md', '.txt', '.sql'
  • 严重 scripts/secrets_scan.py:379cred-paths
    if filepath.name not in {'.env', '.env.local', '.env.production', 'Dockerfile', 'Makefile'}:
  • 严重 scripts/secrets_scan.py:379cred-paths
    if filepath.name not in {'.env', '.env.local', '.env.production', 'Dockerfile', 'Makefile'}:
  • scripts/dependency_check.py:253exec-spawn
    result = subprocess.run(
  • scripts/dependency_check.py:269exec-spawn
    result = subprocess.run(
  • scripts/dependency_check.py:280exec-spawn
    result = subprocess.run(
  • scripts/full_scan.py:144exec-spawn
    result = subprocess.run(
  • scripts/full_scan.py:186exec-spawn
    result = subprocess.run(
  • scripts/full_scan.py:208exec-spawn
    result = subprocess.run(
  • scripts/full_scan.py:244exec-spawn
    result = subprocess.run(

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Security Audit Skill

全面的安全审计工具,覆盖代码静态分析(SAST)、依赖检查(SCA)和服务器配置审计。

授权与边界(先确认再动手)

  • 只审计用户拥有或明确获得授权的代码/服务器;对第三方系统的扫描请求一律拒绝并说明原因
  • 本skill做审计与建议,不做主动攻击性测试(漏洞利用、爆破、DoS验证)
  • 发现硬编码凭证时只报告位置与类型,不在输出中回显完整明文
  • 除非用户明确要求,不直接修改业务代码;修复以建议形式给出

时效性规则(重要)

本文件不维护具体CVE清单。凡涉及"某版本是否有漏洞"的结论,必须现场查询:

用 web search 查 [框架/库名] CVE advisory [当前年份],或查官方 security advisory 页面。

正文中出现的具体CVE(如 Log4Shell CVE-2021-44228)仅作为漏洞类别的历史案例,不代表当前威胁全貌。

工作流程

安全审计遵循以下步骤:

  1. 环境检测 → 识别项目类型和技术栈
  2. 依赖检查 → 扫描第三方库漏洞(优先级最高)
  3. 静态代码分析 → SAST扫描源代码漏洞
  4. 敏感信息检测 → 扫描硬编码的密钥和凭证
  5. 配置审计 → 检查安全相关配置
  6. 生成报告 → 汇总发现并提供修复建议

快速开始

依赖安装

# 安装核心Python扫描工具(优先用 venv/pipx,避免污染系统 Python)
pipx install bandit semgrep || pip install safety bandit semgrep pip-audit

# 安装Node.js安全工具(如需要)
npm install -g npm-audit-html retire

一键全面扫描

运行综合扫描脚本:

python3 /path/to/skill/scripts/full_scan.py /path/to/project

只需单项检查时用独立脚本:scripts/dependency_check.py(仅依赖漏洞)、scripts/secrets_scan.py(仅敏感信息/密钥,输出已对命中值脱敏)。

注意:dependency_check.py 内置的是离线基线表(会过时),命中结果标注 source: offline-baseline,必须用 pip-audit/npm audit 或官方 advisory 实时确认后才能下结论——与上文"不维护 CVE 清单"原则一致,基线表是预筛工具而非权威来源。

检测能力

1. 高危漏洞(Critical)

| 漏洞类型 | 历史案例 | 检测方式 |

|---------|--------|---------|

| 框架/依赖 RCE | Log4Shell (CVE-2021-44228) | 依赖版本检查 + 现场搜索最新 advisory |

| SQL注入 | CWE-89 | SAST + 模式匹配 |

| 命令注入 | CWE-78 | SAST + 模式匹配 |

框架级 RCE 层出不穷(React/Next.js 等生态近年多次爆出),检查依赖前先 web search 该框架当年的 CVE 列表。

2. OWASP Top 10(以官方当前版本为准)

> 运行时先 web search 确认当前版本(现行为 2025 版);无法联网时使用下面这份记录时点的离线清单,并在报告中标注可能过时。以下条目为通用类别参考:

  • A01: Broken Access Control - 访问控制缺陷
  • A02: Cryptographic Failures - 加密失败
  • A03: Injection - 注入攻击(SQL/XSS/Command)
  • A04: Insecure Design - 不安全设计
  • A05: Security Misconfiguration - 安全配置错误
  • A06: Vulnerable Components - 易受攻击的组件
  • A07: Authentication Failures - 身份认证失败
  • A08: Software Integrity Failures - 软件完整性失败
  • A09: Logging Failures - 日志记录失败
  • A10: SSRF - 服务端请求伪造

扫描工具使用

Python项目

# Bandit - Python SAST
bandit -r ./src -f json -o bandit_report.json

# Safety - 依赖漏洞检查
safety check --json > safety_report.json

# pip-audit - 依赖审计
pip-audit --format json > pip_audit.json

JavaScript/Node.js项目

# npm audit - 依赖漏洞
npm audit --json > npm_audit.json

# Retire.js - 检测过时库
retire --js --outputformat json > retire_report.json

框架专项检查:先 web search 确认该框架当前的高危 CVE 及官方检测工具,再执行(历史案例见 references/remediation_guide.md)。

通用检测

# Semgrep - 多语言SAST
semgrep scan --config=auto --json > semgrep_report.json

# Gitleaks - 密钥泄露检测
gitleaks detect --source . --report-format json --report-path gitleaks.json

# Trivy - 容器/依赖扫描
trivy fs --format json --output trivy.json .

服务器安全检查

SSH配置审计

# 检查SSH配置
grep -E "^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)" /etc/ssh/sshd_config

防火墙状态

# UFW状态
sudo ufw status verbose

# iptables规则
sudo iptables -L -n -v

权限检查

# 查找SUID文件
find / -perm -4000 -type f 2>/dev/null

# 检查world-writable文件
find / -perm -002 -type f 2>/dev/null

修复建议

依赖类漏洞的通用修复流程

  1. 查官方 advisory:确认受影响版本范围和官方推荐的修复路径(升级/降级/补丁工具),不要依赖任何写死在文档里的版本号
  2. 执行修复:优先用官方修复工具,其次手动升级到 advisory 指明的安全版本
  3. 修复后必做(RCE 类漏洞尤其不能跳过):
  • 轮换所有可能暴露的应用密钥
  • 检查是否有异常进程或网络连接(入侵痕迹排查)
  1. 回归验证:重跑依赖扫描确认漏洞消除

具体漏洞的修复命令和历史案例(含 React2Shell 完整处置记录)详见 references/remediation_guide.md

报告格式

full_scan.pysecurity_report/ 下生成:

security_report/
├── summary.md            # 执行摘要 + 覆盖范围声明(工具缺失时列出缩窄项)
└── security_report.json  # 结构化发现,按 critical/high/medium/low/info 分级 + skipped_tools

secrets_scan.py 另行生成 secrets_report.{json,md}(命中值已脱敏)。

汇总多来源发现、按严重性分文件时,从 security_report.json 的分级结构派生即可,不必依赖固定的六文件布局。

验收标准(完成前逐条自查)

  • [ ] 报告含 summary.md(带覆盖范围声明)与结构化 JSON;缺失的扫描器已在报告中列出
  • [ ] 每个 Critical/High 发现都有:证据位置(文件+行号或配置项)+ 影响说明 + 可执行的修复建议
  • [ ] 依赖漏洞结论基于本次运行的扫描或搜索结果,未引用过时的内置CVE知识
  • [ ] 未给出"已确认安全"式结论——只报告"在已执行的检查范围内未发现",并列出未覆盖项
  • [ ] 泄露凭证只报告位置与类型,输出中无完整明文

已知陷阱

| 陷阱 | 具体表现 | 应对 |

|------|---------|------|

| 扫描工具缺失时静默跳过 | 环境装不上 bandit/semgrep,直接不扫也不说明 | 降级为 grep 模式匹配,并在报告中明确声明覆盖范围缩窄 |

| 把"扫描通过"当"安全" | 工具零报告就写"系统安全" | 工具只覆盖已知模式;结论必须限定范围并列出未检查项 |

| --break-system-packages 污染环境 | 全局 pip 安装扫描工具破坏系统 Python | 优先用 venv 或 pipx;用户环境受限时先征求同意 |

| 误报未过滤直接进报告 | SAST 把测试夹具、示例代码报为漏洞 | 每条 Critical 人工复核上下文,误报标注原因后移出 critical 列表 |

最佳实践

  1. 每次提交前运行快速扫描
  2. 每日运行依赖漏洞检查
  3. 每周运行完整安全审计
  4. 将扫描集成到 CI/CD 流水线
  5. 订阅安全公告(如CVE、NVD)
  6. 定期更新扫描工具和规则库

参考资料

  • 详细漏洞检测规则: references/detection_rules.md
  • 修复指南: references/remediation_guide.md
  • 服务器加固: references/server_hardening.md
  • 触发边界回归用例: evals/routing-evals.json(改动本 skill 的 description 后应重跑)

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 716
本站分层T2
该仓技能数20
原文件路径skills/Geek-skills-security-audit/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 20 个技能