Back to skill

Security audit

HireEase Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its job-application automation purpose, but it can send reusable HireEase credentials to a user-supplied API URL without a clear trusted-origin check.

Install only if you trust the configured HireEase deployment and can ensure the API base URL is restricted to approved HireEase HTTPS origins. Review resume contents before creating a public Drive link, and use the real application-recording step only when you intend the portal record to be created.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
skill.md:35
Finding

User-Controlled API Base URL Can Expose HireEase Credentials

Content
View full analysis

Vulnerability Details

File Location: skill.md, lines 35-50 and 58-65
Vulnerability Type: Unrestricted credential destination / insufficient endpoint validation
Risk Level: High

Vulnerable Code Snippet

markdown
2. `base url` to use? (e.g. `https://hireease.me` or `https://hireease-s33h.onrender.com`)
markdown
## Environment variables you should expect
- `HIREEASE_AGENT_EMAIL`
- `HIREEASE_AGENT_PASSWORD`
- `HIREEASE_API_BASE` (or use the `base url` I provided; remove trailing slash)
- `HIREEASE_CLIENT_EMAIL` (optional; default if I don’t supply client email)

If any required env var is missing, tell me exactly which one and stop.
markdown
## HireEase API endpoints (use `{BASE}` everywhere)
All private endpoints require login and use:

- `Authorization: Bearer <JWT>`

Discovery (no auth):
- `GET {BASE}/api/agent`
- `GET {BASE}/api/openapi.json`

Auth:
- `POST {BASE}/api/auth/login` with `{ "email", "password" }` → returns `{ token, user }`

Technical Analysis

The skill allows a user-provided base url to replace the configured API base and subsequently instructs the agent to submit secrets from HIREEASE_AGENT_EMAIL and HIREEASE_AGENT_PASSWORD to that origin. It does not require the selected URL to match an approved HireEase hostname, enforce HTTPS, reject embedded credentials or unexpected ports, or prohibit cross-origin redirects.

Consequently, the destination receiving reusable credentials is controlled by untrusted conversational input. A malicious endpoint can implement a convincing /api/auth/login response and fabricate subsequent API responses, allowing the workflow to continue after credential capture. Any bearer token sent to the same untrusted base would likewise be exposed.

Attack Path

  1. An attacker or untrusted user supplies an attacker-controlled URL when asked for the base url.
  2. The skill chooses that URL as {BASE} inste ...[truncated 1384 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove conversational control over the authentication origin. Load the HireEase API origin exclusively from trusted administrator-managed configuration.
  2. If multiple deployments must be supported, use an exact allowlist of approved HTTPS origins and reject all other schemes, hosts, ports, and IP-literal destinations.
  3. Canonicalize and validate the complete origin before accessing secrets. Do not rely on substring or suffix matching.
  4. Disable redirects for authentication requests, or validate every redirect destination against the same exact allowlist.
  5. Bind each credential to a single configured origin and refuse to release it when the request destination differs.
  6. Replace reusable passwords with short-lived, scoped, revocable agent tokens that have only the client and application permissions required by this workflow.
  7. Apply least privilege to the agent account and retain the existing rule that secrets and tokens must never be printed.
  8. Log security-safe metadata for rejected destination changes without recording credentials, tokens, or sensitive request bodies.
  9. Add tests confirming rejection of HTTP URLs, lookalike domains, subdomain tricks, embedded user information, IP addresses, non-approved ports, and cross-origin redirects.
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 (2)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs the agent to obtain and use a public Google Drive link for a generated resume, including making it accessible via 'Anyone with the link,' but it does not require a prominent privacy warning or informed consent about exposing personal information. Resumes commonly contain full names, email addresses, phone numbers, employment history, and other sensitive data, so publishing them publicly can create privacy, profiling, and identity-abuse risks.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill is broadly scoped to perform multiple sensitive actions—resume tailoring, PDF generation, job selection, and recording applications—without a narrowly defined invocation boundary. In an agent setting, ambiguous activation conditions can cause the workflow to run in unintended contexts, increasing the risk of unauthorized submissions or handling of sensitive personal/job-search data when the user did not clearly intend the full sequence.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.