T09 · Insecure Skill Coding Practices
- Location
civic-tool-runner.ts:35- Finding
Bearer Token Disclosure Through an Unvalidated MCP Endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to be a real Civic MCP bridge, but it needs review because it gives an agent broad access to external accounts and has weak safeguards around token destination and sensitive argument logging.
Install only if you trust Civic and understand that the configured token may let the agent access connected services such as Gmail, databases, and storage. Use a least-privilege Civic profile, keep CIVIC_URL on the official HTTPS Civic endpoint, avoid passing secrets in tool arguments, review logs, and confirm sensitive or mutating actions before allowing the agent to run them.
civic-tool-runner.ts:35Bearer Token Disclosure Through an Unvalidated MCP Endpoint
civic-tool-runner.ts:249Sensitive MCP Tool Arguments Are Logged in Plaintext
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### 1. Get your Civic credentials
1. Go to [nexus.civic.com](https://nexus.civic.com) and sign in
2. Get your **MCP URL** and **access token** from your profile settings
### 2. Configure in OpenClaw
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### 1. Get your Civic credentials
1. Go to [nexus.civic.com](https://nexus.civic.com) and sign in
2. Get your **MCP URL** and **access token** from your profile settings
### 2. Configure in OpenClaw
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### 1. Get your Civic credentials
1. Go to [nexus.civic.com](https://nexus.civic.com) and sign in
2. Get your **MCP URL** and **access token** from your profile settings
### 2. Configure in OpenClaw
The skill declares environment-variable requirements and provides executable command guidance, but it does not define an explicit tool scope such as permissions or allowed-tools. That omission weakens containment and reviewability, making it easier for an agent to invoke external capabilities or handle sensitive credentials without clear policy boundaries.
The setup instructions ask users to configure a third-party MCP endpoint and place a long-lived access token into agent configuration, but they do not clearly warn that data and credentials will be transmitted to an external service. In a skill that bridges to Gmail, databases, and storage systems, that missing disclosure increases the risk of unsafe consent and accidental overexposure of sensitive account data.
The agent instructions actively demonstrate listing and calling external tools, including Gmail queries, without requiring an explicit warning or confirmation that the action may read or modify data in external accounts. Because the skill targets many integrations, an agent could perform sensitive operations under user credentials with insufficient transparency.
Using npx tsx without a pinned package version can cause the runtime to fetch or resolve whatever version is current at execution time. This creates a supply-chain risk: a malicious or compromised release of tsx or a dependency could execute arbitrary code in the agent environment while handling Civic credentials.
Using npx tsx without a pinned package version can cause the runtime to fetch or resolve whatever version is current at execution time. This creates a supply-chain risk: a malicious or compromised release of tsx or a dependency could execute arbitrary code in the agent environment while handling Civic credentials.
Using npx tsx without a pinned package version can cause the runtime to fetch or resolve whatever version is current at execution time. This creates a supply-chain risk: a malicious or compromised release of tsx or a dependency could execute arbitrary code in the agent environment while handling Civic credentials.
Using npx tsx without a pinned package version can cause the runtime to fetch or resolve whatever version is current at execution time. This creates a supply-chain risk: a malicious or compromised release of tsx or a dependency could execute arbitrary code in the agent environment while handling Civic credentials.
Using npx tsx without a pinned package version can cause the runtime to fetch or resolve whatever version is current at execution time. This creates a supply-chain risk: a malicious or compromised release of tsx or a dependency could execute arbitrary code in the agent environment while handling Civic credentials.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
No suspicious patterns detected.