Back to skill

Security audit

tech recruiter pro

Security checks for vulnerabilities and agentic risk

Overview

This recruiting skill is coherent, but it should be reviewed because it profiles real people across many sites and includes instructions to switch proxy IPs after a CAPTCHA.

Install only if your recruiting workflow has approval to collect, score, store, export, and contact candidates using the listed platforms. Disable or remove any CAPTCHA/proxy workaround, prefer official APIs, pin install dependencies, keep API tokens in a secret manager, minimize stored candidate fields, set retention/deletion rules, and review hiring-law/privacy obligations before using automated scores or age-related criteria.

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 (2)

other

Warning
Location
SKILL.md:87
Finding

Guidance Encourages Circumvention of CAPTCHA-Based Anti-Automation Controls

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:87-97
Vulnerability Type: Anti-automation control evasion
Risk Level: Medium

Vulnerable Code Snippet:

python
# Search URL Template
url = f"https://scholar.google.com/scholar?q={research_area}+{target_company}"

# Parse Logic
# 1. Extract paper titles, authors, and citation counts
# 2. Open author links and visit profile pages
# 3. Extract H-index, total citations, and paper lists
# 4. Locate the author's homepage link

# Error Handling
# - When a CAPTCHA is encountered: pause for 5 minutes and use a proxy IP
# - If no results are returned: simplify the search terms
# - If the page structure changes: verify the CSS selectors

Technical Analysis

The Skill instructs the Agent to switch to a proxy IP after Google Scholar presents a CAPTCHA. A CAPTCHA is an anti-automation control intended to stop or challenge automated access. Changing network identity and resuming collection can bypass the practical effect of that control rather than respecting it.

This behavior is not necessary for the declared recruiting functionality. Candidate research can instead use approved APIs, manual browsing, cached results, or an explicit human verification step. The instruction also conflicts with the Skill's later claim that it will not bypass platform authentication mechanisms.

Attack Path

  1. A user requests automated candidate sourcing through Google Scholar.
  2. The Agent repeatedly loads Scholar search and profile pages.
  3. Google Scholar detects automated behavior and presents a CAPTCHA.
  4. Following SKILL.md, the Agent pauses briefly and switches to a proxy IP.
  5. The Agent resumes automated collection from a new network identity.
  6. Repeating this process may allow collection to continue despite the platform's anti-automation controls.

Impact Assessment

This does not directly grant local system privileges or access to private a ...[truncated 434 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove all instructions recommending proxy rotation or network-identity changes in response to a CAPTCHA.
  2. Require automation to stop immediately when a CAPTCHA or equivalent access challenge appears.
  3. Require explicit human interaction before continuing, where permitted by the platform.
  4. Prefer approved APIs and authenticated integrations with documented rate limits.
  5. Add per-platform request throttling, exponential backoff, caching, and a maximum request budget.
  6. Add an allowlist of approved platforms and collection methods.
  7. Record the data source, collection time, legal basis, and consent or legitimate-interest basis where applicable.
  8. Ensure the operational instructions are consistent with the Skill's stated prohibition on bypassing platform controls.

T08 · Insecure Dependencies

Note
Location
requirements.txt:1
Finding

Python Dependencies Are Not Pinned or Integrity-Verified

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1-3
Vulnerability Type: Insecure dependency management
Risk Level: Low

Vulnerable Code Snippet:

text
requests>=2.28.0
beautifulsoup4>=4.11.0
lxml>=4.9.0

Related installation guidance in README.md:64:

bash
pip install requests beautifulsoup4 lxml

Technical Analysis

The dependency specifications establish only lower version bounds. They allow the package resolver to install any later version available at installation time. The installation documentation is even less restrictive and does not specify versions at all.

No lock file, package hashes, or integrity verification is provided. Consequently, two installations of the same Skill version can receive different dependency code. A compromised upstream release, unexpectedly incompatible future version, or malicious package obtained through an untrusted package index could execute during installation or when imported.

The referenced package names are established packages and there is no evidence that the project intentionally introduces a malicious dependency. The issue is the absence of reproducible version and integrity controls.

Attack Path

  1. A user or deployment system follows the supplied installation instructions.
  2. pip queries its configured package index and resolves the newest versions satisfying the open-ended constraints.
  3. An unreviewed future release, compromised upstream release, or package served by a maliciously configured index is selected.
  4. Package build or installation logic executes with the privileges of the installing user.
  5. The dependency subsequently runs within the recruiting process when imported or used, gaining access to data and resources available to that process.

Impact Assessment

Exploitation depends on compromise of a dependency source or selection of an unsafe release. If that occurs, dependency code could obtain ...[truncated 541 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every runtime dependency to a reviewed exact version, for example requests==X.Y.Z.
  2. Generate and commit a reproducible lock file using a tool such as pip-tools, Poetry, or an equivalent dependency manager.
  3. Record cryptographic hashes and install with pip install --require-hashes.
  4. Configure deployment systems to use only trusted package indexes over TLS.
  5. Prevent dependency fallback to unapproved extra indexes.
  6. Scan locked dependencies for known vulnerabilities in CI.
  7. Review and test updates before changing pinned versions.
  8. Update README.md so its installation command uses the reviewed lock or requirements file rather than installing unconstrained package names.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (47)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The release notes describe broad multi-platform candidate search and profile analysis across public services, but provide no notice that user queries, candidate identifiers, or profile data may be sent to external platforms. In a recruiting context, this creates a real privacy and compliance risk because operators may use the skill without understanding the scope of third-party data access and transmission.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation instructs users to configure multiple external API tokens but does not warn about secure storage, least-privilege scoping, account-linking risks, or the consequences of token leakage. This is dangerous because users may place credentials in insecure files or overprovisioned accounts, enabling unauthorized access to third-party services and possible data exposure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The preview promotes multi-platform candidate profiling, match scoring, automated follow-up, and report export before giving any prominent privacy warning or usage constraints. Because the skill processes personal and potentially sensitive professional data across platforms, lack of an upfront warning increases the likelihood of privacy misuse, over-collection, noncompliant outreach, or unsafe handling of exported candidate dossiers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The document instructs users to run npx clawhub@latest publish, which fetches and executes the latest package version at runtime rather than a reviewed, fixed version. This creates a supply-chain risk: if the upstream package is compromised or changes behavior, users may execute untrusted code during publishing.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

This is a second occurrence of the same unsafe publication instruction using npx clawhub@latest, again causing remote code execution risk from an unpinned dependency. Repeating it in the final 'publish command' section increases the chance that users will copy-paste and run it without scrutiny.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The guide instructs users to generate personalized outreach emails and manage candidate pipeline status using identifiable candidate information, but it provides no privacy, consent, retention, or anti-harassment guidance. In a recruiting context, this can normalize improper handling of personal data and unsolicited outreach at scale, increasing compliance and abuse risk.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The configuration example hard-codes default_language = zh-CN, which imposes a specific locale by default. This can violate language/locale policy when the skill does not clearly offer user choice or explain a justified regional constraint.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The markdown shows saving candidate profiles to a database and exporting recruiting reports, which affects personal data handling. Although the document includes a general compliance section later, it does not clearly warn users at the point of use that these actions store or disseminate candidate data and may have privacy implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README provides example code to transmit full candidate profile data to Feishu Bitable, an external service, without an adjacent explicit warning about third-party disclosure, consent, data minimization, or tenant/account boundaries. Because the skill is specifically designed to aggregate professional and potentially personal candidate information, this increases the risk of unintended privacy violations or over-sharing to external SaaS systems.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The README instructs users to run npx clawhub@latest install tech-recruiter-pro, which pulls and executes the latest published package version at install time. This creates a supply-chain risk because a compromised or malicious upstream release could execute arbitrary code on the user's system, and the recruiting-skill context does not reduce that danger.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

README 在配置示例中将 default_language = zh-CN 设为默认值,但未说明这是可选默认、可由用户自由选择,或仅适用于特定地区场景。根据规则,若技能在自然语言层面强制特定语言/locale 且没有用户 opt-in,就属于语言/locale 政策风险。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file is written primarily in Chinese and explicitly requires Chinese-language artifacts such as README_zh-CN.md, Chinese templates, and Chinese submission text. That creates a natural-language locale constraint, but the file does not indicate that this is optional, user-selected, or justified as a region-specific skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The security statement makes an absolute claim that the skill will not send data to unauthorized third parties, yet the same document describes integrations with external APIs and platforms that necessarily transmit candidate-related queries or metadata off the local system. This kind of contradictory assurance is dangerous because operators may rely on the statement and use the skill in regulated or sensitive hiring contexts without understanding what data leaves the environment.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The document claims the skill will not violate robots.txt or platform restrictions, while elsewhere acknowledging scraping-style access and lack of official APIs for some sources. This is a risky inconsistency because it can mislead users into believing collection methods are compliant by default, when actual execution could trigger unauthorized crawling, terms-of-service violations, or collection from prohibited sources.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill contains contradictory guidance for captcha handling: one section says to pause immediately, while the execution logic explicitly suggests waiting and then using proxy IPs after a captcha. That creates operational instructions for circumventing anti-abuse controls on third-party services, which can violate platform terms, increase legal/compliance risk, and encourage automated scraping beyond permitted limits.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file contains user-facing natural language exclusively in Chinese, including headings, results, and release guidance, but does not indicate that the language is optional or region-specific. Under the language/locale policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The email configuration sets default_language = zh-CN, which is a natural-language locale choice applied by default. Under the policy, forcing a specific language without user opt-in is a locale policy violation unless it is clearly justified as region-specific, which is not documented here.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document explicitly proposes aggregating cross-platform personal and professional data into a unified candidate profile and weighted score, but it provides no guidance on consent, lawful basis, data minimization, retention, or fairness. This creates a real privacy and profiling risk because users could operationalize invasive recruitment screening or automated decision-making on identifiable individuals without safeguards.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The examples show targeted searches for named individuals and employees of a specific company across multiple platforms, including social and community sources, without any warning about sensitivity, permissible use, or risk of intrusive monitoring. In a recruiting skill, this materially increases the chance of misuse for doxxing-like profiling, discriminatory screening, or covert surveillance of candidates.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The guide explicitly recommends building a unified candidate profile by aggregating academic, professional, code, and community data from multiple platforms, but it provides no privacy, consent, minimization, or lawful-use guidance. In a recruiting context, this can normalize overcollection and profiling of personal data, creating compliance and misuse risk even if no exploit code is present.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The document instructs users to export API keys, client secrets, and bot tokens, but gives no warning about secure secret storage, least privilege, rotation, or avoiding disclosure in shells, logs, and repositories. This can lead users to mishandle credentials, causing unauthorized access to third-party accounts and APIs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This Python example invokes searches across external platforms including AMiner, Google Scholar, GitHub, arXiv, LinkedIn, Reddit, Discord, Hugging Face, and X/Twitter, which implies network requests and transmission of user-supplied query terms. While the script prints result banners, it does not disclose that queries will be sent to third-party services or warn about privacy implications.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file's docstrings and user-facing print statements are written in Chinese throughout, which hard-codes a specific language for interaction. The policy allows locale constraints only when justified or when the user is given a language choice, neither of which is indicated here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.