Back to skill

Security audit

Phosor AI

Security checks for vulnerabilities and agentic risk

Overview

This media-generation skill needs review because flawed connection safeguards can expose your API key and selected uploads.

Prefer a corrected version before supplying a valuable API key: destination checks should validate exact hostnames, redirects should protect credentials, and saved-key reuse should be disclosed. Prompts and selected media go to Phosor, generation spends credits, and local tracking retains short text snippets. Transport checks used synthetic data without network access; hosted-service behavior and data retention were not verified.

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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (59)

Tainted flow: 'req' from os.environ.get (line 696, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
97% confidence
Finding

Sending the API key to the intended service is expected, but the destination safeguards are flawed: the localhost prefix check also accepts an external address such as http://localhost.attacker.example without explicit HTTP opt-in. If an attacker induces that base-URL configuration, requests disclose the automatically resolved API key and submitted data over HTTP; default urllib redirects can also forward the custom X-API-Key header across origins.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 699)May include surrounding context.

python
req = Request(url, data=body, headers=headers, method=method)

        try:
            with urlopen(req, timeout=120) as resp:
                raw = resp.read().decode("utf-8")
                return json.loads(raw) if raw else {}
        except HTTPError as e:

Tainted flow: 'req' from os.environ.get (line 754, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
97% confidence
Finding

Uploading a user-selected image with authentication is legitimate for this skill, so the environment-to-network flow alone is not evidence of exfiltration. However, this upload uses the same bypassable localhost prefix validation and default redirect handling, allowing an attacker-influenced base URL to receive the API key and selected file, while cross-origin redirects can leak the custom authentication header.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 757)May include surrounding context.

python
req = Request(url, data=body, headers=headers, method="POST")

        try:
            with urlopen(req, timeout=300) as resp:
                raw = resp.read().decode("utf-8")
                return json.loads(raw) if raw else {}
        except HTTPError as e:

Tainted flow: 'req' from os.environ.get (line 868, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
97% confidence
Finding

Authenticated LoRA uploads are part of the advertised functionality, but this separate upload implementation inherits the same unsafe destination validation and redirect behavior. With an attacker-influenced base URL that passes the localhost prefix check, both selected model files and the API key can be sent to an external HTTP host; cross-origin redirects additionally risk disclosure of X-API-Key.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 870)May include surrounding context.

python
req = Request(url, data=body, headers=headers, method="POST")
        try:
            with urlopen(req, timeout=600) as resp:
                raw = resp.read().decode("utf-8")
                return json.loads(raw) if raw else {}
        except HTTPError as e:

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The supplied commands explicitly implement audio-driven speech-to-video generation with a different model family. The description's references to speech and Phosor API use do not clearly disclose this distinct video-generation capability. Uploading the reference image is a supporting implementation detail, not a separate mismatch.

Content

No source excerpt is available for this finding.

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
The CLI script is at `scripts/phosor_client.py`. All commands output JSON to stdout.

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py --api-key <your-key> check-key

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "A cat walking on a beach at sunset" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "A cat walking on a beach at sunset" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py upload-image /path/to/first-frame.jpg

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "The person starts dancing" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "A cat walking on a beach at sunset" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py status <request_id>

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py result <request_id>

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py upload-image /path/to/photo.jpg

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "The person in the photo starts dancing" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "A futuristic city skyline at dusk" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "A futuristic city skyline at dusk" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py status <request_id>

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py result <request_id>

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py upload-image /path/to/photo.jpg

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit "Transform into oil painting style" \

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py upload-image /path/to/ref1.jpg

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py upload-image /path/to/ref2.jpg

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/phosor_client.py submit \