Back to skill
Skillv1.0.0

ClawScan security

follow-nowcoder · ClawHub's context-aware review of the artifact, metadata, and declared behavior.

Scanner verdict

SuspiciousApr 19, 2026, 3:29 AM
Verdict
suspicious
Confidence
high
Model
gpt-5-mini
Summary
功能总体与说明一致 (从牛客网抓取并生成面经报告),但存在多处不一致与安全风险(未在元数据声明对 Python/依赖的需求、在运行时全局禁用/降级 SSL 验证、以及在用户主目录写入配置),建议在受控环境中审阅并修正后再使用。
Guidance
要点与建议: 1) 一致性与前提:SKILL.md 和源码假定你有 Python 可用并能安装依赖 (requests, pydantic),但注册表元数据没有声明这些先决条件。不要在不知道细节的情况下直接运行 onboarding 中的 pip install。先在独立环境(虚拟环境或隔离容器/沙箱)里手动安装并测试。 2) SSL/TLS 风险:源码在网络层面全局禁用证书验证并关闭相关警告(verify=False、disable_warnings、设置 OPENSSL_CONF=''、降低 SECLEVEL)。这会使抓取过程容易受到中间人攻击并隐藏告警。建议在正式使用前将这些改动移除或修改为可选(保留证书验证、不要屏蔽警告),并仅在确切知道风险的受控网络环境中运行。 3) 文件与持久化:该 skill 会在 ~/.nowcoder-search 下写入配置和自定义提示词,并在工作目录写入 .claude/temp/report_data.json。若不希望在主机上留下痕迹,请在临时容器或专用目录运行。 4) 源码审查优先:虽然功能上与描述一致,但存在安全性折衷(SSL 降级、环境修改)和元数据不完整的问题。建议在信任该 Skill 之前自行审阅 src/search.py 中 SSLAdapter 与网络调用部分,确认没有将数据转发到非 nowcoder 的第三方端点(此仓库中未发现隐藏外部端点)。 5) 操作建议:在隔离环境中运行(虚拟env 或容器),把 requests 的 verify=True 恢复为默认行为,删除或注释掉修改 OPENSSL_CONF 的代码,保留清晰的日志输出(不要 suppress warnings)。如果你缺乏技术资源,优先在受控环境或拒绝安装此 Skill。
Findings
[disable-ssl-verification] unexpected: src/search.py 在 session 请求中使用 verify=False 并创建自定义 SSLAdapter 将 context.verify_mode 设置为 CERT_NONE;这 weakens TLS verification. 虽然可能为兼容旧服务的临时 hack,但对安全性有明确负面影响且并非抓取内容所必须的安全做法。
[suppress-insecure-warnings] unexpected: 代码通过 urllib3.disable_warnings(...) 隐藏 InsecureRequestWarning,这会掩盖因禁用证书验证带来的重要安全提示,通常不应在生产代码中默默关闭。
[modify-openssl-config-env] unexpected: 代码设置 os.environ['OPENSSL_CONF'] = '' 以兼容 OpenSSL 3.0 的服务器交互;该全局环境改动影响当前进程及可能影响后续库行为,属于较高影响的运行时更改,应在文档里明确并尽量避免。
[writes-user-config] expected: src/utils.py 在用户主目录下创建 ~/.nowcoder-search 并读写配置/提示词文件,这与技能功能(保存用户偏好与自定义提示词)是一致且预期的。

Review Dimensions

Purpose & Capability
noteSkill 名称/描述与代码和 SKILL.md 提供的功能(搜索牛客网、抓取帖子、汇总并生成报告)是一致的。但元数据宣称“instruction-only / 无需二进制/无环境变量”,而实际代码和说明明确要求使用 python、pip 安装 requests 和 pydantic,并包含多个 Python 源文件——这是不一致的(应声明 Python 与依赖)。此外,代码会在用户主目录 (~/.nowcoder-search) 读写配置与自定义提示词,属于预期功能但应被明示。
Instruction Scope
concernSKILL.md 指示 Agent 运行本地 CLI 脚本 (scripts/cli.py) 并读取生成的 .claude/temp/report_data.json。这些指令会导致网络请求(访问 nowcoder 的 API/页面)、本地文件创建/修改(~/.nowcoder-search 下的 config/prompts,当前目录下的 .claude/temp),并可能执行 pip install。指令不要求或传输任何敏感凭据, 但会让代理执行网络 I/O、安装依赖、并写入用户配置目录——应由用户确认是否允许这些操作。
Install Mechanism
note注册表无安装说明 (install spec 缺失),但 README 与 SKILL.md 建议使用 pip 或 uv/uv sync 安装依赖 (requests, pydantic)。代码中包含 requirements.txt。没有从未知 URL 下载可执行归档——这点较安全,但自动运行 pip install(通过 onboarding 建议)会进行网络包安装,元数据却没有声明这些依赖,存在信息不完整的问题。
Credentials
concernSkill 不请求外部凭据或环境变量(metadata 正确反映),但源码在 import 时修改环境/网络相关设置:会设置 os.environ['OPENSSL_CONF']='' 并在 requests 中全局禁用证书验证 (verify=False) 并关闭 urllib3 的 InsecureRequestWarning。这些改动会降低 TLS 校验强度并隐藏安全警告,超出一个普通“网页抓取并生成报告”所应承担的最小权限/安全边界,需谨慎评估。
Persistence & Privilege
noteSkill 未设置 always:true,agent 可自主调用为默认行为(正常)。安装/运行过程中会在用户主目录下创建 ~/.nowcoder-search 并写入 config.json 和 prompts,这种持久化配置是功能性需求但代表持久写权限到用户主目录——应告知用户。没有迹象显示修改其它 skill 的配置或系统范围设置。