Back to skill

Security audit

Argus Intelligence

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent remote blockchain intelligence API helper, but it asks agents to send sensitive queries and payment tokens to a configurable endpoint without enough guardrails or privacy guidance.

Review before installing. Use only the documented HTTPS ARGUS endpoint unless you intentionally trust another endpoint, avoid sending private keys, seed phrases, internal prompts, or unnecessary personal data, and do not paste real payment tokens into command history or logs. Treat webhook registration as a persistent remote subscription and confirm pricing/quota terms because the docs conflict.

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:209
Finding
User-Controlled API Endpoint Can Receive Payment Credentials and Sensitive Query Data<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:209-212` **Vulnerability Type**: Untrusted endpoint configuration used for authenticated requests **Risk Level**: Medium ### Vulnerable Code ```bash curl -X POST $ARGUS_ENDPOINT/api/v1/token/analyze \ -H "Content-Type: application/json" \ -H "X-Stripe-Token: sk_argus_xxxx" \ -d '{"token": "0xabc...", "chain": "ethereum"}' ``` ### Technical Analysis The documented command sends the `X-Stripe-Token` payment credential to a destination derived entirely from the environment-controlled `ARGUS_ENDPOINT` variable. The example does not validate that the variable uses HTTPS or that its hostname is the expected `argus.getfailsafe.com` service. If an attacker, compromised automation environment, or malicious configuration can modify `ARGUS_ENDPOINT`, subsequent requests following this example will transmit the Stripe token and request body to the attacker-selected server. The missing shell quoting can additionally cause unintended word splitting or pathname expansion, although it does not by itself establish arbitrary shell-command execution. The same endpoint configuration is used elsewhere for prompts, blockchain addresses, social identifiers, agent identifiers, and payment proofs. Consequently, endpoint substitution may expose more than the illustrated token-analysis request. ### Attack Path 1. An attacker gains the ability to influence the environment or configuration from which the Skill reads `ARGUS_ENDPOINT`. 2. The attacker changes it from the documented service to an attacker-controlled HTTPS endpoint. 3. A user or agent invokes the paid endpoint according to the documented example and supplies a valid `X-Stripe-Token`. 4. `curl` sends the payment credential and request body to the attacker-controlled server. 5. The attacker captures the token and may consume associated service credits or collect sensitive intelligence-query data. This path requires prior influence over the environme ...[truncated 771 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Avoid using an unrestricted environment variable as the destination for authenticated requests. Prefer a fixed trusted origin: ```bash ARGUS_ENDPOINT="https://argus.getfailsafe.com" curl --proto '=https' \ -X POST "${ARGUS_ENDPOINT}/api/v1/token/analyze" \ -H "Content-Type: application/json" \ -H "X-Stripe-Token: ${ARGUS_STRIPE_TOKEN}" \ -d '{"token": "0xabc...", "chain": "ethereum"}' ``` 2. If endpoint configurability is required, validate the parsed URL before sending credentials: - Require the `https` scheme. - Require the exact expected hostname and port. - Reject embedded user information, unexpected ports, and malformed URLs. - Do not rely on substring or suffix-only hostname checks. 3. Quote every expansion as `"${ARGUS_ENDPOINT}/..."` to prevent shell word splitting and pathname expansion. 4. Apply a restrictive redirect policy. Do not enable redirect following for authenticated requests unless necessary, and never forward the custom payment header to a different origin. 5. Store the Stripe token in a dedicated secret variable or secret manager. Avoid placing real tokens directly in command history, logs, source files, or process arguments where feasible. 6. Document that users must not submit private keys, seed phrases, authentication tokens, confidential prompts, or unnecessary personal information to remote analysis endpoints. 7. Consider implementing a trusted local wrapper that validates the destination and adds credentials only after successful origin verification, rather than asking users or agents to construct authenticated `curl` requests directly. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Tool Parameter Abuse

High
Category
Tool Misuse
Content
|----------|-------------|
| `POST /api/v1/webhooks/register` | Subscribe to real-time event alerts |
| `GET /api/v1/webhooks` | List your active webhooks |
| `DELETE /api/v1/webhooks/:id` | Remove a webhook |

**Valid webhook events:**
`address_activity`, `token_risk_change`, `threat_detected`, `compliance_flag`,
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

External Transmission

Medium
Category
Data Exfiltration
Content
## Try It Free

```bash
curl -X POST https://argus.getfailsafe.com/api/v1/free/query \
  -H "Content-Type: application/json" \
  -d '{"query": "Is 0x1234... safe?", "agentId": "my-agent"}'
```
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
env:
    - ARGUS_ENDPOINT
  bins:
    - curl
os: [darwin, linux, win32]
primaryEnv: ARGUS_ENDPOINT
cost: 0.03
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
### Token Analysis

```bash
curl -X POST $ARGUS_ENDPOINT/api/v1/token/analyze \
  -H "Content-Type: application/json" \
  -d '{"token": "ETH", "chain": "ethereum"}'
```
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
96% confidence
Finding
The skill encourages sending prompts, wallet addresses, and other blockchain intelligence queries to a remote ARGUS endpoint without clearly warning users that their data leaves the local environment. This can expose sensitive prompts, investigative targets, compliance-related data, or proprietary workflow context to a third-party service, creating privacy and confidentiality risk.

Intent-Code Divergence

Low
Confidence
98% confidence
Finding
The skill repeatedly documents the free tier as '35 queries/day' in the manifest description and service table, but L245 states '3 queries/day per agentId'. This is an active contradiction in the skill's own documentation about what the service provides, which can mislead users about intended behavior and limits.

Static analysis

No suspicious patterns detected.