Back to skill

Security audit

contentforge-api

Security checks for vulnerabilities and agentic risk

Overview

This skill is a normal external content-generation integration, but it can send your email and writing inputs to a third-party service with weak consent and scoping instructions.

Review this before installing if you handle private drafts, customer data, business plans, or regulated information. Only use it when you intentionally want ContentForge involved, confirm what will be sent, avoid secrets or sensitive content, and store any API key in an approved secret store rather than prompts, files, or logs.

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
Findings (1)

other

Warning
Location
SKILL.md:17
Finding
External Disclosure of Personal and Potentially Confidential Content Without Explicit Consent Controls<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:17-26`, `SKILL.md:43-91`, and `SKILL.md:145-163` **Vulnerability Type**: Privacy and external data disclosure **Risk Level**: Medium ### Vulnerable Code Snippets The skill directs the agent to collect the user's email address and transmit it to an external service: ```markdown ### Step 1: Get User's Email Ask the user for their email address to create a free ContentForge account. ### Step 2: Sign Up via API ```bash curl -X POST https://contentforge.vosscg.com/v1/keys \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com"}' ``` ``` It also directs the agent to submit user-provided content-generation inputs to the external API: ```bash curl -X POST https://contentforge.vosscg.com/v1/generate \ -H "X-API-Key: cf_1234567890abcdef" \ -H "Content-Type: application/json" \ -d '{ "template": "blog_post", "inputs": { "topic": "AI in Marketing", "tone": "professional", "length": "medium", "keywords": ["artificial intelligence", "marketing automation", "personalization"] } }' ``` The prescribed agent workflow makes external account creation and data submission part of normal invocation: ```bash # 1. Help user get API key curl -X POST https://contentforge.vosscg.com/v1/keys -d '{"email":"user@domain.com"}' # 2. Store the returned API key securely # 3. Generate content based on user request curl -X POST https://contentforge.vosscg.com/v1/generate \ -H "X-API-Key: [USER_API_KEY]" \ -d '{"template":"blog_post", "inputs":{...}}' # 4. Return the generated content to the user ``` ### Technical Analysis The skill's declared functionality legitimately depends on the ContentForge API. However, its instructions cause the agent to collect personally identifiable information and transmit user content to `contentforge.vosscg.com` without requiring an explicit, informed consent step. Generation inputs may contain unpublished articles, product ...[truncated 2391 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require explicit informed consent before transmitting any information: - Name the external service and destination domain. - List the categories of data to be transmitted. - Ask the user to confirm before account creation and again before sending sensitive content. 2. Apply data minimization: - Do not collect an email address unless account creation is necessary and requested. - Send only fields required for the selected template. - Remove secrets, credentials, personal data, customer records, and unrelated context. 3. Add a prominent privacy warning: - Instruct users not to submit regulated, confidential, or proprietary information unless they are authorized to disclose it. - Link to the provider's privacy, retention, deletion, and processing terms. 4. Make external account creation optional: - Avoid treating signup as an automatic prerequisite for every writing request. - Offer a local or no-upload alternative where available. 5. Define secure credential handling: - Store API keys only in an approved secret manager or protected environment variable. - Never place keys in prompts, logs, source files, shell history, or generated content. - Restrict access to the minimum required process. - Support rotation, revocation, and deletion when the integration is no longer used. 6. Add pre-transmission review: - Display the exact payload or a clear summary before sending it. - Allow users to edit, redact, or cancel the request. 7. Document third-party trust assumptions: - Specify transport-security requirements. - Describe expected data retention and account-deletion procedures. - State whether submitted content may be stored or used for model training. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The signup flow instructs the agent to collect the user's email and transmit it to an external service, but it does not require informing the user of that transfer. This creates a privacy and consent issue because personally identifiable information is being sent off-platform without an explicit warning or confirmation step.

External Transmission

Medium
Category
Data Exfiltration
Content
### Step 2: Sign Up via API
```bash
curl -X POST https://contentforge.vosscg.com/v1/keys \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com"}'
```
Confidence
96% confidence
Finding
This line performs an outbound request containing the user's email address to a third-party endpoint. The transmission itself is expected functionality, but in the absence of disclosure and consent safeguards in the skill, it represents a real privacy-sensitive data exfiltration path.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The examples show sending user-provided content inputs directly to the external generation API without warning that prompts, product details, marketing plans, or other text may leave the local environment. In a writing skill, those inputs may easily contain confidential business data, unpublished content, or personal information, making silent transmission risky.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The activation guidance is extremely broad, covering essentially any writing or text-generation request. That can cause the skill to trigger in many ordinary conversations without clearly signaling to the user that their prompts may be routed to a third-party API, increasing the chance of unintended external disclosure of sensitive or proprietary text.