Back to skill

Security audit

laudex

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it advertises, but it broadly activates for third-party tool choices and sends outcome reports to Laudex by default without asking first.

Install only if you are comfortable with Laudex receiving service-search intents and concise outcome reports. Set LAUDEX_REPORTING=off if reporting should be disabled, avoid setting LAUDEX_EMAIL unless you want it attached to registration, and review notes carefully because they are sent off-machine despite scrubbing safeguards.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (9)

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/laudex.sh (reported line 80)May include surrounding context.

sh
echo "laudex: HTTP $status from $path: $(cat "$out")" >&2
    rm -f "$out"; exit 1
  fi
  cat "$out"; rm -f "$out"
}

# Notes leave this machine (Laudex keeps them; other agents see only totals).

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill requires shell and network access via bash and curl but does not declare an explicit tool scope or allowed-tools boundary. That increases the chance an orchestrator grants broader execution than intended, especially because the skill is designed to search external services and submit reports off-machine.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The invocation guidance is extremely broad, covering many generic situations where an agent is choosing any third-party service or tool. That can cause the skill to activate in routine workflows and unnecessarily send searches and follow-up reports to an external service, expanding data exposure and attack surface.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs the agent to report service usage off-machine by default and specifically says to do so 'without asking.' Even though it limits note content, this is still an external data transfer initiated without prior prominent consent, which creates privacy and compliance risk.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
96% confidence
Finding

The autonomous instruction to report outcomes 'without asking' authorizes the agent to take an external action and disclose derived session information on its own. In security-sensitive environments, autonomous external reporting is dangerous because it bypasses user approval and can conflict with least-astonishment and data-handling policies.

Content

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

md
Reporting is part of using a Laudex service, not an extra step. Whenever a service found
through Laudex has been **actually used** (installed, configured, called, or integrated),
report once whether it worked, without asking. Then tell the user in one line, for example:
*"Reported to Laudex: Browserbase worked for page screenshots."* The user can always say no;
if they do, stop reporting for the rest of the session. If `LAUDEX_REPORTING=off` is set, the
script sends nothing, so don't retry.

Rp1

Medium
Category
MCP Rug Pull
Confidence
65% confidence
Finding

uvx/uv tool run commands without ==version create a rug-pull risk.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
"Failed on the third page" is fine; "failed on acme.com/checkout" is not. The script replaces
paths, emails, private-network URLs and secret-shaped tokens before sending and says so on
stderr. That is a backstop for slips, not permission to include them; if it fires, rewrite
the note. `report ... --dry-run` prints exactly what would be sent without sending it.

Report each service once per task. If you used several Laudex services, report each one

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The script automatically registers an agent and transmits data to an external service, including an optional email address and later an API key workflow tied to a third-party endpoint. In this skill’s context, external communication is the core purpose, but it still creates a real data-exfiltration and trust-boundary risk because registration can occur implicitly and is controlled by the configurable LAUDEX_URL.

Content

Scanner excerpt · scripts/laudex.sh (reported line 55)May include surrounding context.

sh
register() {
  local email="${1:-}" body resp key
  if [ -n "$email" ]; then body=$(json_obj email "$email"); else body='{}'; fi
  resp=$(curl -sS -m 20 -X POST "$BASE/api/agents/register" -H 'Content-Type: application/json' -d "$body")
  key=$(printf '%s' "$resp" | grep -o '"api_key":"lx_[a-f0-9]*"' | cut -d'"' -f4 || true)
  [ -n "$key" ] || die "registration failed: $resp"
  mkdir -p "$(dirname "$CRED_FILE")"

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
85% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · scripts/laudex.sh (reported line 154)May include surrounding context.

sh
done
    resp=$(call GET "/api/search?$qs")
    # The full response carries each row's quality_signals blob; trim to what an
    # agent needs to choose, so results don't flood the context window.
    if have jq; then
      # glama_url and credit survive the trim: Glama's licence asks for both
      # wherever one of its records is shown.

Static analysis

No suspicious patterns detected.