Back to skill

Security audit

Dexcom CGM

Security checks for vulnerabilities and agentic risk

Overview

The skill appears intended to fetch Dexcom glucose readings, but it handles sensitive medical account credentials with limited scoping and security guidance.

Review this before installing if you are comfortable giving the skill access to your Dexcom account credentials and glucose readings. Prefer a restricted environment, avoid checked-in or shared config files, protect any local config containing the password, and consider pinning or locking dependencies before routine use.

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
scripts/glucose.py:2
Finding

Unpinned Runtime Dependencies Expose Credentials and Health Data to Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: scripts/glucose.py:2-5
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

python
# /// script
# requires-python = ">=3.10"
# dependencies = ["pydexcom", "fire"]
# ///

Technical Analysis

The script declares pydexcom and fire without exact version constraints or package integrity hashes. The documented execution method uses uv run, which may resolve and install dependency versions at runtime.

Because these dependencies execute in the same process as the Skill, their code can access DEXCOM_USER, DEXCOM_PASSWORD, glucose readings, and all other resources available to the invoking user. If a future dependency release or its distribution channel is compromised, invoking the Skill could execute attacker-controlled package code without any change to the reviewed project.

No evidence indicates that the currently named packages are malicious. The vulnerability is the absence of controls ensuring that users execute the specific dependency versions reviewed and approved by the project.

Attack Path

  1. An attacker compromises a future release or distribution path of an unpinned dependency.
  2. A user invokes the documented command, such as uv run scripts/glucose.py now.
  3. The package manager resolves and installs the compromised dependency version.
  4. Malicious package initialization or runtime code executes in the Skill process.
  5. That code reads the Dexcom credentials from the process environment, accesses returned glucose information, or performs other actions using the invoking user's permissions.
  6. The stolen information may be transmitted externally, or the compromised process may modify files and execute operations permitted to the user.

Impact Assessment

Successful exploitation could disclose Dexcom credentials and sensitive glucose measurements. Arbitrary dependency code would run with the privileges of the user ...[truncated 252 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin each dependency to an exact, reviewed version rather than allowing unconstrained resolution.
  • Generate and commit a lockfile that records the complete transitive dependency graph.
  • Require package hashes or equivalent integrity verification where supported.
  • Perform dependency updates through an explicit review process instead of resolving new versions during ordinary Skill execution.
  • Run vulnerability and provenance checks against direct and transitive dependencies before approving updates.
  • Execute the Skill with least privilege and expose only the environment variables required for Dexcom authentication.
  • Consider isolating execution in a restricted environment with limited filesystem and network access to reduce the impact of a dependency compromise.
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 (3)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill declares and relies on sensitive environment variables for Dexcom credentials but does not define any explicit tool scope or permission boundary. In an agent ecosystem, missing scope metadata can cause the skill to be over-privileged or executed without clear user consent around secret access, increasing the chance of unintended credential exposure or misuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The setup instructions tell users to place Dexcom usernames and passwords in shell environment variables or a local config file, but provide no warning about the sensitivity of those credentials or how they may be exposed through shell history, process environments, backups, or insecure file permissions. Because these are medical-account credentials tied to personal health data, compromise could expose private glucose data and enable unauthorized account access.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The code reads Dexcom credentials from environment variables and immediately uses them to authenticate to an external service, but the only docstring says it gets the current glucose reading. There is no confirmation prompt, user-facing log/print, or comment disclosing that credentials are consumed and transmitted for a network login.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.