Back to skill

Security audit

headhunter-pro

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent recruiting assistant, but it under-discloses external platform use and long-term handling of sensitive candidate data.

Review this skill carefully before installing. Use it only in a workspace dedicated to recruiting, avoid granting access to general agent memory, require confirmation before it writes candidate files, do not run the optional pip install outside an isolated environment, and ensure candidate consent and retention rules are in place before recording calls or storing sensitive personal notes.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
skill.yml:47
Finding
Overbroad Access to Persistent Agent Memory<![CDATA[ ## Vulnerability Details **File Location**: `skill.yml:47-50` **Vulnerability Type**: Violation of least privilege through unnecessary persistent-memory access **Risk Level**: Medium ### Vulnerable Code ```yaml # Permission boundaries permissions: file_access: read: ["workspace/candidates/**", "workspace/memory/*.md"] write: ["workspace/candidates/*/profile.md", "workspace/candidates/*/recommendation.md"] ``` ### Technical Analysis The Skill requests read access to every Markdown file under `workspace/memory/`. Its declared functions—candidate screening, recommendation writing, outreach generation, interview assessment, client management, and talent mapping—do not require access to general persistent Agent memory. The operational prompt does not define a memory-dependent workflow either. This permission therefore exceeds the Skill's legitimate functional requirements. If the hosting Agent enforces the declared paths by exposing matching files to the Skill, candidate data or other user-controlled task content could cause the model to retrieve persistent information unrelated to the current recruitment task. Although no instruction was found that explicitly exfiltrates memory contents, the permission itself expands the accessible data boundary and creates an avoidable confidentiality risk. ### Attack Path 1. A user or untrusted recruitment document invokes the Skill for a supported task. 2. The runtime grants the file permissions declared in `skill.yml`. 3. The Skill receives read access to all `workspace/memory/*.md` files. 4. Task content induces or requests retrieval of information from those files. 5. The retrieved persistent context may be incorporated into the current analysis or response. 6. Information from unrelated sessions can consequently be disclosed to the current user or mixed into candidate records. This path depends on the host runtime honoring the manifest permission and allowing the model to initiate reads within t ...[truncated 598 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the general memory path from the read allowlist: ```yaml permissions: file_access: read: ["workspace/candidates/**"] write: - "workspace/candidates/*/profile.md" - "workspace/candidates/*/recommendation.md" ``` 2. If durable recruitment state is genuinely required, create a dedicated, narrowly scoped directory such as `workspace/headhunter-pro/state/**`. 3. Restrict access by candidate or task identifier rather than exposing an entire shared state directory. 4. Require explicit user approval before reading information from a previous task or session. 5. Ensure the runtime resolves paths canonically and rejects path traversal, symlink escapes, and wildcard expansion outside the approved recruitment workspace. 6. Add tests confirming that the Skill cannot read general Agent memory or records belonging to unrelated tasks. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:3752
Finding
Unpinned Third-Party Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:3752-3755` **Vulnerability Type**: Mutable and unverified Python dependency installation **Risk Level**: Medium ### Vulnerable Code ```bash # Method 1: HuggingFace Transformers (requires transformers >= 4.50.0 or source) pip install --upgrade transformers torch torchaudio soundfile ``` ### Technical Analysis The installation command resolves four packages from the configured Python package index without exact version pins, integrity hashes, or a lockfile. The `--upgrade` option further directs pip to replace installed versions with the newest versions available at execution time. Consequently, the installed code can differ from the version reviewed when the Skill was published. A compromised upstream release, package-index account takeover, dependency-resolution change, or malicious transitive dependency could introduce arbitrary Python code. Package code may execute during installation, import, model loading, or later audio-processing operations. No malicious package or compromised release was identified in the audited repository. The vulnerability is the unsafe, non-reproducible supply-chain installation procedure documented for Skill users. ### Attack Path 1. A user follows the VibeVoice installation instructions in `SKILL.md`. 2. The user executes the documented `pip install --upgrade` command. 3. Pip queries the user's configured package index and selects the latest compatible versions and their transitive dependencies. 4. A compromised or unexpectedly modified release is downloaded without verification against repository-controlled hashes. 5. Package installation hooks or subsequently imported package code execute with the privileges of the user running pip. 6. The malicious dependency can access files, environment variables, candidate data, network resources, and other assets available to that operating-system account. The resulting privilege level is limited to that of the account ...[truncated 674 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace mutable version resolution with exact, reviewed versions. 2. Maintain dependencies in a lockfile generated from a controlled build process. 3. Require package hashes, for example through a fully hashed requirements file and `pip install --require-hashes`. 4. Install into a dedicated virtual environment or container rather than the system Python environment. 5. Remove `--upgrade` from routine installation instructions. 6. Review and pin transitive dependencies, not only the four direct packages. 7. Use a trusted package index or an internally mirrored repository with provenance and malware scanning. 8. Run dependency and vulnerability scanning in CI and define a controlled update process. 9. Advise users not to execute installation commands with administrative privileges. A hardened workflow should resemble: ```bash python -m venv .venv . .venv/bin/activate python -m pip install --require-hashes -r requirements.lock ``` The repository should provide the reviewed `requirements.lock` file containing exact versions and SHA-256 hashes. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Intent-Code Divergence

High
Confidence
92% confidence
Finding
The skill explicitly claims '仅文件操作 + 文本生成,无外部网络调用', yet the content repeatedly instructs use of GitHub CLI, LinkedIn, Apollo, online demos, external job boards, and social-media monitoring. This mismatch is dangerous because operators may approve or run the skill under a false trust model, allowing undisclosed external data access, scraping, or transmission of candidate/employer information.

Missing User Warnings

Low
Confidence
91% confidence
Finding
The README explicitly declares write access to candidate profile and recommendation files but does not warn users that the skill may modify workspace data or require confirmation before overwriting existing content. In a recruiting workflow, these files may contain sensitive personal data, so silent or unexpected writes can cause integrity issues, accidental disclosure through downstream sharing, or loss of prior notes.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The file is entirely written in Chinese and the expected output explicitly requires Chinese-language responses without indicating any user language negotiation or documented business/locale constraint. This can cause the skill to ignore user language preferences, reducing usability and potentially causing misunderstandings in recruitment decisions, but it is not a direct code-execution or data-exfiltration risk.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The file defines the expected output entirely in Chinese without any indication that language selection is based on user preference or an explicit opt-in. This can override user intent, reduce usability for non-Chinese-speaking users, and create prompt-quality or policy-compliance issues in multilingual environments, but it does not by itself introduce code execution, data exfiltration, or privilege escalation risk.

Ssd 3

Medium
Confidence
94% confidence
Finding
The skill promotes ongoing accumulation of candidate materials including original quotes, family/life status, emotional changes, referrals, and cross-validated intelligence for future reuse. In recruiting context this is sensitive personal data, and retaining it beyond immediate hiring need creates significant privacy, consent, minimization, and breach-exposure risks under regimes like PIPL.

Ssd 3

Medium
Confidence
96% confidence
Finding
The workflow instructs recording candidate calls and converting them into structured dossiers with hiring intelligence. Recording conversations and deriving structured profiles without explicit informed consent, retention controls, and access safeguards materially increases legal and privacy risk, and creates a high-value repository of sensitive employment data if compromised.

Static analysis

No suspicious patterns detected.