Back to skill

Security audit

contest-submission-portal

Security checks for vulnerabilities and agentic risk

Overview

This is a simple contest-submission checklist CLI that only evaluates provided arguments and prints JSON, with no hidden data access or persistence found.

Installers should be comfortable with a Chinese-first CLI and should treat its contest decisions as advisory only, as the artifact itself says human organizers retain final judgment.

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
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This code presents its description, argument help, and validation errors exclusively in Chinese, such as the module docstring and the required-parameter error. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly documented and justified, which is not present here.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
The text states '中文文档见 `SKILL.md`', indicating the skill documentation is provided in Chinese, while this README does not offer an alternative language or user opt-in. Under the policy rule, forcing a specific language without choice can be a natural-language policy violation.

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Content
out_list.append({"tool": META["slug"], "input": d, "errors": [str(e)], "rc": 2, "aigc_mark": AIGC})
        print(json.dumps(out_list, ensure_ascii=False, indent=2))
        sys.exit(0 if allok else 2)
    args = {k: getattr(ns, k) for k in argnames}
    try:
        res, rc = _run(args)
    except GateError as e:
Confidence
50% confidence
Finding
Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.

Static analysis

No suspicious patterns detected.