Back to skill

Security audit

Camera Capture

Security checks for vulnerabilities and agentic risk

Overview

This camera skill is mostly coherent, but it can activate the webcam and capture images without a clear just-in-time consent requirement.

Install only if you are comfortable with an agent being able to open the local webcam for explicit camera requests. Before use, require clear confirmation for each capture or preview, avoid ambiguous prompts like only saying camera, and consider pinning or reviewing the OpenCV dependency before installation.

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
requirements.txt:1
Finding

Unbounded OpenCV Dependency Allows Unreviewed Future Releases

Content
View full analysis
=4.5.0 ``` The same dependency is declared in `SKILL.md:9` and installation without a version pin is recommended by error messages at `scripts/camera.py:27`, `scripts/camera.py:52`, and `scripts/camera.py:101`: ```python print("ERROR: OpenCV not installed. Run: pip install opencv-python") ``` ### Technical Analysis The requirement specifies only a minimum version. Dependency resolution may therefore install any current or future release of `opencv-python` that satisfies `>=4.5.0`, without requiring a reviewed version or verifying an artifact hash. The package name is legitimate, and the project does not specify a suspicious package repository. The risk arises because the effective dependency can change after this Skill has been reviewed. If the upstream package, its publishing account, the configured package index, or a future release is compromised, a subsequent installation can retrieve attacker-controlled Python or native code. The scripts import `cv2` when camera functionality is invoked. Malicious code contained in the installed module could therefore execute under the identity and permissions of the user or Agent process. ### Attack Path 1. An attacker compromises the upstream package, a maintainer account, the package distribution infrastructure, or the package index configured in the deployment environment. 2. The attacker publishes or substitutes a malicious `opencv-python` release whose version satisfies `>=4.5.0`. 3. A user or deployment process installs dependencies from `requirements.txt`, or follows the unpinned `pip install opencv-python` guidance. 4. The resolver selects the malicious or compromised release because no exact version or artifact hash is enforced. 5. Malicious code may execute during package installation, native component loading, ...[truncated 746 chars]
Remediation
View remediation
``` 2. Generate and enforce cryptographic hashes for all dependency artifacts. Install with pip's hash verification: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Use a lock file or reproducible dependency-generation workflow so development, CI, and production resolve identical artifacts. 4. Restrict installations to an approved package index and disable untrusted extra indexes or mirrors. 5. Periodically update the pinned version through a controlled process that includes vulnerability scanning, provenance verification, compatibility testing, and review of release changes. 6. Update the installation guidance in `scripts/camera.py` to reference the reviewed requirements file instead of recommending an unconstrained package installation: ```python print("ERROR: OpenCV not installed. Install the reviewed dependencies from requirements.txt") ``` 7. Run dependency installation and camera operations under a non-privileged account or sandbox to limit the impact of a compromised native dependency. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This skill enables webcam capture and preview but does not prominently require explicit user consent or warn about the privacy sensitivity of activating a camera. In an agent setting, camera access is highly sensitive because ambiguous or indirect user requests could result in unintended image capture of the user or their surroundings.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The listed trigger phrases include broad terms like "camera" and "webcam," which can match casual conversation rather than a clear request to activate hardware. In a skill that controls a physical sensor, broad invocation increases the risk of accidental activation and unintended privacy-invasive behavior.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

The dependency is specified as opencv-python>=4.5.0, which allows any newer release to be installed and makes builds non-reproducible. This can unintentionally pull in vulnerable or breaking versions over time and weakens supply-chain control, especially for a skill that accesses local camera hardware.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
opencv-python>=4.5.0

Unverifiable Dependency: opencv-python has 16 known advisory(ies) (CVE-2017-12864 (Integer Overflow or Wraparound in OpenCV); CVE-2017-12598 (Out-of-bounds Read in OpenCV ); CVE-2019-14493 (NULL Pointer Dereference in OpenCV.) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
90% confidence
Finding

The manifest references opencv-python without pinning to a specific release, while the package family has multiple published advisories. Because the installed version is unconstrained above 4.5.0, there is no reliable way to determine whether deployment will include a vulnerable OpenCV build, which is risky for software processing camera input and native code.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This script immediately triggers photo capture when run, with no user-facing warning, consent prompt, or indication that the camera is being activated. In the context of a local camera-control skill, that creates a privacy risk because any caller that can invoke this wrapper can capture images without an explicit just-in-time confirmation from the user.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.