Back to skill

Security audit

Job Monitor

Security checks for vulnerabilities and agentic risk

Overview

This skill needs review because it tells the agent to run shell curl commands built from user job text, which could be abused if input is inserted unsafely.

Install only if you trust the local backend at 127.0.0.1:8010 and are comfortable sending job descriptions or search terms to it. The skill should be revised to avoid shell interpolation, use safe JSON serialization or a structured HTTP tool, and clearly describe the BOSS scanning capability in its manifest before broad use.

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

Error
Location
SKILL.md:20
Finding

Shell Command Injection Through Unsafely Interpolated User Input

Content
View full analysis
call `POST /api/jd/analyze` - Endpoint: `POST http://127.0.0.1:8010/api/jd/analyze` - Header: `Content-Type: application/json` - Body: `{"jd_text":""}` - Example: - `curl -sS -X POST "http://127.0.0.1:8010/api/jd/analyze" -H "Content-Type: application/json" -d '{"jd_text":""}'` - If user asks to search/scanning BOSS -> call `POST /api/boss/scan` - Endpoint: `POST http://127.0.0.1:8010/api/boss/scan` - Header: `Content-Type: application/json` - Body: `{"keyword":"","max_items":10,"max_pages":2}` - Example: - `curl -sS -X POST "http://127.0.0.1:8010/api/boss/scan" -H "Content-Type: application/json" -d '{"keyword":"","max_items":10,"max_pages":2}'` ``` ### Technical Analysis The skill instructs the agent to invoke `curl` through the `exec` tool and places untrusted JD text or search keywords directly inside a single-quoted shell argument. No safe JSON serialization, shell escaping, or argument-array invocation is specified. A single quote in attacker-controlled input can terminate the intended JSON argument. The attacker can then introduce shell metacharacters such as semicolons and a comment marker, causing the shell to interpret the remaining input as additional commands rather than request data. This affects both documented API operations: - `POST /api/jd/analyze` through the `jd_text` value. - `POST /api/boss/scan` through the `keyword` value. The vulnerability exists before the request reaches the localhost API; therefore, server-side JSON validation does not prevent exploitation. ### Attack Path 1. An attacker asks the skill to analyze a JD or search for a keyword. 2. The supplied value contains a single quote followed by shell ...[truncated 1530 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (5)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest advertises a JD-analysis skill, but the workflow also includes BOSS job search/scanning functionality. This scope mismatch can cause users or orchestrators to invoke capabilities they did not expect, weakening consent and review boundaries and increasing the chance of unintended external actions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The trigger set includes broad phrases such as job-search requests that may match ordinary conversation and auto-activate the skill unexpectedly. Over-broad activation is dangerous because it can cause unintended API calls or data transmission without the user clearly selecting this specific capability.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill adds external platform scanning that is not necessary for the stated JD-analysis purpose, creating unnecessary capability expansion. Extra platform interaction increases attack surface, privacy risk, and the chance that the agent performs networked actions beyond what the user reasonably expects from a text-analysis skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow sends user-provided JD text to a backend API without explicitly warning the user that their content will be transmitted. Job descriptions can contain confidential company information, compensation details, internal requirements, or recruiter contact data, so silent transmission creates a meaningful privacy and compliance risk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The skill explicitly performs HTTP POST requests carrying user content to a local backend service. Even though the endpoint is localhost, this is still external-to-model data transmission and can expose sensitive text to another process or service that may log, retain, transform, or forward the data without the user's awareness.

Content

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

md
- Header: `Content-Type: application/json`
     - Body: `{"jd_text":"<user jd text>"}`
     - Example:
       - `curl -sS -X POST "http://127.0.0.1:8010/api/jd/analyze" -H "Content-Type: application/json" -d '{"jd_text":"<user jd text>"}'`
   - If user asks to search/scanning BOSS -> call `POST /api/boss/scan`
     - Endpoint: `POST http://127.0.0.1:8010/api/boss/scan`
     - Header: `Content-Type: application/json`

Static analysis

No suspicious patterns detected.