Back to skill

Security audit

Rube

Security checks for vulnerabilities and agentic risk

Overview

This Rube skill is broadly disclosed as an app-automation connector, but it ships a hardcoded bearer credential and enables high-impact remote tool execution with weak scoping.

Review this carefully before installing. It can connect to and act across many external apps, run remote shell/Python workflows, schedule recurring automations, and store workflow memory. The packaged hardcoded bearer token should be removed and rotated, and installation should wait for per-user authentication plus clearer confirmation requirements for destructive, bulk, scheduled, or sensitive-data actions.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/rube.sh:14
Finding

Hardcoded Bearer Credential Exposes the Rube MCP Account

Content
View full analysis
/dev/null SESSION_ID=$(grep -i "^mcp-session-id:" "$TEMP_HEADERS" | awk '{print $2}' | tr -d '\r' || true) rm -f "$TEMP_HEADERS" if [ -n "$SESSION_ID" ]; then RESPONSE=$(curl -s -X POST "$MCP_URL" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer [REDACTED HARDCODED JWT]" \ -H "Mcp-Session-Id: $SESSION_ID" \ -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"$TOOL_NAME\",\"arguments\":$ARGS}}") else RESPONSE=$(curl -s -X POST "$MCP_URL" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer [REDACTED HARDCODED JWT]" \ -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"$TOOL_NAME\",\"arguments\":$ARGS}}") fi ``` The credential value is intentionally redacted from this report to avoid further disclosure. In the audited source, a complete JWT appears at lines 17, 29, and 36. ### Technical Analysis Embedding an authentication token directly in a distributed shell script violates secret-management and least-privilege principles. Anyone who can read the project package, a copied Skill installation, a source archive, or a backup can recover the credential without needing code execution. The toke ...[truncated 1854 chars]
Remediation
View remediation

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:6
Finding

Always-Loaded Skill Delegates Workflow Control to Remote Plans and Memory

Content
View full analysis
Remediation
View remediation
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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The description broadly says the skill is for using Rube tools, which generally aligns with the code calling the Rube MCP server. However, the implementation is materially broader and more sensitive than the description suggests: it accepts any tool name and arbitrary arguments, rather than being constrained to the listed Rube capabilities, and it embeds a bearer token to perform authenticated API calls. That authenticated arbitrary-tool invocation capability is undeclared and security-relevant, so this should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Lp1

High
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill is implemented as a shell wrapper, which introduces shell execution capability not reflected in the declared permissions. In this context the wrapper also forwards user-controlled inputs to a remote service, so undeclared shell capability reduces transparency and can bypass permission expectations even if the script itself is small.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

A fixed bearer token is hardcoded directly in the skill, allowing anyone who can run or read the wrapper to make authenticated requests as the embedded account rather than the current caller. This breaks authentication boundaries, enables unauthorized use of remote Rube capabilities, and may expose the associated organization or account to abuse.

Content

No source excerpt is available for this finding.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.

Content

Scanner excerpt · SKILL.md (reported line 118)May include surrounding context.

md
- If RUBE_SEARCH_TOOLS indicates there is no active connection for a toolkit, call RUBE_MANAGE_CONNECTIONS with the exact toolkit name(s) returned.
- Do not call RUBE_MANAGE_CONNECTIONS if RUBE_SEARCH_TOOLS returns no main tools and no related tools.
- Toolkit names in toolkits must exactly match toolkit identifiers returned by RUBE_SEARCH_TOOLS; never invent names.
- NEVER execute any toolkit tool without an ACTIVE connection.

Tool Behavior:
- If a connection is Active, the tool returns the connection details. Always use this to verify connection status and fetch metadata.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill instructs the agent to persist user-related facts such as emails, IDs, preferences, and relationships for future executions. Persistent storage of personal or account-linked data increases privacy risk, creates a secondary data store that may outlive user intent, and can enable cross-session leakage or misuse if memory is later retrieved in unrelated contexts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This skill exposes a remote bash execution capability and normalizes its use for file processing without a strong, explicit safety boundary or approval requirement. In an agent setting, remote shell access is highly sensitive because prompt injection, ambiguous user requests, or model error can translate directly into destructive commands, data exfiltration, or lateral movement within the connected environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The remote workbench capability permits arbitrary Python execution over remote files and connected services, including helper functions that can call external APIs and LLMs. Without prominent safety warnings and hard restrictions, this creates a broad code-execution surface where malicious content, injected instructions in files, or agent mistakes can trigger unauthorized processing, exfiltration, or mass actions across integrated apps.

Content

No source excerpt is available for this finding.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

The skill describes a pattern where discovered tools across 500+ connected apps are then executable through a general multi-execution facility, which materially broadens the action surface. In agent environments, such broad delegated execution is risky when paired with prompt-driven planning, because a malicious prompt or data source can steer the agent toward high-impact app actions across many integrations.

Content

Scanner excerpt · SKILL.md (reported line 453)May include surrounding context.

md
Response:
  - Tools & Input Schemas: The response lists toolkits (apps) and tools suitable for the task, along with their tool_slug, description, input schema / schemaRef, and related tools for prerequisites, alternatives, or next steps.
    - NOTE: Tools with schemaRef instead of input_schema require you to call RUBE_GET_TOOL_SCHEMAS first to load their full input_schema before use.
  - Connection Info: If a toolkit has an active connection, the response includes it along with any available current user information. If no active connection exists, you MUST initiate a new connection via RUBE_MANAGE_CONNECTIONS with the correct toolkit name. DO NOT execute any toolkit tool without an ACTIVE connection.
  - Time Info: The response includes the current UTC time for reference. You can reference UTC time from the response if needed.
  - The tools returned to you through this are to be called via RUBE_MULTI_EXECUTE_TOOL. Ensure each tool execution specifies the correct tool_slug and arguments exactly as defined by the tool's input schema.
    - The response includes a memory parameter containing relevant information about the use case and the known fields that can be used to determine the flow of execution. Any user preferences in memory must be adhered to.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The recipe creation guidance explicitly allows carrying workflow-context defaults into reusable stored parameters and notes encrypted PII handling. Even when encrypted, persisting context-derived personal or account-specific defaults in reusable automations increases the chance of accidental reuse, over-collection, and unauthorized execution with sensitive values prepopulated.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/rube.sh (reported line 14)May include surrounding context.

sh
# Capture session ID from initialize (required for stateful servers; no-op for stateless)
TEMP_HEADERS=$(mktemp)
curl -s -X POST "$MCP_URL" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJ1c2VyXzAxS05CWThHWTAzV0JXWU1XRDVYME5USEpUIiwib3JnSWQiOiJvcmdfMDFLTkJZQzdETkFaQTFTRlpCUks3SkRQTlQiLCJpYXQiOjE3NzUyOTYyMDh9.tQxotKtYA0o1R02I6ODeuDAnxzXYyht_UneoCL-VwH0" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/rube.sh (reported line 26)May include surrounding context.

sh
# Call the tool
if [ -n "$SESSION_ID" ]; then
  RESPONSE=$(curl -s -X POST "$MCP_URL" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJ1c2VyXzAxS05CWThHWTAzV0JXWU1XRDVYME5USEpUIiwib3JnSWQiOiJvcmdfMDFLTkJZQzdETkFaQTFTRlpCUks3SkRQTlQiLCJpYXQiOjE3NzUyOTYyMDh9.tQxotKtYA0o1R02I6ODeuDAnxzXYyht_UneoCL-VwH0" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

User-supplied arguments are sent directly to an external service without any disclosure, confirmation, or data minimization. In a skill that can access recipes, connections, remote execution, and workbench features, silent transmission can leak sensitive prompts, secrets, or operational data to the remote service.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The wrapper exposes generic tool invocation against a remote MCP endpoint while the skill metadata describes it only as 'Use Rube tools,' despite triggers including remote bash and remote workbench operations. That mismatch makes the capability more dangerous because users and enforcement layers may not realize the skill can invoke broad remote-execution and workflow actions through an authenticated backend.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.