Back to skill

Security audit

flomo-crud-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill’s flomo CRUD purpose is coherent, but its recommended setup can automatically run an unpinned browser bridge package in a logged-in Chrome environment.

Review the Chrome MCP setup before installing. Prefer a pinned, reviewed version of mcp-chrome-bridge, avoid automatic first-time npx execution when possible, and use deletion only after checking the displayed memo_id, timestamp, and snippet match the intended memo.

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
README.md:63
Finding

Unpinned Third-Party Package Is Automatically Downloaded and Executed

Content
View full analysis

Vulnerability Details

File Location: README.md, lines 63–67
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: Medium

toml
[mcp_servers.chrome-mcp-server]
enabled = true
command = "npx"
args = ["-y", "-p", "mcp-chrome-bridge", "mcp-chrome-stdio"]

Technical Analysis

The recommended configuration invokes npx with -y and requests mcp-chrome-bridge without an exact version or integrity constraint. When the MCP server starts, npm may download and execute whichever package version currently satisfies that unversioned package name. The -y option suppresses the normal installation confirmation.

This creates a supply-chain trust boundary outside the reviewed project. npm package lifecycle scripts and the selected mcp-chrome-stdio executable can run with the privileges of the user launching the Agent. The configuration does not bind the package to a reviewed release, lockfile, checksum, or immutable artifact.

The documentation associates the integration with hangwin/mcp-chrome, but the executable configuration does not independently verify that the package resolved from npm corresponds to a trusted, audited source release.

Attack Path

  1. An attacker compromises the npm account, package publication process, or another part of the distribution chain for mcp-chrome-bridge.
  2. The attacker publishes a malicious release under the package name that the unversioned configuration resolves.
  3. A user follows the documented configuration and starts the configured MCP server.
  4. npx -y -p mcp-chrome-bridge mcp-chrome-stdio downloads the malicious release without an interactive confirmation.
  5. Package installation scripts or the MCP executable run attacker-controlled code with the Agent user's local privileges.
  6. Because the component is intended to integrate with a logged-in Chrome session, malicious code may also attempt to access browser-visible data or abuse the browser automation capabilities avai ...[truncated 662 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin mcp-chrome-bridge to an exact, reviewed version rather than allowing npm to resolve the latest release.
  2. Use a lockfile and a reproducible installation process instead of downloading the package dynamically whenever the MCP server starts.
  3. Verify the package publisher, repository, release provenance, and expected executable before recommending installation.
  4. Enforce npm integrity verification through a committed lockfile or a documented checksum/signature validation process.
  5. Remove -y from first-time setup so users can review the package and resolved version before execution.
  6. Prefer installing the verified dependency separately and configuring the MCP server to invoke the pinned local executable.
  7. Run the bridge with least privilege and restrict its filesystem, environment-variable, network, and browser access to what is necessary.
  8. Document a tested version-upgrade procedure that requires security review before changing the pinned release.
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 (1)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document explicitly permits a programmatic delete fallback via a Vue method on a matched memo, but does not require an explicit user confirmation or a final pre-delete verification step. In a live logged-in browser session, locator drift, memo_id extraction mistakes, or automation errors could irreversibly delete the wrong memo, making this a real unsafe-destructive-action weakness in the skill design.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.