Back to skill

Security audit

Colors CC

Security checks for vulnerabilities and agentic risk

Overview

This skill is a clearly documented remote color and placeholder API helper, but its generated URLs can contact a third-party service and expose URL details.

Install only if you are comfortable with generated placeholders and examples using colors-cc.top as a third-party remote service. Do not include confidential text or internal identifiers in placeholder URLs, and disable attribution or use local/self-hosted assets when output integrity, privacy, or offline use matters.

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)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:17
Finding
Mandatory Third-Party Embedding Causes Branded Output Injection and Request Disclosure<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 17 and 35; lines 154–163 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code From `SKILL.md`, line 17: ```markdown - **Inline Images**: Always embed SVG placeholders directly using `<img>` or Markdown `![alt](url)`. ``` From `SKILL.md`, line 35: ```markdown - `attribution`: Include branding watermark (default: true). Set to `false` or `0` to disable. When enabled, adds a subtle "colors-cc.top" watermark (15% opacity) in bottom-right corner and HTML comment for viral sharing. ``` From `SKILL.md`, lines 154–163: ```markdown ### ✅ Tip: Disable Attribution for Internal Tools By default, all SVG placeholders include a subtle branding watermark for viral sharing. Disable it for internal tools: ``` // With attribution (default - recommended for public-facing content) https://api.colors-cc.top/placeholder?w=800&h=400 // Without attribution (for internal use) https://api.colors-cc.top/placeholder?w=800&h=400&attribution=false ``` ``` ### Technical Analysis The Skill uses an unconditional instruction—“Always embed”—to direct the agent to place resources from `api.colors-cc.top` into generated output. The remote SVG endpoint enables attribution by default and deliberately adds a third-party watermark and an HTML comment intended for “viral sharing.” This changes the agent's output behavior beyond the underlying color and placeholder-generation task. Rather than presenting external embedding as an optional integration requiring user consent, the Skill makes it the default mandatory behavior and recommends retaining third-party branding in public-facing content. Because the SVG is rendered from a remote server, its effective image content is controlled by that server at request time rather than being fully represented by the reviewed Skill package. Rendering also sends the service the URL query parameters and ordinary HTTP request metadata. If u ...[truncated 2186 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the unconditional “Always embed” directive. Treat remote embedding as an optional operation requiring explicit user approval. 2. Change attribution to disabled by default and require informed opt-in before adding branding or promotional comments. 3. Remove all “viral sharing” behavior from generated assets and documentation. 4. Clearly disclose that rendering a remote SVG sends URL parameters and request metadata to a third-party service. 5. Never place confidential, personal, authentication-related, or otherwise sensitive text in remote image URLs. 6. Validate and URL-encode all user-controlled query parameters using a standard URL construction API rather than manual string interpolation. 7. Prefer locally generated SVG content, trusted first-party hosting, or self-contained data URLs where the execution environment permits them. 8. If remote resources must be supported, allow users to review the destination domain and complete URL before inclusion. 9. Recommend restrictive content security policies for generated web pages, including an explicit `img-src` allowlist. 10. Document that remote assets can change independently of the reviewed Skill and should not be used where output integrity, confidentiality, or offline availability is required. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (23)

External Transmission

Medium
Category
Data Exfiltration
Content
### 1. SVG Placeholders with Animation Effects
Generate dynamic, lightweight placeholders for UI mockups with various gradient and animation effects.
- **Endpoint**: `https://api.colors-cc.top/placeholder`
- **Params**: 
  - `w`: Width in pixels (default: 800, range: 50-4000)
  - `h`: Height in pixels (default: 400, range: 50-4000)
Confidence
92% confidence
Finding
This endpoint directs the agent to use an external service for placeholder generation, which causes prompt-derived or user-supplied content in query parameters to leave the local trust boundary. Because the skill markets itself for AI agents and provides ready-to-use URLs, it normalizes silent data transmission to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
- `attribution`: Include branding watermark (default: true). Set to `false` or `0` to disable. When enabled, adds a subtle "colors-cc.top" watermark (15% opacity) in bottom-right corner and HTML comment for viral sharing.
  - `start` / `end`: (Legacy) Start and end gradient colors as hex. Prefer `palette`.
- **Examples**: 
  - **Static**: `<img src="https://api.colors-cc.top/placeholder?w=1200&h=630&text=Hero+Banner&palette=%23F06292,%2364B5F6" alt="Hero">`
  - **Holographic**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=holographic&palette=%2300FF41,%2300B8FF&speed=5" alt="Holo">`
  - **Mesh**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=mesh&palette=%23FFD6A5,%23FFADAD,%23E2A0FF&speed=8" alt="Mesh">`
- **Response**: SVG image with `Cache-Control: public, max-age=31536000, immutable`
Confidence
87% confidence
Finding
The example embeds remote image URLs directly, which will trigger client-side requests to a third-party host and expose usage metadata and URL parameters. If agents populate these URLs from user context, private text or design details may be disclosed externally.

External Transmission

Medium
Category
Data Exfiltration
Content
- `start` / `end`: (Legacy) Start and end gradient colors as hex. Prefer `palette`.
- **Examples**: 
  - **Static**: `<img src="https://api.colors-cc.top/placeholder?w=1200&h=630&text=Hero+Banner&palette=%23F06292,%2364B5F6" alt="Hero">`
  - **Holographic**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=holographic&palette=%2300FF41,%2300B8FF&speed=5" alt="Holo">`
  - **Mesh**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=mesh&palette=%23FFD6A5,%23FFADAD,%23E2A0FF&speed=8" alt="Mesh">`
- **Response**: SVG image with `Cache-Control: public, max-age=31536000, immutable`
Confidence
87% confidence
Finding
This example continues encouraging remote asset generation without any security boundary notice. In agent workflows, such examples are likely to be copied verbatim, leading to unreviewed outbound requests containing user-controlled parameters.

External Transmission

Medium
Category
Data Exfiltration
Content
- **Examples**: 
  - **Static**: `<img src="https://api.colors-cc.top/placeholder?w=1200&h=630&text=Hero+Banner&palette=%23F06292,%2364B5F6" alt="Hero">`
  - **Holographic**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=holographic&palette=%2300FF41,%2300B8FF&speed=5" alt="Holo">`
  - **Mesh**: `<img src="https://api.colors-cc.top/placeholder?w=800&h=400&effect=mesh&palette=%23FFD6A5,%23FFADAD,%23E2A0FF&speed=8" alt="Mesh">`
- **Response**: SVG image with `Cache-Control: public, max-age=31536000, immutable`

### 2. Fluid Animated Placeholders (Alias)
Confidence
87% confidence
Finding
Providing multiple inline examples of remote image usage increases the likelihood that agents will automatically emit third-party URLs in responses. That creates a recurring privacy and telemetry leak channel through both query strings and downstream client fetches.

External Transmission

Medium
Category
Data Exfiltration
Content
### 2. Fluid Animated Placeholders (Alias)
Generate dynamic SVG gradients with smooth color transitions and animations.
- **Endpoint**: `https://api.colors-cc.top/fluid-placeholder`
- **Params**: 
  - `w`, `h`, `text`, `speed`, `attribution` (same as above)
  - `stops` or `palette`: Comma-separated HEX colors for gradient (default: random, range: 2-10 colors)
Confidence
91% confidence
Finding
The fluid-placeholder endpoint is another explicit instruction to send externally supplied values to a remote service. Even if the content is only colors and text, this is still external transmission initiated by the skill and should be treated as a real egress risk in agent environments.

External Transmission

Medium
Category
Data Exfiltration
Content
- **Params**: 
  - `w`, `h`, `text`, `speed`, `attribution` (same as above)
  - `stops` or `palette`: Comma-separated HEX colors for gradient (default: random, range: 2-10 colors)
- **Example**: `<img src="https://api.colors-cc.top/fluid-placeholder?w=1200&h=400&stops=%23FFD6A5,%23FFADAD,%23E2A0FF&speed=8&text=Animated+Hero" alt="Warm Gradient">`
- **Response**: Animated SVG with smooth color transitions and `Cache-Control: public, max-age=31536000, immutable`

### 3. Random Colors
Confidence
86% confidence
Finding
The example URL for the animated placeholder endpoint demonstrates direct remote embedding, which leaks request details to the third-party service and any intermediaries observing URLs. Agents following this pattern may unintentionally disclose internal labels or mock content.

External Transmission

Medium
Category
Data Exfiltration
Content
### 3. Random Colors
Get a random HEX and RGB color with generation timestamp.
- **Endpoint**: `GET https://api.colors-cc.top/random`
- **Returns**: `{"hex": "#A1B2C3", "rgb": "rgb(161, 178, 195)", "timestamp": "2024-03-12T10:30:00.000Z"}`
- **Example**: Fetch this endpoint when you need random colors for mock data or UI components.
Confidence
84% confidence
Finding
This endpoint fetches random colors from a third-party service. The risk is lower because the request itself may contain no sensitive payload, but it still establishes unnecessary outbound connectivity and exposes usage metadata from agent actions.

External Transmission

Medium
Category
Data Exfiltration
Content
### 4. Curated Theme Palettes
Fetch high-quality color sets for design inspiration.
- **Endpoint**: `GET https://api.colors-cc.top/palette?theme={theme_name}`
- **Themes**: `cyberpunk`, `vaporwave`, `retro`, `monochrome`
- **Returns**: `{"theme": "cyberpunk", "colors": ["#FCEE09", "#00FF41", ...], "count": 5}`
- **Example**: `fetch('https://api.colors-cc.top/palette?theme=vaporwave')`
Confidence
90% confidence
Finding
The palette endpoint instructs agents to fetch third-party data without any warning or trust discussion. While the transmitted input is limited to theme names, using this in agent pipelines still leaks activity patterns and increases reliance on an external service.

External Transmission

Medium
Category
Data Exfiltration
Content
- **Endpoint**: `GET https://api.colors-cc.top/palette?theme={theme_name}`
- **Themes**: `cyberpunk`, `vaporwave`, `retro`, `monochrome`
- **Returns**: `{"theme": "cyberpunk", "colors": ["#FCEE09", "#00FF41", ...], "count": 5}`
- **Example**: `fetch('https://api.colors-cc.top/palette?theme=vaporwave')`

### 5. Universal Color Converter
Stateless conversion between HEX, RGB, HSL, and CMYK formats.
Confidence
90% confidence
Finding
The explicit fetch example makes it likely agents or developers will copy code that silently contacts the remote service. This turns external transmission into default behavior despite the function being easily replaceable with local static data.

External Transmission

Medium
Category
Data Exfiltration
Content
### 5. Universal Color Converter
Stateless conversion between HEX, RGB, HSL, and CMYK formats.
- **Endpoint**: `GET https://api.colors-cc.top/convert?hex={hex}|rgb={rgb}|hsl={hsl}|cmyk={cmyk}`
- **Params**: Provide ONE of: `hex`, `rgb`, `hsl`, or `cmyk`
- **Returns**: `{"hex": "#FF5733", "rgb": "rgb(255, 87, 51)", "hsl": "hsl(10, 100%, 60%)", "cmyk": "cmyk(0%, 66%, 80%, 0%)"}`
- **Example**: `https://api.colors-cc.top/convert?hex=%23FF5733`
Confidence
94% confidence
Finding
The convert endpoint can receive raw user-supplied color strings and sends them to a third party. Although color values seem low sensitivity, in practice such parameters can include copied snippets or malformed content from prompts, making this an unnecessary egress path for data that can be transformed locally.

External Transmission

Medium
Category
Data Exfiltration
Content
- **Endpoint**: `GET https://api.colors-cc.top/convert?hex={hex}|rgb={rgb}|hsl={hsl}|cmyk={cmyk}`
- **Params**: Provide ONE of: `hex`, `rgb`, `hsl`, or `cmyk`
- **Returns**: `{"hex": "#FF5733", "rgb": "rgb(255, 87, 51)", "hsl": "hsl(10, 100%, 60%)", "cmyk": "cmyk(0%, 66%, 80%, 0%)"}`
- **Example**: `https://api.colors-cc.top/convert?hex=%23FF5733`
- **Error**: Returns `{"error": "Invalid color format"}` with status 400 if input is invalid

### 6. CSS Color Names Directory
Confidence
93% confidence
Finding
The example normalizes passing conversion data via a URL query string to an external domain. Query strings are particularly poor for privacy because they are commonly logged by clients, proxies, and servers, increasing exposure of user-supplied content.

External Transmission

Medium
Category
Data Exfiltration
Content
### 6. CSS Color Names Directory
Get all standard CSS color names mapped to their HEX values (~140 colors).
- **Endpoint**: `GET https://api.colors-cc.top/all-names`
- **Returns**: `{"AliceBlue": "#F0F8FF", "AntiqueWhite": "#FAEBD7", "Tomato": "#FF6347", ...}`
- **Example**: Use this to look up named colors like 'tomato' → '#FF6347'
Confidence
82% confidence
Finding
This endpoint exposes only a color-name directory, so the transmitted request payload is minimal. However, it still causes unannounced third-party network access for data that could be bundled locally, making it a genuine though lower-severity egress issue.

External Transmission

Medium
Category
Data Exfiltration
Content
```html
<section class="hero">
  <!-- Animated hero banner with text -->
  <img src="https://api.colors-cc.top/placeholder?w=1200&h=600&text=Hero+Section&effect=mesh&palette=%23FFD6A5,%23FFADAD,%23E2A0FF&speed=10" alt="Hero">
</section>
<div class="features">
  <!-- Static placeholder images -->
Confidence
88% confidence
Finding
The landing-page example encourages direct third-party image embedding with user-visible content in query parameters. This is risky because generated page output can cause every viewer's client to contact the external host, multiplying metadata leakage beyond the initial agent request.

External Transmission

Medium
Category
Data Exfiltration
Content
</section>
<div class="features">
  <!-- Static placeholder images -->
  <img src="https://api.colors-cc.top/placeholder?w=400&h=300&text=Feature+1&palette=%23F06292,%2364B5F6" alt="Feature 1">
  <img src="https://api.colors-cc.top/placeholder?w=400&h=300&text=Feature+2&palette=%234DB6AC,%2381C784" alt="Feature 2">
</div>
```
Confidence
88% confidence
Finding
This sample continues the same pattern of remote placeholder embedding for page assets. In aggregate, it increases the chance that a generated artifact contains multiple external beacons to the same domain without user awareness.

External Transmission

Medium
Category
Data Exfiltration
Content
<div class="features">
  <!-- Static placeholder images -->
  <img src="https://api.colors-cc.top/placeholder?w=400&h=300&text=Feature+1&palette=%23F06292,%2364B5F6" alt="Feature 1">
  <img src="https://api.colors-cc.top/placeholder?w=400&h=300&text=Feature+2&palette=%234DB6AC,%2381C784" alt="Feature 2">
</div>
```
Confidence
88% confidence
Finding
Another direct remote image example compounds the same egress issue by encouraging repetitive third-party asset inclusion. Multiple calls increase observability of project structure and user behavior to the external service.

External Transmission

Medium
Category
Data Exfiltration
Content
### Use Case 2: Generating Mock Data with Colors
```javascript
const palette = await fetch('https://api.colors-cc.top/palette?theme=vaporwave')
  .then(r => r.json())

const mockData = palette.colors.map((color, i) => ({
Confidence
90% confidence
Finding
The JavaScript fetch example operationalizes third-party calls in application code, making silent external transmission an implementation recommendation rather than just a reference. This is more dangerous in agent-assisted coding because such code may be inserted directly into user projects.

External Transmission

Medium
Category
Data Exfiltration
Content
id: i,
  name: `Item ${i+1}`,
  color: color,
  thumbnail: `https://api.colors-cc.top/placeholder?w=200&h=200&palette=${color.replace('#', '%23')},%23000000`
}))
```
Confidence
87% confidence
Finding
This code constructs externally fetched thumbnails from palette data and embeds them as remote URLs. That not only leaks parameters but also creates persistent third-party dependencies in generated mock data and UI content.

External Transmission

Medium
Category
Data Exfiltration
Content
### Use Case 3: Color Picker Component
```javascript
async function getRandomColor() {
  const res = await fetch('https://api.colors-cc.top/random')
  const data = await res.json()
  return data.hex
}
Confidence
84% confidence
Finding
Fetching a random color from a third party is low sensitivity, but it still performs unnecessary outbound communication and teaches agents to rely on external services for trivial local functionality. This enlarges the attack surface and leaks operational metadata.

External Transmission

Medium
Category
Data Exfiltration
Content
### Use Case 4: Universal Color Converter
```javascript
// Convert any color format to all formats
const result = await fetch('https://api.colors-cc.top/convert?hsl=hsl(200,50%,50%)')
  .then(r => r.json())
console.log(result.hex) // #4099BF
```
Confidence
92% confidence
Finding
The converter fetch example sends user-specified content to an external service and encourages embedding that pattern into code. Because conversion is deterministic and easy to implement locally, the remote call is an unnecessary egress vector.

External Transmission

Medium
Category
Data Exfiltration
Content
By default, all SVG placeholders include a subtle branding watermark for viral sharing. Disable it for internal tools:
```
// With attribution (default - recommended for public-facing content)
https://api.colors-cc.top/placeholder?w=800&h=400

// Without attribution (for internal use)
https://api.colors-cc.top/placeholder?w=800&h=400&attribution=false
Confidence
78% confidence
Finding
This section promotes the placeholder endpoint again and discusses attribution behavior, reinforcing use of a third-party asset host. The security issue is still external transmission, though the line itself is more contextual than operational.

External Transmission

Medium
Category
Data Exfiltration
Content
https://api.colors-cc.top/placeholder?w=800&h=400

// Without attribution (for internal use)
https://api.colors-cc.top/placeholder?w=800&h=400&attribution=false
```

### ❌ Mistake 2: Fetching SVG and Re-processing
Confidence
82% confidence
Finding
The explicit no-attribution URL is another ready-to-use remote endpoint example. It is a real but lower-severity instance of the same external transmission pattern because it encourages silent third-party resource use in internal contexts.

External Transmission

Medium
Category
Data Exfiltration
Content
const encoded = btoa(svg)

// GOOD - Use URL directly
<img src="https://api.colors-cc.top/placeholder?w=800&h=400" alt="Direct">
```

### ❌ Mistake 3: Invalid Dimensions
Confidence
86% confidence
Finding
The 'GOOD' example instructs direct use of a remote image URL, which may avoid unnecessary fetching by the agent but still causes third-party requests when rendered. In generated outputs, this can create hidden external dependencies and disclose viewer/requester metadata.

Missing User Warnings

Low
Confidence
89% confidence
Finding
The skill repeatedly instructs agents to call third-party endpoints but does not warn that these actions transmit user-provided values such as text, palette choices, and color data to an external service. In an agent context, even seemingly harmless UI data can contain sensitive project names, mock content, or internal design information, creating an avoidable data egress/privacy risk.

Static analysis

No suspicious patterns detected.