Back to skill

Security audit

Aoment Image Video

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated Aoment media-processing purpose, but it can fetch arbitrary URLs and relay the contents to Aoment, so users should review it before installing.

Install only if you are comfortable sending prompts, selected media, nicknames, and Aoment API keys to Aoment's service. Do not pass confidential files or private/internal URLs as image inputs, and avoid placing real API keys directly in shell commands where they may be logged or saved in history.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/aoment_hd_repair.py:42
Finding

Unrestricted URL Fetching Enables SSRF and External Data Relay

Content
View full analysis
tuple[str, bytes, str]: if source.startswith("http"): response = requests.get(source, timeout=60) response.raise_for_status() content_type = response.headers.get("content-type") or "image/png" return "input.png", response.content, content_type if os.path.exists(source): with open(source, "rb") as file: content = file.read() content_type = mimetypes.guess_type(source)[0] or "image/png" return os.path.basename(source) or "input.png", content, content_type try: content = base64.b64decode(source) except Exception as exc: raise ValueError(f"--image must be a local path, URL, or base64 image: {exc}") from exc return "input.png", content, "image/png" def repair_image(api_base: str, args: argparse.Namespace) -> dict: url = f"{api_base}/api/skills/aoment-image-video/hd-repair" filename, image_bytes, content_type = _read_image_source(args.image) data = { "resolution": args.resolution, "model": args.model, } files = { "file": (filename, image_bytes, content_type), } response = requests.post( url, data=data, files=files, headers=_auth_headers(args.api_key), timeout=REQUEST_TIMEOUT, ) ``` ### Technical Analysis The HD-repair script treats any value beginning with `http` as a remotely retrievable image. It performs a request without validating: - The URL scheme beyond a loose prefix check. - The destination hostname or resolved IP address. - Whether the destination is loopback, private, link-local, or otherwise reserved. - Redirect destinations. - The response size. - ...[truncated 2168 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/aoment_image_video.py:305
Finding

Bearer API Keys Are Exposed Through Command-Line Arguments

Content
View full analysis
-t text-to-image -p "a cute cat playing in a garden" ``` ### Technical Analysis The scripts require an Aoment bearer API key through `--api-key` or `-k`. Supplying a secret as a command-line argument can expose it outside the intended process through mechanisms such as: - Shell history. - Process listings and process inspection interfaces. - Automation logs and command tracing. - CI/CD job output. - Terminal-session recording. - Agent or orchestration telemetry that records executed commands. The key is subsequently used as an authorization bearer token. Possession of the token is therefore sufficient to make authenticated requests within the permissions assigned to the associated Aoment account. Transmitting the bearer key to Aoment over HTTPS is necessary for the declared remote service. The security issue is the required local input mechanism, not the authenticated network request itself. ### Attack Path 1. A user or Agent follows the documented usage and invokes a script with `-k `. 2. The complete command is retained in shell history, execution t ...[truncated 1122 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (21)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code chunk implements only one narrow function: image HD repair/upscale via the /api/skills/aoment-image-video/hd-repair endpoint using a provided API key. It does not contain functionality for text-to-image, image-to-image, image recognition, video generation, or automatic API key registration. The declared description presents a much broader multi-model, multi-capability service than the code actually provides. While HD repair is accurately represented, the overall declared purpose materially overstates the implemented behavior, so this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
87% confidence
Finding

The code substantially matches several declared capabilities: it supports text-to-image, image-to-image, image recognition, and video generation against Aoment AI endpoints. However, two explicitly advertised features are absent from the implementation: there is no image HD repair endpoint or function, and no logic for automatic Agent API key registration. In fact, the CLI requires the API key as an input parameter. The remote version check is a supporting detail, not a purpose mismatch. Therefore the description overstates the implemented functionality in materially relevant ways.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description claims the skill provides access to multiple Aoment AI media/model capabilities and supports automatic Agent API key registration. However, the actual code only sends a GET request to /api/skills/aoment-image-video/quota using a provided API key and reports quota statistics. Its primary purpose is quota inspection, not performing any of the declared generation/recognition/repair tasks, and it does not register API keys. This is a material description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The code does not implement any AI image/video/recognition/repair functionality. Its sole behavior is automatic Agent API key/account registration via an HTTP POST to the Aoment registration endpoint. While the description mentions API key registration, it presents the skill primarily as a broad model-access and media-processing service with several capabilities that are absent from the code. This is a material description-versus-behavior mismatch.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill is user-invocable and documents network access plus local file input handling, but it does not declare any explicit tool scope such as allowed network/file capabilities. That weakens least-privilege controls and makes it harder for a hosting agent platform to constrain or review what the skill may access, especially since local files, URLs, and remote update/version checks are involved.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill is marked user-invocable but does not define invocation constraints or narrow trigger conditions, increasing the chance an agent may call it too broadly or in contexts the user did not intend. Because the skill can transmit prompts and local media externally and can register API keys, overbroad invocation raises privacy and misuse risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation does not clearly warn users that prompts, local images, videos, audio references, and possibly derived metadata are sent to a third-party Aoment service. This can lead to unintentional disclosure of sensitive data, and the risk is heightened because the skill explicitly accepts local file paths, URLs, and base64 content for upload.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 93)May include surrounding context.

Or register via API directly:

bash
curl -X POST https://www.aoment.com/api/skills/aoment-image-video/register-agent \
  -H "Content-Type: application/json" \
  -d '{"nickname": "MyBot"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This POST request sends the supplied image content together with authentication headers to an external API endpoint. Although remote processing is implied by the tool purpose, the code itself lacks a visible disclosure such as a print/log message, confirmation, or warning in comments/docstrings about transmitting user-provided image data and credentials to the service.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/aoment_image_video.py (reported line 89)May include surrounding context.

python
"model": args.model or DEFAULT_IMAGE_MODEL,
    }

    response = requests.post(
        url, json=payload, headers=_auth_headers(args.api_key), timeout=IMAGE_TIMEOUT
    )
    result = _json_or_error(response)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This script reads local image, video, and audio files and transmits them to Aoment API endpoints via HTTP requests. While the module docstring mentions image and video generation, there is no explicit user-facing warning, prompt, or logging around the upload of local media content, which can affect privacy-sensitive data handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The module docstring and CLI description/help text present the skill exclusively in Chinese, which can impose a language requirement on users without opt-in. Under the policy, forcing a specific language is a natural-language policy violation unless the skill offers a language choice or clearly justifies a region-specific constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

User-facing natural-language strings in the module docstring, argument descriptions, and error messages are presented only in Chinese, with no indication that the user can choose another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

The code performs an external HTTP POST to a third-party endpoint with user-controlled data and then processes returned account credentials. External transmission is expected for this tool's purpose, but in a security review it remains a real issue because it creates a trust boundary crossing, sends data off-host, and can provision credentials from a remote service without additional verification or user acknowledgment.

Content

Scanner excerpt · scripts/aoment_register.py (reported line 31)May include surrounding context.

python
url = f"{api_base}{REGISTER_ENDPOINT}"
    payload = {"nickname": nickname}

    resp = requests.post(url, json=payload, timeout=TIMEOUT)
    resp.raise_for_status()
    return resp.json()

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script sends a user-supplied nickname to an external service to create an account and retrieve an API key, but it provides no meaningful warning, consent prompt, or disclosure at execution time about the outbound registration. In an agent/skill context, silent external transmission and account creation can surprise users and lead to unintended data sharing or third-party account linkage.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · LICENSE.md (reported line 6)May include surrounding context.

md
Powered By Longfor.AuraSpace

LICENSE:
 This skill and its related documentation are protected by license terms. Unless otherwise permitted by applicable law or expressly authorized in writing, no individual or entity may use the skill beyond the scope expressly granted by the license. Without permission, the skill may not be copied, distributed, resold, reverse engineered, or used for any purpose outside the authorized scope. The skill is provided "as is", without warranties of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement. To the maximum extent permitted by law, the licensor shall not be liable for any loss resulting from the use or inability to use this skill.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · LICENSE.md (reported line 6)May include surrounding context.

md
Powered By Longfor.AuraSpace

LICENSE:
 This skill and its related documentation are protected by license terms. Unless otherwise permitted by applicable law or expressly authorized in writing, no individual or entity may use the skill beyond the scope expressly granted by the license. Without permission, the skill may not be copied, distributed, resold, reverse engineered, or used for any purpose outside the authorized scope. The skill is provided "as is", without warranties of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement. To the maximum extent permitted by law, the licensor shall not be liable for any loss resulting from the use or inability to use this skill.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The docstring states that the client calls the dedicated skill API endpoint only. In addition to the HD repair endpoint, the code performs a GET request to /api/skills/aoment-image-video/version before execution, which is a distinct endpoint and contradicts that statement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

When --image is a URL, the script silently fetches that remote resource, which can cause unintended network access to attacker-controlled or internal endpoints if a user passes an untrusted URL. In an agent skill context, this matters more because agent workflows may pass URLs programmatically, making SSRF-like access, metadata service probing, or unreviewed outbound requests easier to trigger.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The CLI help text explicitly says only image-hd-repair is supported, implying the model is fixed or validated. However, the implementation simply forwards args.model in the request body without enforcing that value, so the documented intent does not match actual behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The script requires an API key and sends it as a Bearer token in outbound HTTP requests, but provides no explicit warning beyond the bare argument label. For code-file warning checks, access to sensitive credentials should have some visible disclosure, especially when combined with remote network transmission.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.