Back to skill

Security audit

Job Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward job-search helper, but users should understand it queries third-party job sites and relies on externally installed MCP software.

Before installing, use a virtual environment or container, prefer pinned package versions or a reviewed commit, and avoid putting sensitive personal details into job-search queries unless necessary. Be careful with proxy use and make sure third-party job-site access fits your privacy expectations and applicable site terms.

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

Warning
Location
SKILL.md:39
Finding
Unpinned and Unverified Third-Party Dependencies## Vulnerability Details **File Location**: `SKILL.md`, lines 39-55 **Vulnerability Type**: Supply-chain exposure through mutable and unverified dependencies **Risk Level**: Medium ### Vulnerable Code ```bash # Install with pip pip install mcp>=1.1.0 python-jobspy>=1.1.82 pandas>=2.1.0 pydantic>=2.0.0 # Or install with uv (faster) uv add mcp python-jobspy pandas pydantic ``` ```bash # Clone the jobspy-mcp-server repository git clone https://github.com/chinpeerapat/jobspy-mcp-server.git cd jobspy-mcp-server # Install dependencies uv sync # or pip install -e . ``` ### Technical Analysis The documented installation commands obtain executable components from mutable external sources without cryptographic integrity verification. The `pip` command uses lower-bound version constraints rather than exact versions, while the `uv add` command does not specify versions at all. Future releases satisfying these constraints may therefore be installed without having been reviewed as part of this audit. Transitive dependencies are also not locked or verified with hashes. The alternative installation procedure clones the default branch of an external personal GitHub repository and immediately installs its dependencies or package. It does not pin the repository to a reviewed commit, verify a signed tag, validate file hashes, or require source review before installation. Consequently, the effective code installed by these instructions can change after the Skill itself has been reviewed. Package installation can invoke build backends, installation hooks, imported setup logic, and subsequently executed server entry points. A malicious or compromised release can therefore run code locally. The unquoted requirement expressions containing `>` should also be corrected. Depending on the invoking shell and parsing context, an expression such as `mcp>=1.1.0` may be interpreted as output redirection rather than being passed intact ...[truncated 1770 chars]
Remediation
## Remediation Suggestions 1. Pin every direct dependency to an exact, reviewed version rather than using lower bounds or unconstrained versions. 2. Generate and commit a lock file that records all transitive dependency versions. 3. Require cryptographic hashes for downloaded packages, such as a hash-locked requirements file installed with `pip --require-hashes`. 4. Pin the external repository to a reviewed full commit SHA instead of cloning and installing its mutable default branch. 5. Prefer signed releases or signed tags, and document how users must verify signatures or checksums before installation. 6. Review package metadata, build configuration, installation hooks, and server entry points before approving dependency updates. 7. Run installation and the MCP server in an isolated virtual environment or container under a dedicated least-privilege account. 8. Restrict the server's filesystem, environment-variable, credential, and network access to what job searching requires. 9. Add automated dependency scanning and scheduled review of lock-file changes. 10. Quote shell requirement specifications, for example: ```bash pip install \ 'mcp==REVIEWED_VERSION' \ 'python-jobspy==REVIEWED_VERSION' \ 'pandas==REVIEWED_VERSION' \ 'pydantic==REVIEWED_VERSION' ``` 11. Replace the mutable clone workflow with explicit checkout and verification steps: ```bash git clone https://github.com/chinpeerapat/jobspy-mcp-server.git cd jobspy-mcp-server git checkout --detach REVIEWED_FULL_COMMIT_SHA git verify-commit REVIEWED_FULL_COMMIT_SHA ``` The verification step should only be relied upon when the expected signing identity and key are independently documented and validated.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill encourages users to search jobs using third-party job boards but does not warn that user-provided search terms, locations, and possibly other employment-related preferences will be transmitted to external services. This creates a privacy and consent issue because users may unknowingly disclose sensitive personal or career-intent information to multiple platforms and aggregators.

Rp1

Low
Category
MCP Rug Pull
Confidence
60% confidence
Finding
pip install without ==version installs the latest release, which could include malicious changes.

Missing User Warnings

Low
Confidence
91% confidence
Finding
The troubleshooting guidance suggests using a proxy to bypass or mitigate rate limits without warning that proxies may observe traffic, alter network routing, or introduce legal, policy, and privacy risks. In a job-search context, that traffic can include sensitive employment interests, locations, and search behavior, making silent proxy use risky.

Missing User Warnings

Low
Confidence
82% confidence
Finding
This is a markdown file, so SQP-2 applies to omissions in user-facing descriptions. The document provides multiple examples for a scraping tool and helper tools, but it does not disclose that using the skill may send search parameters to external job sites or involve scraping behavior that can affect privacy or site compliance expectations.

Static analysis

No suspicious patterns detected.