Back to skill

Security audit

hekouwang Harness Check

Security checks for vulnerabilities and agentic risk

Overview

ClawScan’s verdict is benign with medium confidence: the reported concerns relate mainly to declared health-check behavior that appears to include repository changes or checks the scanners could not fully verify.

The benign verdict is not a guarantee of safety, and scan coverage was partial: 22 of 23 components were scanned, one file was only partially inspected, and some referenced files were missing from the bundle. Before installing, consider whether you want a skill that may change repository hook configuration and request adapter repair; the scan could not confirm the effects of the repair script or hook contents.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 298)May include surrounding context.

md
这个 Skill 的安全要求是行为约束,不是建议:

1. 保留底层命令的真实退出码,不用管道吞错;
2. 不使用 `git commit --no-verify` 或其他方式绕过验证;
3. 不修改测试计数、删除反例、降低 `failClosed` 或放宽危险动作规则来制造通过;
4. 不未经用户明确要求运行适配链接 `--fix` 或修复代码;
5. 不把执行者自报完成当成独立证据;

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied chunk only initializes browser-global data. It does not invoke verify.sh, inspect referenced files, evaluate hooks or safety gates, or check Episode state. Command strings and evidence paths are inert report fields, not executable checks. This dataset could support a broader auditing tool, but the supplied code alone does not implement the declared auditing behavior. No network access, filesystem access, or command execution is shown.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

Although hooks are within the declared subject area, installing or activating them changes future Git behavior and is materially different from inspecting them. This configuration-changing capability is not disclosed by the health-check description. The script does not itself execute any hook, and the contents of those hooks are not shown.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

The supplied command requests a fix operation for agent adapters, whereas the declared purpose describes verification and health checks. This is a meaningful check-versus-repair discrepancy, not merely a different implementation of a check. No invocation of verify.sh or the other stated checks is visible; the missing script body limits certainty about downstream behavior.

Content

No source excerpt is available for this finding.

Code capability 'file_write' detected in harness_score.py but not covered by declared permissions.

High
Category
MCP Least Privilege
Confidence
75% confidence
Finding

The skill uses 'file_write' capability that is not covered by the declared 'allowed-tools' preapproval. Review the host runtime's actual enforcement policy; runtime permissions are unknown unless separately verified, and this declaration alone does not establish a permission ceiling.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · harness_score.py (reported line 244)May include surrounding context.

python
def git_state(root: Path) -> dict[str, Any]:
    def run(args: list[str]) -> str:
        result = subprocess.run(args, cwd=root, text=True, capture_output=True, check=False)
        return result.stdout.strip()

    top = run(["git", "rev-parse", "--show-toplevel"])

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · harness_score.py (reported line 283)May include surrounding context.

python
}[mode]
        script_name = next((name for name in candidates if name in package_scripts), None)
        if not script_name:
            return {"mode": mode, "command": "", "executed": False, "reason": "no verification entrypoint"}
        command = f"pnpm run {script_name}"
        argv = ["pnpm", "run", script_name]

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · harness_score.py (reported line 295)May include surrounding context.

python
chunks: list[str] = []
        last_activity = "starting verification…"
        try:
            process = subprocess.Popen(
                argv,
                cwd=root,
                text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · harness_score.py (reported line 330)May include surrounding context.

python
exit_code = 126
    else:
        try:
            result = subprocess.run(argv, cwd=root, text=True, capture_output=True, check=False, timeout=900)
            output = f"{result.stdout}\n{result.stderr}"
            exit_code = result.returncode
        except subprocess.TimeoutExpired as error:

The skill installs Git hooks by changing repository configuration rather than merely checking hook health.

Medium
Category
Excessive Agency
Confidence
91% confidence
Finding

The manifest describes a Harness health check, including Hook checks. L5 persistently sets the repository's core.hooksPath to .githooks, replacing any existing setting and changing which hooks Git will execute; this is configuration mutation rather than validation.

Content

No source excerpt is available for this finding.