Back to skill

Security audit

Carbium — Solana DeFi Infrastructure

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent Carbium/Solana developer documentation, but it needs Review because it teaches live wallet signing and trading flows with insufficient validation and safety boundaries.

Use this only for deliberate Solana infrastructure or trading work. Keep Carbium keys and wallet keys server-side, prefer header authentication when supported, never let an agent sign or submit transactions automatically, inspect and validate every transaction before signing, and test with unfunded or small-balance wallets before mainnet use.

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

T09 · Insecure Skill Coding Practices

Error
Location
examples/swap-quote/README.md:57
Finding
Remote transactions are signed without validating their instructions<![CDATA[ ## Vulnerability Details **File Location**: `examples/swap-quote/README.md:57-70` **Additional Locations**: `examples/gasless-swap/README.md:46-58`, `examples/swap-bundle/README.md:45-58`, `docs/trading-bots.md:50-65`, `SKILL.md:636-647` **Vulnerability Type**: Blind signing of untrusted serialized Solana transactions **Risk Level**: High ### Vulnerable Code ```typescript if (!quote.txn) { throw new Error("No executable transaction — ensure user_account is set"); } const tx = VersionedTransaction.deserialize( Buffer.from(quote.txn, "base64") ); tx.sign([wallet]); const sig = await connection.sendRawTransaction(tx.serialize(), { maxRetries: 3, }); await connection.confirmTransaction(sig, "confirmed"); console.log("Swap confirmed:", sig); return sig; ``` The same unsafe pattern appears in the other listed locations: a transaction returned by `api.carbium.io` is decoded, signed with the user's wallet, and submitted without locally validating its contents. ### Technical Analysis The serialized transaction is generated by an external service and therefore crosses a trust boundary. Base64 decoding and successful deserialization establish only that the response has the correct wire format; they do not establish that the transaction performs the requested swap. Before signing, the examples do not verify: - Invoked program IDs against an allowlist. - Source and destination token mints. - User token accounts and transfer destinations. - Input amount and minimum output amount. - Fee payer, priority fee, Jito tip, or custom fee recipients. - Unexpected transfer, approval, close-account, or authority-changing instructions. - Address lookup tables and the accounts resolved through them. - Consistency between the displayed quote and the executable transaction. The wallet signature authorizes the transaction message received from the service. Consequently, compromise or malfunction of the transaction-generation service can transform an ordinary quot ...[truncated 1518 chars]
Remediation
<![CDATA[ ## Remediation Suggestions Implement a strict transaction-verification layer before any signing operation: 1. Deserialize the transaction and resolve every static and lookup-table account. 2. Allowlist the exact Solana programs expected for the selected route. 3. Parse every instruction and reject unknown, unsupported, or partially decoded instructions. 4. Verify the signer and fee payer are the expected wallet. 5. Verify source and destination mints, token accounts, recipients, input amount, minimum output, slippage, fees, tips, and fee receivers against the user's approved quote. 6. Reject unexpected native SOL transfers, token approvals, authority changes, account closures, and additional signers. 7. Simulate the transaction and inspect balance changes before signing. Simulation should supplement, not replace, deterministic instruction validation. 8. Display or log a normalized transaction summary for explicit approval in interactive applications. 9. Apply transaction value limits and route-specific policy controls for unattended bots. 10. Fail closed whenever an instruction or account cannot be fully resolved and validated. Apply the same validation helper consistently to all examples and documentation that signs API-generated transactions. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
templates/carbium-setup.ts:23
Finding
API credentials are embedded in request URLs<![CDATA[ ## Vulnerability Details **File Location**: `templates/carbium-setup.ts:23-29` **Additional Locations**: `SKILL.md:101-110,174-177,212,275-278,314,362,382,458,624`, `resources/endpoints-and-auth.md:7-10,32-33`, and multiple examples **Vulnerability Type**: Sensitive credential exposure through URL query parameters **Risk Level**: Medium ### Vulnerable Code ```typescript export const connection = new Connection( `https://rpc.carbium.io/?apiKey=${CARBIUM_RPC_KEY}`, { commitment: "confirmed", wsEndpoint: `wss://wss-rpc.carbium.io/?apiKey=${CARBIUM_RPC_KEY}`, } ); ``` The project repeatedly recommends query-string authentication in forms such as: ```text https://rpc.carbium.io/?apiKey=YOUR_RPC_KEY wss://wss-rpc.carbium.io/?apiKey=YOUR_RPC_KEY wss://grpc.carbium.io/?apiKey=YOUR_RPC_KEY ``` ### Technical Analysis Although HTTPS and WSS encrypt the URL in transit, URLs are frequently copied into logs and telemetry by clients, reverse proxies, load balancers, monitoring systems, exception reporters, and network infrastructure. Query parameters may also appear in diagnostic output or connection error messages. The project documents header authentication as available: ```text X-API-KEY: YOUR_RPC_KEY x-token: YOUR_RPC_KEY ``` Therefore, using the query string for HTTP or other clients that support authentication headers exposes the credential to more subsystems than necessary. This conflicts with least-exposure principles even though sending the credential to Carbium itself is required for the declared functionality. WebSocket libraries do not all support custom headers, particularly browser clients. Query authentication may consequently be required in some deployments, but the documentation presents it as generally recommended rather than as a constrained fallback. ### Attack Path 1. An application constructs an RPC, WebSocket, or gRPC URL containing its Carbium RPC key. 2. A client library, reverse proxy, observability agent, or erro ...[truncated 969 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Use `X-API-KEY` for HTTPS RPC requests and `x-token` for compatible gRPC clients instead of query parameters. 2. Treat query-string authentication as a fallback only where the selected WebSocket client cannot attach a header. 3. Configure proxies, application logs, telemetry, and exception reporting to redact `apiKey`, `X-API-KEY`, and `x-token`. 4. Never print complete endpoint URLs after credentials have been inserted. 5. Apply IP, domain, endpoint, and rate restrictions through the Carbium dashboard. 6. Use separate keys for development, staging, and production. 7. Use short-lived or narrowly scoped credentials if the service adds support for them. 8. Rotate any key that may already have entered logs or telemetry. 9. Update `resources/endpoints-and-auth.md` and `SKILL.md` so header authentication is the preferred method for clients that support it. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
examples/swap-bundle/README.md:63
Finding
Signed bundle transactions are transmitted in a GET query parameter<![CDATA[ ## Vulnerability Details **File Location**: `examples/swap-bundle/README.md:63-71` **Additional Location**: `resources/swap-api-reference.md:93-100` **Vulnerability Type**: Exposure of signed transaction data through URL-based submission **Risk Level**: Medium ### Vulnerable Code ```typescript async function submitBundle(signedBase64: string) { const url = new URL("https://api.carbium.io/api/v1/swap/bundle"); url.searchParams.set("signedTransaction", signedBase64); const res = await fetch(url, { headers: { accept: "application/json", "X-API-KEY": API_KEY }, }); if (!res.ok) throw new Error(`Bundle submission failed: ${res.status}`); return res.json(); } ``` The API reference also defines the submission endpoint as: ```text GET /api/v1/swap/bundle signedTransaction: Base64-encoded signed transaction ``` ### Technical Analysis A signed Solana transaction is placed in the URL query string of a GET request. Unlike an unsigned transaction template, this value is an immediately submit-capable authorization artifact. Full request URLs are more likely than request bodies to be retained by access logs, reverse proxies, observability systems, browser history, or error diagnostics. GET semantics also increase the possibility of caching, prefetching, URL inspection, and accidental replay by intermediary infrastructure. While a Solana transaction is generally protected against indefinite replay by its recent blockhash, disclosure during its validity window may allow another party to submit it before the intended Jito bundle path. That can undermine the expected private or MEV-protected submission route. ### Attack Path 1. The client signs the swap transaction locally. 2. The complete signed transaction is encoded into the `signedTransaction` URL parameter. 3. A proxy, telemetry system, access logger, or other intermediary records or observes the full URL. 4. An attacker with timely access extracts and decodes the signed transaction whil ...[truncated 966 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the GET endpoint with an HTTPS POST endpoint. 2. Put the signed transaction in the POST request body rather than the URL. 3. Use an explicit content type such as `application/json` or `application/octet-stream`. 4. Configure `Cache-Control: no-store` and ensure intermediaries do not cache submission requests or responses. 5. Redact signed transaction payloads from application, proxy, and observability logs. 6. Keep request bodies out of routine production logging. 7. Use a fresh recent blockhash and submit immediately after signing to minimize the replay window. 8. Check transaction and bundle status before retrying. 9. Document that transaction confidentiality is part of the MEV-protection model and must be preserved across the entire submission path. 10. If the legacy API cannot be changed immediately, transmit only a short-lived opaque submission identifier in the URL and upload the signed payload through a protected body-based channel. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (28)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill documents and encourages use of environment variables and outbound network access, but its front matter does not declare any explicit tool scope such as allowed-tools or permissions. In an agent setting, this ambiguity can cause overbroad runtime capabilities, making it easier for an agent to access secrets or call external services without clear policy review.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The pump.fun sniping section provides detailed instructions for rapid speculative trading, including skipPreflight usage and low-latency execution, but does not prominently warn that this is high-risk, irreversible financial behavior. In an agentic context, that omission can lead users or autonomous workflows to execute unsafe trades without sufficient human confirmation or risk controls.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The README includes example code that performs a real SOL transfer but does not warn users that blockchain transactions are irreversible and may move mainnet funds if run with a funded keypair. In developer documentation, omission of this safety context can lead to accidental asset loss, especially when readers copy-paste examples without understanding the financial consequences.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The example signs a transaction locally and then transmits the fully signed transaction to a remote bundle endpoint, but the README does not explicitly warn users that they are authorizing external submission and relay of that signed payload. While this is expected for Jito-style bundling, a signed transaction is an authorization artifact that can be submitted by the remote service, so the documentation should make that trust boundary explicit.

External Transmission

Medium
Category
Data Exfiltration
Content
// Step 3: Submit via Jito bundle (v1 endpoint)
async function submitBundle(signedBase64: string) {
  const url = new URL("https://api.carbium.io/api/v1/swap/bundle");
  url.searchParams.set("signedTransaction", signedBase64);

  const res = await fetch(url, {
Confidence
95% confidence
Finding
The example places the signed transaction into the URL query string when submitting to the remote bundle endpoint. Query strings are commonly logged by clients, proxies, CDNs, server access logs, browser/dev tooling, and monitoring systems, so this increases the exposure of a reusable signed transaction and makes the external transmission materially more dangerous.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The README demonstrates a complete flow that signs and submits a real swap transaction on Solana, but it does not prominently warn users that running the example will execute an actual on-chain trade with real funds if a live key is supplied. In documentation for financial operations, this omission is risky because users may copy-paste the example, misunderstand it as a dry-run quote example, and unintentionally authorize asset movement and incur loss or fees.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The documentation explicitly instructs users to place the API key in a WebSocket URL query string. Query-string credentials are commonly exposed through logs, browser history, proxies, monitoring systems, error reports, and shared connection metadata, increasing the chance of credential leakage even when TLS is used. In this skill's infrastructure context, leaked keys could enable unauthorized use of paid RPC/gRPC resources and visibility into a user's blockchain data flows.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Version | Base URL | Parameters | Status |
|---|---|---|---|
| **v2 (Q1)** | `https://api.carbium.io/api/v2` | `src_mint`, `dst_mint`, `amount_in`, `slippage_bps` | **Current** |
| v1 (legacy) | `https://api.carbium.io/api/v1` | `fromMint`, `toMint`, `amount`, `slippage` | Operational, legacy |

> **Do not mix parameter families across versions.** Sending `fromMint` to a v2 endpoint or `src_mint` to a v1 endpoint will fail or return bad results.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
templates/carbium-setup.ts:16