Back to skill

Security audit

AgoraHub

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a straightforward AgoraHub API guide, but it includes a JWT-decoding workflow that sends potentially sensitive tokens to a remote service without warning users.

Review before installing or using with real data. Treat every argument passed to AgoraHub agents as data sent to a third-party service, and do not submit production JWTs, API keys, session tokens, passwords, regulated data, or proprietary content unless you intentionally trust that service and agent with it.

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
SKILL.md:104
Finding
Potential Disclosure of Sensitive JWTs to an External Service## Vulnerability Details **File Location**: `SKILL.md`, lines 104–110 **Vulnerability Type**: Sensitive data exposure through remote processing **Risk Level**: Medium The documented JWT decoder sends the supplied token to the externally hosted AgoraHub API: ```bash ### JWT Decoder Decode a JWT token (without verification). ```bash curl -s -X POST https://agorahub.dev/api/mcp/tools/call \ -H "Content-Type: application/json" \ -d '{"name":"agora_jwt-decoder_decode","arguments":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}}' | jq ``` ``` ### Technical Analysis JWTs frequently contain identity claims, personal information, authorization metadata, and other sensitive application data. They may also be active bearer credentials. The documented procedure transmits the complete JWT to `https://agorahub.dev` instead of decoding its Base64URL-encoded sections locally. The Skill does not warn users against submitting production tokens, recommend token redaction, request explicit consent before external transmission, or describe data retention and downstream processing. The remote service and any agent involved in processing consequently receive the complete token. This creates an avoidable confidentiality risk because JWT decoding does not inherently require network access. The broader generic call mechanism can similarly transmit arbitrary user-provided data to remote demo or community agents, but this JWT example is the clearest sensitive-data case present in the audited file. ### Attack Path 1. A user follows the documented JWT-decoder procedure. 2. The user substitutes a real application JWT for the example token. 3. `curl` sends the complete token in the HTTPS request body to the external AgoraHub endpoint. 4. AgoraHub and its relevant processing infrastructure receive the JWT. 5. If the token remains active, any party that obtains i ...[truncated 1090 chars]
Remediation
## Remediation Suggestions 1. Decode JWT header and payload sections locally rather than sending tokens to a remote service. 2. Add a prominent warning that users must never submit production JWTs, session tokens, API keys, passwords, or other secrets. 3. Require explicit user confirmation before transmitting any potentially sensitive content to AgoraHub or a community agent. 4. Detect and redact common credential formats before constructing remote requests. 5. If remote processing remains available, document the service’s data-retention policy, logging behavior, subprocessors, deletion process, and security controls. 6. Avoid recording authorization headers, JWTs, and request bodies in client-side or server-side logs. 7. Recommend using expired, revoked, synthetic, or otherwise non-sensitive tokens for demonstrations and testing. 8. Restrict community-agent calls to non-sensitive inputs unless the agent and its data-handling practices have been independently reviewed.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (22)

External Transmission

Medium
Category
Data Exfiltration
Content
### General Call Format

```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_<agent-slug>_<skill-id>","arguments":{...}}' | jq
```
Confidence
84% confidence
Finding
The general call format instructs users to POST arbitrary arguments to an external service. While contacting a remote API is the purpose of the skill, the documentation does not include any privacy or data-handling warning, so users may unknowingly transmit sensitive prompts, files, tokens, or internal data.

External Transmission

Medium
Category
Data Exfiltration
Content
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% 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
### Echo Agent
Echo back a message with a timestamp.
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"hello world"}}' | jq
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill provides a JWT decoding example that sends the full token to a remote third-party service, but it does not warn users not to submit real or sensitive tokens. JWTs often contain bearer credentials or personally identifiable claims, so transmitting them off-host can leak secrets or account data even if the tool only 'decodes' them.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
```

### JWT Decoder
Decode a JWT token (without verification).
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

External Transmission

Medium
Category
Data Exfiltration
Content
### JWT Decoder
Decode a JWT token (without verification).
```bash
curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_jwt-decoder_decode","arguments":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}}' | jq
```
Confidence
97% confidence
Finding
This example explicitly demonstrates sending a JWT to an external service for decoding. JWTs commonly contain identity claims and may function as active bearer tokens, so transmitting them to a third party can leak authentication material or sensitive user information.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# Example: check for errors
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -d '{"name":"agora_echo-agent_echo","arguments":{"message":"test"}}')
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
Confidence
60% 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
```bash
export AGORAHUB_API_KEY="agora_your_key_here"

curl -s -X POST https://agorahub.dev/api/mcp/tools/call \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGORAHUB_API_KEY" \
  -d '{"name":"agora_some-community-agent_skill","arguments":{...}}' | jq
Confidence
86% confidence
Finding
This example instructs users to send authenticated requests with a bearer token to a third-party service but does not include any handling guidance for protecting the API key or limiting where it is used. While authorization headers are expected for authenticated APIs, the skill should explicitly warn that the key is sensitive and that all request contents are transmitted off-host.

Static analysis

No suspicious patterns detected.