T05 · Unauthorized Access and Privilege Escalation
- Location
src/index.mjs:151- Finding
Request-Controlled Constraints Can Disable Security Safeguards
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is disclosed as a local IAM-escalation decision gate, but it allows caller-supplied policy settings and external votes to influence high-impact approval decisions without enough trusted scoping.
Treat this as Review, not proven malware. Before installing it in any workflow that can actually grant permissions, ensure policy constraints are supplied from trusted deployment configuration, not from the requester; accept external_agent votes only after authentication/signature and duplicate/freshness checks; include vote evidence in replay/idempotency decisions; pin and audit dependencies; and run it with a dedicated non-privileged state directory.
src/index.mjs:151Request-Controlled Constraints Can Disable Security Safeguards
src/index.mjs:63External Votes and Reputation Values Are Accepted Without Authentication
src/index.mjs:220External Votes Are Omitted from the Idempotency Key
fast-uri 3.1.0 is flagged for multiple URI parsing and canonicalization issues, including host confusion and SSRF-relevant edge cases. This skill is explicitly a governance/security control around IAM and permission escalation decisions, so incorrect URI parsing in any downstream network, policy, callback, or artifact-handling logic could undermine trust boundaries or route requests to attacker-controlled targets.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The package uses a caret range for the ajv dependency, which allows automatic installation of newer minor and patch releases. While common in the Node.js ecosystem, this weakens build determinism and can introduce supply-chain risk if an upstream release is compromised or contains a breaking security regression.
"demo": "node --import tsx run.js --input ./examples/input.json"
},
"dependencies": {
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"consensus-guard-core": "^1.1.15",
"tsx": "^4.20.3"
The ajv-formats dependency is specified with a caret range, so future compatible releases may be pulled in without explicit review. In a security-governance skill, this increases supply-chain exposure because validation behavior is part of the trust boundary and unexpected upstream changes could affect policy enforcement.
},
"dependencies": {
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"consensus-guard-core": "^1.1.15",
"tsx": "^4.20.3"
},
The consensus-guard-core dependency is unpinned, allowing newer minor or patch versions to be installed automatically. Because this package appears central to permission-escalation governance decisions, upstream changes or a compromised release could directly alter ALLOW/BLOCK logic, making the context more sensitive than a typical utility package.
"dependencies": {
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"consensus-guard-core": "^1.1.15",
"tsx": "^4.20.3"
},
"license": "MIT",
The tsx dependency is also specified with a caret range, permitting unreviewed updates within the allowed semver range. Although likely used for testing and demo execution, compromised or unexpected dependency updates can still affect local execution paths and developer environments.
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"consensus-guard-core": "^1.1.15",
"tsx": "^4.20.3"
},
"license": "MIT",
"engines": {
This JSON manifest/test-vector file uses the mode value "external_agent" without any accompanying natural-language constraint about when that mode should or should not be used. In manifest-like files, broad activation descriptors without explicit scope can create ambiguity about invocation conditions.
No suspicious patterns detected.