Back to skill

Security audit

job-screener-engine

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent job-opportunity evaluation skill, with privacy and supply-chain caveats users should understand before installing.

Before installing, understand that this skill may store career preferences, salary thresholds, city, employment status, and optional personal details in a local user_profile.md file for future evaluations. Keep that file out of source control, omit fields you do not want stored, and prefer a pinned or otherwise trusted installer command when using npx.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Note
Location
README.md:34
Finding
Unpinned npx Installation Command Introduces Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `README.md`, line 34 **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Low ### Vulnerable Code ```bash npx skills add CalmDownTR/job-screener-engine ``` ### Technical Analysis The documented installation procedure invokes `npx skills` without pinning the `skills` package to a reviewed version or validating its integrity. When the package is not already available locally, `npx` can retrieve and execute a package selected from the configured npm registry. Consequently, the code executed during installation may differ over time from the version reviewed by users or maintainers. Exploitation would require compromise or malicious replacement of the relevant npm package, registry, package publisher account, or registry configuration. The audit found no evidence that the current package is malicious; the issue is the absence of version and integrity controls around executable third-party installation tooling. ### Attack Path 1. An attacker compromises the publisher account or distribution channel for the unpinned `skills` package, or causes the victim's npm configuration to resolve it from an attacker-controlled registry. 2. The attacker publishes a malicious version that contains lifecycle scripts or malicious command-line behavior. 3. A user follows the README and runs `npx skills add CalmDownTR/job-screener-engine`. 4. `npx` retrieves the attacker-controlled version because the command does not specify a trusted version or integrity value. 5. The malicious package executes with the permissions of the user running the installation command. ### Impact Assessment Successful exploitation could execute arbitrary code under the installing user's account. Depending on that account's permissions and environment, this could expose source code, local credentials, environment variables, SSH or package-manager credentials, and files writable by the user. It could also modify the user's ...[truncated 243 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Pin the installer to a specific reviewed version, for example: ```bash npx skills@X.Y.Z add CalmDownTR/job-screener-engine ``` - Document the expected package publisher, registry, and version so users can verify package provenance before execution. - Prefer a lockfile-backed installation workflow where practical. - Publish and verify package integrity hashes or signed release artifacts. - Recommend that users inspect the resolved package and disable unnecessary lifecycle scripts when supported. - Use automated dependency monitoring and require multi-factor authentication and trusted publishing for package publisher accounts. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (12)

Natural-Language Policy Violations

Medium
Confidence
81% confidence
Finding
The user-facing instructions, examples, and operational guidance are entirely in Chinese, which effectively forces a specific language for use of the skill. The file does not offer an alternative language, user opt-in, or a documented justification that this is a region-specific tool.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger phrases are broad natural-language requests like '帮我评估这个岗位' and '帮我对比这几个机会', which can overlap with ordinary conversation and cause the skill to activate unintentionally. Over-broad invocation increases the chance of context capture, unintended processing of user-provided personal/job data, or workflow hijacking when multiple skills compete for similar intents.

Natural-Language Policy Violations

Medium
Confidence
86% confidence
Finding
The natural-language instructions, output format, and trigger phrases are all specified in Chinese, which effectively constrains the interaction language. The file does not state that Chinese is optional, user-selected, or required for a documented region-specific purpose.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The trigger phrases are broad, natural-language requests such as '帮我评估这个岗位' and '帮我对比这几个机会', which can overlap with ordinary conversation and cause unintended skill activation. Unintended invocation may route user queries into this skill when they did not explicitly request it, leading to confusing behavior, unnecessary web searches, and collection/use of personal preference data under the wrong context.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
This markdown file uses Chinese throughout and does not provide an opt-in, alternative language, or justification for restricting the skill content to a specific language/locale. Under the stated policy, forcing a specific language without user choice is a natural-language policy concern.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The wizard explicitly collects career preferences and personal details, then says it will generate and persist them to `user_profile.md` without clearly informing the user that their data will be stored on disk. This creates a privacy risk because users may disclose salary expectations, employment status, city preferences, and experience under the assumption of transient chat use, while the skill persists that information for later reuse.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The workflow directs the agent to immediately write partially collected profile data to `user_profile.md` as the user progresses, but does not disclose that persistence is ongoing after each answer. Incremental writes increase the chance that sensitive information is retained even if the user stops midway, which is especially risky in a job-screening context involving compensation, work status, and potentially identifying details.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The template explicitly asks users to copy the file and fill in personal and career details such as age, city, employment status, salary floor, and work preferences, but it provides no privacy notice, minimization guidance, or storage/retention handling. In a job-evaluation skill, this data is not purely hypothetical; it is likely to be real user profile data, so unclear handling increases the risk of over-collection, accidental exposure, or unsafe persistence.

Natural-Language Policy Violations

Low
Confidence
93% confidence
Finding
This markdown file presents all instructions and user-facing prompt templates exclusively in Chinese. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is explicitly justified, which is not stated here.

Natural-Language Policy Violations

Low
Confidence
80% confidence
Finding
The entire template is written as a Chinese-only artifact and does not indicate that other languages are acceptable or that the language requirement is optional. Under the language/locale policy rule, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is clearly justified.

Static analysis

No suspicious patterns detected.