Back to skill

Security audit

Job-Hunter

Security checks for vulnerabilities and agentic risk

Overview

The skill is job-search and CV-generation focused, but it asks users to run unpinned external code while handling resume data, API keys, scheduled automation, and Telegram delivery.

Install only if you are comfortable running the external CareerForge CLI after independently reviewing and pinning the repository version. Keep resume files in a private workspace, avoid putting API keys in chat or committed .env files, verify any cron job before enabling it, and use Telegram delivery only for recipients/groups you trust.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:20
Finding
Unpinned Third-Party Code Retrieval and Installation<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:20-24` - `SKILL.md:157-162` - `scripts/setup_careerforge.sh:17-19` - `references/cli_usage.md:90-91` **Vulnerability Type**: Unpinned remote payload retrieval and insecure dependency installation **Risk Level**: High ### Vulnerable Code `SKILL.md:20-24`: ```bash cd /root/.openclaw/workspace git clone https://github.com/alon-mini/CareerForge-cli.git careerforge-cli cd careerforge-cli npm install ``` `SKILL.md:157-162`: ```bash # Download CareerForge CLI from GitHub git clone https://github.com/alon-mini/CareerForge-cli.git careerforge-cli # Initialize CareerForge cd careerforge-cli && npm install ``` `scripts/setup_careerforge.sh:17-19`: ```bash # Install dependencies echo "📦 Installing dependencies..." npm install ``` `references/cli_usage.md:90-91`: ```bash - Ensure Playwright is installed: `npm install` - Install browser binaries: `npx playwright install chromium` ``` ### Technical Analysis The skill instructs users to clone the mutable default branch of an external GitHub repository and immediately run `npm install`. No reviewed commit hash, signed release, checksum, vendored source, or other integrity constraint is specified. The effective code executed during installation can therefore change after this skill has been reviewed. In particular, npm lifecycle hooks such as `preinstall`, `install`, and `postinstall` can execute arbitrary commands under the privileges of the user running the setup. The external repository's package manifest and lockfile are not included in the audited project, so their dependency graph, lifecycle scripts, and integrity cannot be verified from this artifact. The `npx playwright install chromium` instruction presents an additional supply-chain concern. Depending on the local environment and npm configuration, `npx` may retrieve tooling that is not already installed. The instruction does not pin or verify the Playwright package version. This finding ...[truncated 1865 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the external repository to a specific, reviewed commit hash instead of cloning and executing its mutable default branch: ```bash git clone https://github.com/alon-mini/CareerForge-cli.git careerforge-cli cd careerforge-cli git checkout --detach <reviewed-commit-hash> ``` 2. Verify the checked-out commit or release using a trusted signature or a separately distributed cryptographic checksum before installation. 3. Include a reviewed dependency lockfile and use deterministic installation: ```bash npm ci ``` 4. Audit all direct and transitive dependencies, as well as `preinstall`, `install`, and `postinstall` scripts, before allowing lifecycle execution. 5. Where compatible with the dependency set, initially install without lifecycle scripts: ```bash npm ci --ignore-scripts ``` Run only individually reviewed setup steps afterward. 6. Avoid implicit package retrieval through `npx`. Install a pinned, reviewed Playwright version from the lockfile and invoke its local binary with remote package installation disabled. 7. Prefer vendoring the reviewed CLI source into the skill or publishing a signed, immutable release artifact whose digest is validated during setup. 8. Run dependency installation and CV generation in a restricted container or sandbox with: - No unnecessary host filesystem access. - No access to unrelated credentials. - Restricted outbound network access. - A non-privileged operating-system account. - Resume and API-key access granted only when required. 9. Add automated dependency scanning, lockfile integrity checks, and periodic review of the pinned upstream revision before updating it. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (11)

Credential Access

High
Category
Privilege Escalation
Content
### "No Gemini API key found"
- Set GEMINI_API_KEY environment variable
- Or create .env file with the key

### PDF conversion fails
- Ensure Playwright is installed: `npm install`
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill description is broad enough to trigger on many ordinary resume or job-search conversations, increasing the chance the agent invokes this skill unexpectedly. Because the skill then guides users into cloning and running external tooling and collecting sensitive career data, overbroad activation materially raises the risk of unintended data handling and unsafe workflow execution.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
These instructions collect and store highly sensitive personal information, including contact details, employment history, education, and portfolio links, but provide no privacy notice, retention limits, or safe-storage guidance. In context, this is dangerous because the skill explicitly saves the data to local files, creating unnecessary exposure of identity and career information if the workspace is shared, synced, or later exfiltrated.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
Requesting an API key without explaining how it will be handled, stored, or protected creates credential exposure risk. Given that the skill also instructs users to clone and run external code from GitHub, the absence of credential-handling guidance makes accidental logging, plaintext storage, or theft by local scripts substantially more dangerous.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill sends job listings and generated CVs through Telegram, a third-party messaging platform, without warning users that their personal and application data will be shared externally. Tailored CVs may contain full identity, employment history, and contact details, so transmitting them over a chat channel can expose sensitive information to unintended recipients, compromised groups, or platform-level access.

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.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill documents sending job listings and generated CVs through a Telegram group, but provides no warning about data exposure, retention, or who can access the group. In a job-search context, this can disclose sensitive employment intent, resume contents, and job application metadata to unintended recipients or third-party platforms.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The file describes storing a master resume, generating tailored CVs, and tracking applications without warning that personal data will be processed, persisted, and potentially reused. Resume data commonly contains highly sensitive personal and professional information, so silent storage and processing increases privacy, compliance, and unauthorized access risks.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The schedule configuration sets defaults of '8-18 Israel time,' 'Sunday-Thursday,' and 'Asia/Jerusalem,' which embeds a locale-specific assumption in the skill instructions. The document does not justify this as region-specific or clearly present it as an optional example rather than a default behavior.

Missing User Warnings

Low
Confidence
83% confidence
Finding
The guide instructs users to place a Gemini API key in an environment variable or `.env` file but provides no warning about keeping credentials out of source control, logs, or shared systems. In a job-search automation skill that processes personal resume data, weak credential-handling guidance increases the chance of accidental key exposure and unauthorized API use.

Natural-Language Policy Violations

Low
Confidence
80% confidence
Finding
The file sets default location filters to Tel Aviv/Israel and uses the Asia/Jerusalem timezone, imposing a locale-specific default. Although customization is mentioned later, the document does not explain that these regional defaults are optional or justified for a region-specific skill.

Static analysis

No suspicious patterns detected.