Back to skill

Security audit

Super Api

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only API reference skill with some credential-handling examples that users should apply carefully.

Use this as reference material, not as commands to run blindly. Prefer header-based authentication, use scoped and revocable keys, avoid putting real credentials in URLs or shared shell history, and confirm before running examples that create, delete, charge, post, or modify account data.

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

T09 · Insecure Skill Coding Practices

Warning
Location
apis/crm.md:480
Finding

API Key Exposure Through a Deprecated URL Query Parameter

Content
View full analysis

Vulnerability Details

File Location: apis/crm.md, lines 480–488
Vulnerability Type: Credential exposure through a URL query parameter
Risk Level: Medium

Vulnerable Code

bash
## Authentication
API key via header or query parameter.

```bash
curl https://api.apollo.io/api/v1/auth/health \
  -H "X-Api-Key: $APOLLO_API_KEY"

# Or via query param (deprecated)
curl "https://api.apollo.io/api/v1/auth/health?api_key=$APOLLO_API_KEY"
text

### Technical Analysis

The deprecated example expands the live `APOLLO_API_KEY` environment variable directly into a URL. Sensitive values embedded in URLs can be retained in shell history, command-line audit records, process-monitoring output, HTTP proxy and gateway logs, provider access logs, observability platforms, and debugging traces.

This example is unnecessary because the same section already provides the safer `X-Api-Key` header authentication method. It also contradicts the project's guidance in `auth.md`, which explicitly states that API keys in URLs may be cached by proxies or CDNs and exposed through logs.

The request uses HTTPS, which protects the key in transit against passive network interception, but TLS does not prevent disclosure through endpoint, intermediary, or local command logging.

### Attack Path

1. A user exports a valid Apollo API key as `APOLLO_API_KEY`.
2. The user copies and executes the deprecated query-parameter example.
3. The shell expands `$APOLLO_API_KEY`, placing the real credential in the command URL.
4. The URL is retained in one or more local, intermediary, observability, or provider logging systems.
5. An attacker or unauthorized operator with access to those records extracts the key.
6. The attacker submits authenticated requests to Apollo using the exposed key.
7. Access continues until the key expires, is revoked, or is rotated.

### Impact Assessment

An exposed key can grant unauthorized access to Apollo resources and operations permitted by that key. Th
...[truncated 419 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the deprecated query-parameter authentication example entirely.
  2. Document only header-based authentication:
bash
curl https://api.apollo.io/api/v1/auth/health \
  -H "X-Api-Key: $APOLLO_API_KEY"
  1. Add an explicit warning that credentials must not be placed in URLs because URLs are commonly logged and cached.
  2. Recommend scoped, least-privilege API keys rather than broadly privileged account keys.
  3. Recommend immediate rotation if a real key has been used in the deprecated example or exposed in logs.
  4. Review and sanitize shell history, proxy logs, CI logs, monitoring records, and debugging traces that may contain expanded query-string credentials.
  5. Ensure examples and operational tooling redact sensitive query parameters and authentication headers from logs.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (748)

Prompt Exfiltration via Tool

High
Category
System Prompt Leakage
Confidence
80% confidence
Finding

Skill contains patterns that exfiltrate system prompts or internal instructions via tool calls (file writes, network requests, logging).

Content

Scanner excerpt · apis/ai-ml.md (reported line 667)May include surrounding context.

md
- `max_new_tokens` - Max tokens to generate
- `temperature` - Randomness (0-1)
- `top_p` - Nucleus sampling
- `return_full_text` - Include prompt in response
- `wait_for_model` - Wait if model loading

## Rate Limits

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/business.md (reported line 21)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/payments.md (reported line 127)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/payments.md (reported line 132)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/social.md (reported line 111)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/social.md (reported line 367)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/social.md (reported line 527)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/support.md (reported line 295)May include surrounding context.

Authentication

bash
# Admin API (access token)
curl "https://{store}.myshopify.com/admin/api/2024-01/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 198)May include surrounding context.

https://api.bitbucket.org/2.0

Authentication

App passwords, OAuth 2.0, or repository/workspace access tokens.

bash
# Using App Password (Basic Auth)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/social.md (reported line 472)May include surrounding context.

https://api.bitbucket.org/2.0

Authentication

App passwords, OAuth 2.0, or repository/workspace access tokens.

bash
# Using App Password (Basic Auth)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 1167)May include surrounding context.

md
## Links
- [Docs](https://docs.launchdarkly.com/)
- [API Reference](https://apidocs.launchdarkly.com/)
- [API Access Tokens](https://docs.launchdarkly.com/home/account-security/api-access-tokens)
# Split (Harness Feature Flags)

Feature flags and experimentation platform (acquired by Harness).

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

The documentation explicitly recommends passing the Mapbox access token as a query parameter, which increases the chance the credential will be exposed in browser history, intermediary logs, analytics, referrer headers, and shared shell histories. Even though the example uses a placeholder token, prescribing this pattern can lead downstream users to implement weaker credential handling and accidental token leakage.

Content

Scanner excerpt · apis/geo.md (reported line 80)May include surrounding context.

text

## Authentication
Access token as query parameter.

```bash
curl -X GET "https://api.mapbox.com/geocoding/v5/mapbox.places/Los%20Angeles.json?access_token=YOUR_ACCESS_TOKEN"

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 254)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 255)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 1157)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/geo.md (reported line 123)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/marketing.md (reported line 98)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/media.md (reported line 593)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/media.md (reported line 756)May include surrounding context.

md
## Gotchas
- **OAuth only** — no API keys for server-to-server auth
- Access tokens expire in 2 hours — use refresh tokens
- `orgId` in token response identifies the customer's organization
- Contact attributes are flexible key-value pairs
- Conversation `status`: `open`, `closed`, `pending`

Credential Access

High
Category
Privilege Escalation
Confidence
97% confidence
Finding

The Reddit section includes a password-grant example using grant_type=password together with CLIENT_SECRET, username, and password. Even though placeholders are used, this pattern encourages direct handling of end-user passwords and client secrets in copied commands, which is high-risk in a skill because users may substitute real credentials into shell history, logs, process lists, or shared terminals.

Content

Scanner excerpt · apis/social.md (reported line 396)May include surrounding context.

OAuth 2.0. Supports "script" (personal use), "web app", and "installed app" types.

bash
# Get access token
curl -X POST "https://www.reddit.com/api/v1/access_token" \
  -u "CLIENT_ID:CLIENT_SECRET" \
  -d "grant_type=password&username=USER&password=PASS"

Context Leakage

High
Category
Data Exfiltration
Confidence
85% confidence
Finding

Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.

Content

Scanner excerpt · apis/social.md (reported line 517)May include surrounding context.

-H "Client-Id: {CLIENT_ID}"

text

### Send Chat Message
```bash
curl -X POST "https://api.twitch.tv/helix/chat/messages" \
  -H "Authorization: Bearer {USER_ACCESS_TOKEN}" \

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 1103)May include surrounding context.

md
- `state` parameter ignorado = vulnerable a CSRF — siempre validar
- Token refresh sin mutex = race condition, múltiples refreshes simultáneos
- Access token expirado + refresh token expirado = usuario debe re-login (no solo refresh)
- `offline_access` scope olvidado = no hay refresh token

## JWT

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/payments.md (reported line 190)May include surrounding context.

md
- `state` parameter ignorado = vulnerable a CSRF — siempre validar
- Token refresh sin mutex = race condition, múltiples refreshes simultáneos
- Access token expirado + refresh token expirado = usuario debe re-login (no solo refresh)
- `offline_access` scope olvidado = no hay refresh token

## JWT

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · auth.md (reported line 14)May include surrounding context.

md
- `state` parameter ignorado = vulnerable a CSRF — siempre validar
- Token refresh sin mutex = race condition, múltiples refreshes simultáneos
- Access token expirado + refresh token expirado = usuario debe re-login (no solo refresh)
- `offline_access` scope olvidado = no hay refresh token

## JWT

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · apis/developer.md (reported line 128)May include surrounding context.

md
| Type | Suffix |
|------|--------|
| API Key | `_API_KEY` |
| Access Token | `_TOKEN` |
| Secret Key | `_SECRET` |
| Client ID | `_CLIENT_ID` |
| Client Secret | `_CLIENT_SECRET` |

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
apis/media.md:207

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
apis/payments.md:423

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
apis/realtime.md:463