Trust Assessment
notebooklm received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 20 findings: 10 critical, 10 high, 0 medium, and 0 low severity. Key findings include Arbitrary command execution, File read + network send exfiltration, Unsafe deserialization / dynamic eval.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 20, 2026 (commit e36d6fd3). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings20
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/__init__.py:53 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/__init__.py:65 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/run.py:38 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/run.py:91 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/setup_environment.py:54 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/setup_environment.py:62 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/setup_environment.py:75 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/notebooklm/scripts/setup_environment.py:132 | |
| CRITICAL | File read + network send exfiltration AI agent config/credential file access Remove access to sensitive files not required by the skill's stated purpose. SSH keys, cloud credentials, and browser data should never be read by skills unless explicitly part of their declared functionality. | Manifest | skills/notebooklm/SKILL.md:189 | |
| CRITICAL | Untrusted URL leads to Credential Harvesting via Browser Context The `ask_notebooklm` function in `scripts/ask_question.py` accepts a `notebook_url` parameter, which is derived from untrusted user input. This URL is used to navigate a Playwright browser instance. The browser context is configured to use a persistent user data directory and explicitly injects authentication cookies from `state.json` (which contains sensitive Google/NotebookLM session cookies). If a malicious `notebook_url` is provided, an attacker-controlled website loaded in the browser context can access and exfiltrate these sensitive authentication cookies, leading to full account compromise. Implement strict validation for the `notebook_url` parameter. The URL must be validated against an allow-list to ensure it exclusively points to `https://notebooklm.google.com/` and its subpaths. Any other URL should be rejected. Alternatively, launch the browser context without persistent data or injected cookies when navigating to user-provided URLs, or use a separate, isolated browser context for untrusted URLs. | LLM | scripts/ask_question.py:70 | |
| HIGH | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/notebooklm/scripts/__init__.py:4 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv_and_run'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/__init__.py:53 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv_and_run'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/__init__.py:65 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/run.py:38 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'main'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/run.py:91 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_script'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/setup_environment.py:132 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/setup_environment.py:54 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/setup_environment.py:62 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'ensure_venv'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/notebooklm/scripts/setup_environment.py:75 | |
| HIGH | Sensitive path access: AI agent config Access to AI agent config path detected: '~/.claude/'. This may indicate credential theft. Verify that access to this sensitive path is justified and declared. | Static | skills/notebooklm/SKILL.md:189 |
Scan History
Embed Code
[](https://skillshield.io/report/55096c3bc63082b0)
Powered by SkillShield