Back to skill

Security audit

Hubspot Crm

Security checks for vulnerabilities and agentic risk

Overview

This HubSpot CRM skill is coherent, but it can change and delete live CRM records using a bearer token without built-in confirmation safeguards.

Review before installing if this would be used against a production HubSpot account. Use a dedicated private app token with only the scopes needed, avoid broad administrative tokens, and require explicit human confirmation before running delete, update, association, or deal-stage commands.

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

Note
Location
SKILL.md:87
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:87-93
Vulnerability Type: Unpinned third-party dependency and insufficiently reproducible installation
Risk Level: Low

Vulnerable Code

markdown
## Requirements

- Python 3.8+
- `requests` (standard: `pip install requests`)
- `HUBSPOT_API_KEY` environment variable

Technical Analysis

The documented installation command installs whichever version of requests is selected by the package index at installation time. The project does not provide a lockfile, an exact version constraint, package hashes, or an explicitly trusted package-index configuration.

This makes installations non-reproducible and prevents users from verifying that the installed dependency is the same release that was reviewed with the Skill. The package name is correctly spelled and refers to a legitimate, widely used package; therefore, there is no evidence that the project intentionally introduces a malicious dependency. The risk depends on a future upstream release, package-index compromise, dependency compromise, or unsafe package-index configuration.

Attack Path

  1. An attacker compromises the relevant package release, its transitive dependency chain, or a package source configured on the user's system.
  2. A user follows the documented pip install requests instruction without version or hash verification.
  3. The package manager retrieves dependency artifacts that were not represented by the audited project.
  4. Malicious dependency code executes during package loading or when scripts/hubspot_crm.py imports and uses requests.
  5. Because the program reads HUBSPOT_API_KEY from its environment, malicious code running in the same Python process could access that token and perform actions allowed by the token's HubSpot scopes.

Impact Assessment

Exploitation could execute code with the privileges of the user running the installation or CLI. Within the process, ...[truncated 592 chars]

Remediation
View remediation

Remediation Suggestions

  1. Add a requirements file that pins a reviewed version, for example:

    text
    requests==<reviewed-version>
    
  2. Generate and verify cryptographic hashes for the package and its transitive dependencies, then require hash validation:

    bash
    python3 -m pip install --require-hashes -r requirements.txt
    
  3. Use a dependency-locking workflow such as pip-tools to resolve and pin the complete transitive dependency graph.

  4. Explicitly use an approved package index and prevent unintended fallback to untrusted indexes.

  5. Periodically update pinned versions after vulnerability scanning and review rather than relying indefinitely on an outdated release.

  6. Run the CLI under a least-privileged account and configure the HubSpot private-app token with only the scopes required by the intended commands.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (29)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 25)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 26)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 29)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 33)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 36)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 39)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 43)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 44)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 47)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 50)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 53)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 56)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 60)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 63)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 66)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 70)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 73)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 76)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 79)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 83)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 86)May include surrounding context.

md
python3 scripts/hubspot_crm.py contacts-list

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill advertises commands that require environment access for the HubSpot token and network access to the HubSpot API, but it does not declare any explicit tool scope such as permissions or allowed-tools. This can cause the agent to run with broader-than-expected capabilities, reducing user visibility and increasing the chance of unintended outbound access or token use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill sends contact, deal, company, and activity data to the HubSpot API but does not disclose that potentially sensitive CRM information will leave the local environment and be transmitted to a third-party service. This can lead to privacy, compliance, and data-handling risks if users invoke the skill without understanding what data is being shared.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill exposes destructive CRM operations like deleting contacts and modifying deals/companies without warning the user about irreversible or business-impacting actions. In an agent setting, missing guardrails increases the risk of accidental record deletion, unauthorized workflow changes, and integrity issues in production CRM data.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.