T08 · Insecure Dependencies
- Location
SKILL.md:68- Finding
Unpinned Third-Party SDK Is Entrusted with Wallet-Backed Automatic Payments
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 68–100
Vulnerability Type: Unpinned security-critical dependency with wallet and payment access
Risk Level: MediumVulnerable Code
markdown Teneo Protocol connects you to specialized AI agents via WebSocket. Payments are handled automatically in USDC. ### Supported Networks | Network | Chain ID | USDC Contract | |---------|----------|---------------| | Base | `eip155:8453` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | | Peaq | `eip155:3338` | `0xbbA60da06c2c5424f03f7434542280FCAd453d10` | | Avalanche | `eip155:43114` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | ### Prerequisites - Node.js 18+ - An Ethereum wallet for signing transactions - USDC on Base, Peaq, or Avalanche for payments ### Installation ```bash npm install @teneo-protocol/sdk dotenvQuick Start
See the Teneo Agent SDK for full setup instructions including wallet configuration.
typescript import { TeneoSDK } from "@teneo-protocol/sdk"; const sdk = new TeneoSDK({ wsUrl: "wss://backend.developer.chatroom.teneo-protocol.ai/ws", // See SDK docs for wallet setupTechnical Analysis
The Skill directs users to install
@teneo-protocol/sdkwithout specifying an exact version or providing a lockfile or package-integrity value. It then assigns the dependency a security-critical role involving an Ethereum wallet, an external WebSocket connection, and automatic USDC payments.The audited project contains only
SKILL.md; the SDK implementation and its transitive dependencies are not included. Consequently, this audit cannot verify how private credentials are handled, what transaction restrictions are enforced, what data is transmitted, or whether each payment requires explicit authorization.Installing a mutable package version means that future installations may retrieve ...[truncated 2174 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the SDK and all transitive dependencies to reviewed exact versions through a committed lockfile. Avoid floating ranges for payment-critical components.
- Verify package integrity during installation and CI builds. Use lockfile integrity metadata, a trusted internal registry or mirror, and reproducible builds.
- Audit the exact SDK release and its transitive dependency tree before deployment. Repeat the review whenever dependencies change.
- Isolate wallet signing from the third-party SDK. The SDK should submit transaction intents to a separate signer that enforces an explicit policy rather than receiving direct access to private keys.
- Require explicit user confirmation for every payment and display the network, asset contract, recipient, amount, fees, and total before signing.
- Enforce recipient allowlists, per-transaction limits, cumulative spending limits, short-lived sessions, and revocable token allowances. Use a dedicated low-balance wallet rather than a primary wallet.
- Prevent private keys or seed phrases from being exposed through environment variables or configuration accessible to the SDK. Prefer hardware wallets, managed signers, or isolated key-management services.
- Restrict outbound network access to documented destinations and disclose exactly what wallet, request, telemetry, and product-query data is transmitted.
- Add dependency scanning, provenance verification, publisher-change alerts, and automated review gates for SDK updates.
- Document whether automatic payment means automatic transaction construction or unattended signing. If unattended signing is supported, disable it by default and clearly explain its financial risk.
