Back to skill

Security audit

Jobaudit

Security checks for vulnerabilities and agentic risk

Overview

The skill is framed as an AI job cost auditor, but its installer silently changes shell startup configuration and sends an install ping to an external service, so it needs user review before installation.

Install only if you are comfortable with a shell-profile change and an install event being sent to Signal Loom. Before use, the publisher should remove or make telemetry opt-in, avoid automatic .zshrc edits, document job-history and API-key data flows, and include the missing jobaudit executable referenced by package.json.

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
install.sh:17
Finding

Undisclosed Installation Telemetry and Persistent Shell Profile Modification

Content
View full analysis

Vulnerability Details

File Location: install.sh, lines 17–22
Vulnerability Type: Undisclosed external telemetry and unsafe persistent configuration modification
Risk Level: Medium

Vulnerable Code

bash
# Add to PATH
grep -q '~/.local/bin' "${HOME}/.zshrc" 2>/dev/null || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "${HOME}/.zshrc"

# Fire install ping (no auth needed — tracks community installs)
curl -s -m 5 -X POST "https://api.signalloomai.com/v1/analytics/install" \
  -H "Content-Type: application/json" \
  -d "{\"skill\":\"${SKILL_SLUG}\",\"version\":\"${VERSION}\",\"source\":\"clawhub\"}" &

Technical Analysis

The installer performs two side effects that are not disclosed in SKILL.md:

  1. It permanently appends a PATH modification to the user's .zshrc.
  2. It sends an installation event to https://api.signalloomai.com/v1/analytics/install.

The telemetry request is launched in the background, uses silent mode, and does not ask for user consent. Its explicit JSON payload contains only the skill identifier, version, and installation source; no credentials, job history, or other sensitive local content is included. Nevertheless, the remote service can observe ordinary request metadata such as the source IP address and request time.

The .zshrc modification persists across future shell sessions. Automatically adding $HOME/.local/bin to PATH can also increase exposure to command-resolution risks if an attacker can place a malicious executable in that directory. The script itself does not place such an executable there, so this is a hardening concern rather than evidence of a bundled command-hijacking payload.

The background request and suppressed output reduce transparency and can prevent users from noticing telemetry failures or understanding that an external request was made.

Attack Path

  1. A user downloads the package and executes install.sh.
  2. The script cr ...[truncated 1288 chars]
Remediation
View remediation

Remediation Suggestions

  1. Clearly disclose telemetry in SKILL.md and installation documentation, including the endpoint, data fields, purpose, retention policy, and applicable privacy policy.
  2. Require explicit opt-in consent before transmitting analytics. Alternatively, disable telemetry by default and support a documented flag such as --enable-telemetry.
  3. Provide a straightforward opt-out environment variable, for example SIGNALLOOM_TELEMETRY_DISABLED=1.
  4. Avoid silently suppressing request errors. If telemetry is enabled, report whether the request succeeded without exposing secrets.
  5. Do not modify .zshrc automatically. Instead, print the required PATH command and let the user add it manually.
  6. If automatic profile modification remains necessary, request confirmation, create a backup, add clearly marked begin/end comments, detect equivalent PATH configurations robustly, and provide an uninstall procedure.
  7. Verify ownership and permissions of $HOME/.local/bin before recommending it in PATH, and advise users not to allow untrusted accounts or processes to write to that directory.
  8. Keep package metadata consistent: install.sh declares version 1.0.2, while package.json declares 1.0.1.
  9. Add or remove the missing ./scripts/jobaudit executable referenced by package.json so the distributed package matches its documented functionality.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill’s stated purpose is cost auditing, but the metadata and analysis indicate unrelated installation behavior, local shell profile modification, external network requests, and third-party API/signup references. This mismatch is dangerous because users may grant trust based on the benign description while the skill performs persistence, tracking, or account-coupling actions that are unnecessary for the advertised function.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises shell-capable behavior via required binaries and install actions but does not declare any explicit tool scope or permissions boundary. In an agent ecosystem, undeclared shell capability weakens user visibility and policy enforcement, making it easier for a seemingly simple audit skill to perform unexpected local actions.

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 · install.sh (reported line 12)May include surrounding context.

sh
LOCAL_BIN="${HOME}/.local/bin"

echo "Installing ${SKILL_NAME}..."
mkdir -p "$OPENCLAW_SKILLS" "$LOCAL_BIN"

# Symlink into OpenClaw skills dir
ln -sf "$SCRIPT_DIR" "$OPENCLAW_SKILLS/${SKILL_NAME}"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The installer appends to the user's shell startup file automatically, changing PATH persistence without explicit warning or confirmation. Persistent shell configuration changes can surprise users, interfere with existing setups, and create a durable foothold for future binaries placed in that directory.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The installer silently sends an external analytics POST during installation, which is unrelated to the stated local job-audit purpose. Even though the payload shown is small, undisclosed network transmission during install creates a privacy and trust risk and establishes an unnecessary outbound channel.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script includes community-install tracking that is not necessary for installing a cron-audit skill and is not aligned with the declared functionality. This mismatch increases the risk of undisclosed data collection and weakens user consent because users expect a simple local installer, not telemetry.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The installer performs a background network request without explicit runtime notice or consent, relying only on a source comment that the end user may never see. Silent outbound communication during installation is dangerous because it bypasses informed consent and can be expanded later to transmit more sensitive metadata.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The hardcoded external API endpoint indicates that the installer contacts a third-party service as part of installation. In the context of a job-auditing skill, this makes the behavior more suspicious because the network destination is not obviously required for basic local setup.

Content

Scanner excerpt · install.sh (reported line 22)May include surrounding context.

sh
grep -q '~/.local/bin' "${HOME}/.zshrc" 2>/dev/null || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "${HOME}/.zshrc"

# Fire install ping (no auth needed — tracks community installs)
curl -s -m 5 -X POST "https://api.signalloomai.com/v1/analytics/install" \
  -H "Content-Type: application/json" \
  -d "{\"skill\":\"${SKILL_SLUG}\",\"version\":\"${VERSION}\",\"source\":\"clawhub\"}" &

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The hardcoded external API endpoint indicates that the installer contacts a third-party service as part of installation. In the context of a job-auditing skill, this makes the behavior more suspicious because the network destination is not obviously required for basic local setup.

Content

Scanner excerpt · install.sh (reported line 22)May include surrounding context.

sh
grep -q '~/.local/bin' "${HOME}/.zshrc" 2>/dev/null || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "${HOME}/.zshrc"

# Fire install ping (no auth needed — tracks community installs)
curl -s -m 5 -X POST "https://api.signalloomai.com/v1/analytics/install" \
  -H "Content-Type: application/json" \
  -d "{\"skill\":\"${SKILL_SLUG}\",\"version\":\"${VERSION}\",\"source\":\"clawhub\"}" &

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The installer both advertises unauthenticated install telemetry and instructs the user to configure an API key for a service not clearly justified by the skill metadata. This inconsistency is suspicious because it can mislead users about dependencies and encourage credential setup beyond the stated purpose of the skill.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.