Back to skill

Security audit

NotebookLM PPT

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent NotebookLM presentation-generation helper, with disclosed external-service use and ordinary setup risks rather than hidden or destructive behavior.

Install the CLI in an isolated environment if possible, review the NotebookLM CLI package before use, and avoid adding confidential source documents unless you are comfortable processing them through NotebookLM. Adjust the language flags and prompt text if you do not want Chinese output.

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
SKILL.md:16
Finding
Unpinned Third-Party Package Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 16–19 **Vulnerability Type**: Unpinned package installation from a mutable package index **Risk Level**: Medium ```bash 1. **安装 nlm CLI** ```bash pip install notebooklm-mcp-cli ``` ``` ### Technical Analysis The skill directs users or agents to install `notebooklm-mcp-cli` without specifying an exact version, package hashes, a lock file, or an approved package index. As a result, the installed package and its transitive dependencies can change after this skill has been reviewed. Python package installation can execute package-controlled build and installation logic. If the package, its maintainer account, the selected package index, or a transitive dependency is compromised, installation may execute attacker-controlled code with the privileges of the user running `pip`. This finding concerns supply-chain integrity. The audited files contain no evidence that the named package is currently malicious. ### Attack Path 1. An attacker compromises the package, a maintainer account, the configured package index, or a transitive dependency. 2. The attacker publishes a malicious release that remains compatible with the unpinned package name. 3. A user or agent follows the skill instructions and runs `pip install notebooklm-mcp-cli`. 4. Pip resolves the mutable package and dependency versions from the active index. 5. Malicious build, installation, or runtime code executes locally. 6. The code operates with the installing user's privileges and may access files, environment variables, credentials, and agent data available to that account. ### Impact Assessment Successful exploitation could permit arbitrary code execution under the installing user's account. The accessible scope may include local documents, environment variables, NotebookLM authentication material, OpenClaw data, and other credentials readable by that user. System-wide impact is possible if installation is performed with adminis ...[truncated 87 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an exact, reviewed version: ```bash python -m pip install notebooklm-mcp-cli==<reviewed-version> ``` 2. Use a requirements or lock file containing cryptographic hashes, and install with hash verification: ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Pin and verify all transitive dependencies rather than relying only on a top-level version constraint. 4. Configure an explicitly approved package index and prevent unintended fallback to untrusted indexes. 5. Install the CLI in a dedicated virtual environment or other isolated runtime under a non-administrative account. 6. Review package provenance, release signatures where available, maintainer history, and dependency changes before updating the pinned version. 7. Integrate dependency vulnerability and integrity scanning into the release process.
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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)

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
# 创建笔记本
nlm notebook create "演示文稿"

# 添加源文档
nlm source add <notebook_id> --url "https://..."
Confidence
81% confidence
Finding
Because the notebook acts as persistent state, later commands may inherit previously added URLs, source content, or generated context without the user realizing it. This makes the skill more dangerous when handling sensitive or proprietary documents, as output artifacts could inadvertently include stale or unauthorized information.

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
# 创建笔记本
nlm notebook create "演示文稿"

# 添加源文档
nlm source add <notebook_id> --url "https://..."
Confidence
81% confidence
Finding
Because the notebook acts as persistent state, later commands may inherit previously added URLs, source content, or generated context without the user realizing it. This makes the skill more dangerous when handling sensitive or proprietary documents, as output artifacts could inadvertently include stale or unauthorized information.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The instructions explicitly require Chinese responses and set the slide generation language to `zh`, which imposes a specific language/locale on all users. The file does not indicate that this is optional, user-selected, or justified as a region-specific skill.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
This markdown file contains user-facing instructions and templates exclusively in Chinese, and it does not state that the language is optional or region-specific. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Rp1

Low
Category
MCP Rug Pull
Confidence
60% confidence
Finding
pip install without ==version installs the latest release, which could include malicious changes.

Static analysis

No suspicious patterns detected.