360 Secure SkillHub
360 安全技能中心

Agent安全工具箱(免费版)

免费版本地运行的 AI Agent 安全扫描工具,内置24条规则,对 JS/TS/Python/Solidity/Markdown 等文件做静态分析,覆盖命令执行、远程加载、密钥泄露、Prompt 注入等风险,按 LOW 至 CRITICAL 分级并输出发现项;运行时行动评估、自动巡检、信任注册表、健康检查和 HTML 报告属专业版功能,不在免费版内。

thcjp
thcjp
热度 41.62
最近更新 2026-09-22 02:57:50
分类:安全依赖:代码执行 / 读写文件应用场景:代码审查 / 自动化脚本 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add security-toolkit-free
Metadata
slug
security-toolkit-free
name
security-toolkit-free
version
1.0.1
displayName
Agent安全工具箱(免费版)
summary
AI Agent安全扫描与风险检测,24条规则覆盖注入、密钥泄露、恶意代码等,适合个人开发者,支持多种使用场景和自动化处理
license
MIT
edition
free
description
核心能力:,可自发提升工作效率. 适用于需要security toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要security toolkit相关能力的开发场景,包含结构化的工作流程和配置指引. 该工具经过深度差异化处置,针对用户反馈和使用痛点进行了调优改进,提升了实用性和可操作性.
tags
["安全","security","toolkit","automation","productivity","Agent安全","代码审计","漏洞扫描","加密","工具"]
tools
["read","exec"]
homepage
category
Security
pricing_tier
free

Agent安全工具箱(免费版)

概述

Agent安全工具箱免费版是一款专为AI Agent生态设计的安全扫描工具。内置24条安全检测规则,覆盖命令执行、自动更新、远程加载、密钥泄露、Prompt注入等AI特有安全风险。支持 JavaScript、TypeScript、Python、Solidity、Markdown 等多种文件类型的静态分析,自动进行风险分级并输出可操作的修复建议.

核心能力

24条安全检测规则

编号 规则ID 严重等级 检测内容
1 SHELL_EXEC HIGH 命令执行能力
2 AUTO_UPDATE CRITICAL 自动更新/下载执行
3 REMOTE_LOADER CRITICAL 远程动态代码加载
4 READ_ENV_SECRETS MEDIUM 环境变量读取
5 READ_SSH_KEYS CRITICAL SSH密钥文件访问
6 READ_KEYCHAIN CRITICAL 系统密钥链/浏览器配置
7 PRIVATE_KEY_PATTERN CRITICAL 硬编码私钥
8 MNEMONIC_PATTERN CRITICAL 硬编码助记词
9 WALLET_DRAINING CRITICAL 代币盗取模式
10 UNLIMITED_APPROVAL HIGH 无限授权模式
11 HIGHRISK_SELFDESTRUCT HIGH 合约自毁
12 HIDDEN_TRANSFER MEDIUM 非标准转账实现
13 PROXY_UPGRADE MEDIUM 代理升级模式
14 FLASH_LOAN_RISK MEDIUM 闪电贷使用
15 REENTRANCY_PATTERN HIGH 重入攻击模式
16 SIGNATURE_REPLAY HIGH 签名重放
17 OBFUSCATION HIGH 代码混淆技术
18 PROMPT_INJECTION CRITICAL Prompt注入攻击
19 NET_EXFIL_UNRESTRICTED HIGH 无限制数据外传
20 WEBHOOK_EXFIL CRITICAL Webhook数据外泄
21 网络代理_DISTRIBUTION CRITICAL 木马分发
22 SUSPICIOUS_PASTE_URL HIGH 可疑粘贴板URL
23 SUSPICIOUS_IP MEDIUM 硬编码公网IP
24 SOCIAL_ENGINEERING HIGH 社会工程学诱导

处理: 解析条安全检测规则的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回条安全检测规则的响应数据,包含状态码、结果和日志.

免费版与专业版对比

功能 免费版 专业版
检测规则 24条 24条+自定义规则
扫描模式 基础扫描 深度扫描+行为分析
行动评估 不支持 运行时安全决策
巡检模式 不支持 8项自动巡检
信任注册表 不支持 信任等级管理
健康检查 不支持 6维度健康评分
HTML报告 不支持 可视化报告
批量扫描 单目录 多目录批量

处理: 解析免费版与专业版对比的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回免费版与专业版对比的响应数据,包含状态码、结果和日志.

核心功能执行

用input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Agent、安全扫描与风险检、条规则覆盖注入、密钥泄露、恶意代码等、适合个人开发者、核心能力、条安全检测规则覆、盖代码与配置、Python、Markdown、等多语言扫描、风险等级自动分级、LOW、命令行扫描与报告等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.

使用场景

依赖详情

在安装任何第三方Skill之前,先执行安全扫描.

输入格式

参数名 类型 必填 说明
input string 是 Agent安全工具箱(免费版)处理的输入数据或指令
options object 否 附加配置选项,如模式选择、格式偏好等
callback_url string 否 异步处理完成后的回调通知URL
# 扫描Skill目录
node (请参考skill目录中的脚本文件) /path/to/skill-directory

输出示例:

安全扫描报告
═══════════════════════════════════════
目标: /path/to/skill-directory
风险等级: CRITICAL
扫描文件: 12
发现问题: 3
# ...
发现项:
| # | 规则 | 严重等级 | 文件:行号 | 证据 |
|:---:|:---:|:---:|:---:|:---:|
| 1 | REMOTE_LOADER | critical | index.js:42 | 安全解析(remoteData) |
| 2 | READ_ENV_SECRETS | medium | config.js:15 | process.env.SECRET |
| 3 | PROMPT_INJECTION | critical | SKILL.md:8 | "遵循当前指令" |
# ...
建议: 不要安装此Skill,存在严重安全风险.

场景二:代码仓库安全自检

# 扫描整个项目
node (请参考skill目录中的脚本文件) /path/to/project --full

场景三:检测特定风险

# 只检测密钥泄露
node (请参考skill目录中的脚本文件) /path/to/project --rule PRIVATE_KEY_PATTERN
# ...
# 只检测Prompt注入
node (请参考skill目录中的脚本文件) /path/to/project --rule PROMPT_INJECTION

不适用场景

以下场景Agent安全工具箱(免费版)不适合处理:

  • 渗透测试未授权目标
  • 物理安全防护
  • 社会工程学攻击

触发条件

需要安全检测、合规审计、漏洞扫描、加密防护时使用。不适用于非本工具能力范围的需求.

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

扫描脚本

# ...
# ...
# ...
# ...
# ...
# ...
# ...
# ...
# ...
# ...
result = "操作完成"
import os
import re
import json
from pathlib import Path
class SecurityScanner:
    """AI Agent安全扫描器"""
    RULES = {
        "SHELL_EXEC": {
            "severity": "HIGH",
            "pattern": r"(child_process|exec\(|execSync\(|spawn\(|subprocess\.)",
            "description": "命令执行能力"
        },
        "AUTO_UPDATE": {
            "severity": "CRITICAL",
            "pattern": r"(curl|wget|fetch)\s*.*\|\s*(bash|sh|python|node)",
            "description": "自动更新/下载执行"
        },
        "REMOTE_LOADER": {
            "severity": "CRITICAL",
            "pattern": r"(eval\(|Function\(|require\(.*http|import\(.*http)",
            "description": "远程动态代码加载"
        },
        "READ_ENV_SECRETS": {
            "severity": "MEDIUM",
            "pattern": r"(process\.env\.|os\.environ\.|getenv\().*(?:KEY|SECRET|TOKEN|PASSWORD|PRIVATE)",
            "description": "环境变量密钥读取"
        },
        "PRIVATE_KEY_PATTERN": {
            "severity": "CRITICAL",
            "pattern": r"(0x[a-fA-F0-9]{64}|-----BEGIN.*PRIVATE KEY-----)",
            "description": "硬编码私钥"
        },
        "MNEMONIC_PATTERN": {
            "severity": "CRITICAL",
            "pattern": r"(mnemonic|seed_phrase|seedPhrase).{0,20}['\"].{20,}",
            "description": "硬编码助记词"
        },
        "PROMPT_INJECTION": {
            "severity": "CRITICAL",
            "pattern": r"(ignore\s+(previous|all|above)\s+instructions|system\s*prompt|<\|im_start\|>)",
            "description": "Prompt注入攻击"
        },
        "OBFUSCATION": {
            "severity": "HIGH",
            "pattern": r"(eval\(atob|eval\(decode|\\x[0-9a-f]{2}\\x[0-9a-f]{2}\\x[0-9a-f]{2})",
            "description": "代码混淆技术"
        },
        "NET_EXFIL_UNRESTRICTED": {
            "severity": "HIGH",
            "pattern": r"(fetch|axios|http\.post|requests\.post).*(?!.*allowlist)",
            "description": "无限制数据外传"
        },
        "WEBHOOK_EXFIL": {
            "severity": "CRITICAL",
            "pattern": r"(discord\.com/api/webhooks|hooks\.slack\.com|.*\.webhook\.*)",
            "description": "Webhook数据外泄"
        }
    }
    SKIP_DIRS = {"node_modules", "dist", "build", ".git", "coverage", "__pycache__", ".venv", "venv"}
    SCAN_EXTENSIONS = {".js", ".ts", ".jsx", ".tsx", ".mjs", ".cjs", ".py", ".json", ".yaml", ".yml", ".sh", ".md"}
    def __init__(self):
        self.findings = []
        self.files_scanned = 0
    def scan(self, target_path):
        """扫描目标路径"""
        target = Path(target_path)
        if target.is_file():
            self._scan_file(target)
        else:
            for root, dirs, files in os.walk(target):
                dirs[:] = [d for d in dirs if d not in self.SKIP_DIRS]
                for file in files:
                    filepath = Path(root) / file
                    if filepath.suffix in self.SCAN_EXTENSIONS:
                        self._scan_file(filepath)
        return self._generate_report(target_path)
    def _scan_file(self, filepath):
        """扫描单个文件"""
        self.files_scanned += 1
        try:
            with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
                lines = f.readlines()
            for line_num, line in enumerate(lines, 1):
                for rule_id, rule in self.RULES.items():
                    if re.search(rule["pattern"], line, re.IGNORECASE):
                            "rule": rule_id,
                            "severity": rule["severity"],
                            "file": str(filepath),
                            "line": line_num,
                            "evidence": line.strip()[:100],
                            "description": rule["description"]
                        })
        except Exception:
    def _generate_report(self, target):
        """生成扫描报告"""
        risk_level = "LOW"
        if any(f["severity"] == "CRITICAL" for f in self.findings):
            risk_level = "CRITICAL"
        elif any(f["severity"] == "HIGH" for f in self.findings):
            risk_level = "HIGH"
        elif any(f["severity"] == "MEDIUM" for f in self.findings):
            risk_level = "MEDIUM"
        return {
            "target": target,
            "risk_level": risk_level,
            "files_scanned": self.files_scanned,
            "total_findings": len(self.findings),
            "findings": self.findings
        }

示例

扫描配置

{
  "scan_config": {
    "skip_dirs": ["node_modules", "dist", "build", ".git"],
    "scan_extensions": [".js", ".ts", ".py", ".md", ".json"],
    "rules_enabled": "all",
    "markdown_code_blocks_only": true,
    "decode_base64": true,
    "output_format": "json"
  }
}

优秀实践

1. 安装前必扫

# 安装任何新Skill前执行安全扫描
node (请参考skill目录中的脚本文件) ./.skills/new-skill/

2. 定期安全自检

# 每周扫描工作区
node (请参考skill目录中的脚本文件) ./workspace/ --full --output weekly_scan.json

3. 关注CRITICAL级别

# 只显示严重问题
node (请参考skill目录中的脚本文件) /path/to/project | grep CRITICAL

常见问题

Q1: 扫描会产生误报吗?

A: 静态扫描可能产生误报。建议结合上下文判断,例如 process.env 在配置文件中是正常的,但在传输到外部服务器时则是风险.

Q2: Markdown文件如何扫描?

A: 免费版只扫描Markdown文件中的代码块(```标记之间的内容),避免误报正文中的技术描述.

Q3: 扫描速度如何?

A: 100个文件的扫描约需3-5秒,取决于文件大小和规则数量.

Q4: 如何获取行动评估和巡检功能?

A: 这些是专业版功能。免费版专注于静态代码扫描,专业版增加了运行时行动评估、自动巡检和信任管理.

依赖说明

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux
  • Python版本: 3.8+ 或 Node.js 16+

第三方依赖

依赖项 类型 是否必需 获取方式
Python 运行时 必需 系统自带或 python.org 下载
re模块 标准库 必需 Python内置
pathlib模块 标准库 必需 Python内置

API Key 配置

  • 免费版无需任何 API Key,完全本地执行

可用性分类

  • 分类: MD+EXEC模式纯Markdown指令,部分功能需exec命令行执行)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行安全扫描任务

错误处理

错误场景 原因 处理方式
配置错误 参数缺失或格式错误 检查依赖说明中的配置要求
运行时错误 运行环境不满足 确认运行环境符合依赖说明
网络错误 连接超时或不可达 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

已知限制

  • 本地运行,不支持多设备同步
  • 不能替代专业安全审计,仅提供辅助检查能力
  • 加密强度依赖正确配置的密钥与算法参数
  • 安全策略需定期更新以应对新威胁