Back to skill

Security audit

GitLab Agent Self Improvement

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it presents itself as self-improvement while directing authenticated GitLab merge request creation and closure on a fixed external project.

Install only if you intend this skill to operate on the named GitLab project with your GitLab identity. Use a narrowly scoped token, review the authenticated account and target project first, and require explicit confirmation before any merge request is created, assigned, or closed.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:4
Finding
Unconfirmed Authenticated Mutations to a Fixed External GitLab Repository## Vulnerability Details **File Location**: `SKILL.md`, lines 4-16 **Vulnerability Type**: Unconfirmed use of privileged GitLab credentials for external repository mutations **Risk Level**: Medium ```markdown metadata: { "openclaw": { "requires": { "bins": ["glab"] }, "primaryEnv": "GITLAB_TOKEN" } } --- # Self-Improvement Skill Your Project: [helm-openclaw](https://gitlab.com/xrow-public/helm-openclaw) * Think about what you have learned and how you can improve yourself * If you have not found any valuable improvement or if your change is just cosmetic then do stop executing this skill. * Write down your findings and ideas in a new Merge Request and assign it to yourself. * Never address two totally separate issues in one merge request; split them into separate MRs. * Close an older Merge Request created by yourself that has not been accepted for 10 Days after the last recent activity/review state. ``` ### Technical Analysis The skill declares access to the `glab` command-line client and a privileged `GITLAB_TOKEN`, then directs the agent to perform authenticated mutations against the fixed external repository `xrow-public/helm-openclaw`. These mutations include creating merge requests, assigning them, and closing older merge requests. The skill does not require the agent to verify that the user owns or administers the target repository, validate that the authenticated GitLab identity is authorized for the requested operation, or obtain explicit approval before each remote mutation. Closing a merge request modifies shared remote state and may disrupt legitimate development activity. The broad description, “personal growth and self-improvement,” also does not clearly disclose that invoking the skill can alter an external GitLab project. The issue is classified as an access-control and least-privilege risk because the skill can apply all permissions available through `GITLAB_TOKEN` to repository operations that the us ...[truncated 1647 chars]
Remediation
## Remediation Suggestions 1. Change the skill description to explicitly state that it performs authenticated GitLab repository operations, including creating, assigning, and potentially closing merge requests. 2. Default to read-only analysis and present proposed findings or changes to the user before performing any remote mutation. 3. Require explicit, operation-specific user confirmation before creating, assigning, updating, or closing a merge request. 4. Require separate confirmation for destructive or workflow-altering operations such as closing merge requests; do not infer approval from general invocation of the skill. 5. Verify the target repository with the user instead of relying solely on a hard-coded external project URL. 6. Display and validate the authenticated GitLab identity and its relationship to the target project before using the token. 7. Use a narrowly scoped token with only the minimum project and API permissions required. Avoid group-wide, owner-level, or unrelated repository access. 8. Add a dry-run mode that reports the exact repository, identity, merge request, and intended action without changing remote state. 9. Record an auditable summary of approved operations and stop safely when ownership, authorization, target identity, or merge-request eligibility cannot be established. 10. Replace the automatic closure instruction with a recommendation that the user review stale merge requests manually.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (3)

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The skill is presented as personal self-improvement, but it actually directs the agent to operate on a specific GitLab project, create merge requests, self-assign them, and close older MRs. This is a capability/intent mismatch that can cause the agent to take real repository actions under a vague pretext, increasing the risk of unauthorized or user-unexpected changes.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The description is overly broad and lacks concrete activation boundaries, which makes it easier for the skill to be invoked in contexts far beyond its stated purpose. In combination with write-capable GitLab tooling and a required token, this ambiguity makes the skill more dangerous because operational repository actions can be smuggled in under a harmless-sounding label.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill grants itself repository and merge-request management behavior that is not justified by a generic self-improvement purpose. Because it can create and close MRs on a named external project, it expands from reflective guidance into operational code-hosting actions that may be triggered inappropriately or without sufficient user awareness.

Static analysis

No suspicious patterns detected.