Back to skill

Security audit

Phosor AI

Security checks for vulnerabilities and agentic risk

Overview

The skill fits its advertised purpose, but verified network safeguards have flaws that could expose your API key.

Prefer a corrected client that restricts authenticated redirects and validates exact localhost hosts. Use a limited API key, upload only material you intend to share with Phosor, and confirm generation costs. Keeping the default HTTPS endpoint avoids the hostname bypass but does not resolve redirect handling.

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 (58)

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

Critical
Category
Data Flow
Confidence
96% confidence
Finding

Sending the API key to the intended Phosor endpoint is legitimate, so the environment-to-network flow alone is not exfiltration. However, default urllib redirect handling can forward the custom X-API-Key header to a different origin or an HTTP destination; additionally, the localhost startswith check incorrectly accepts hosts such as http://localhost.attacker.example without explicit HTTP opt-in. Exploitation requires influence over a redirect or the configured endpoint and could expose the generation account's credentials and submitted data.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 686)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 741, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
96% confidence
Finding

Uploading a user-selected image with an API key is expected for this skill, not inherently malicious. The upload nevertheless uses default redirect handling, which can carry X-API-Key to an untrusted origin, and inherits the constructor's overly broad localhost HTTP exception. An attacker influencing redirects or endpoint configuration could obtain the key; a misleading HTTP endpoint could also expose the uploaded file in transit.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 744)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 855, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
96% confidence
Finding

Authenticated transmission of selected LoRA files matches the advertised functionality, so the static CRITICAL classification overstates the ordinary data flow. A concrete credential-disclosure risk remains because default urllib redirects preserve custom authentication headers across origins, and the shared base-URL check accepts non-loopback hosts beginning with localhost or 127.0.0.1 as HTTP exceptions. Exploitation requires redirect or configuration influence and can expose the API key, while an improperly accepted HTTP destination can additionally expose model files.

Content

Scanner excerpt · scripts/phosor_client.py (reported line 857)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:

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 17)May include surrounding context.

md
For detailed API endpoints, parameters, pricing, and limits, see [references/api.md](references/api.md).

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 309)May include surrounding context.

md
e quota, not per-frame). Full endpoint/parameter reference: [references/api.md](references/api.md#image-studio-product--model-photography--separate-product-surf

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 342)May include surrounding context.

md
command — use `studio-call` with the exact field names from [references/api.md](references/api.md#image-studio-product--model-photography--separate-product-surf

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 29)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 36)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 53)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 62)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 64)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 80)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 98)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 102)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 105)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 114)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 118)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 126)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 130)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 134)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 135)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 145)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 149)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 160)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 161)May include surrounding context.

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