T08 · Insecure Dependencies
- Location
SKILL.md:43- Finding
Unpinned Runtime Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:43
Vulnerability Type: Unpinned third-party runtime dependency
Risk Level: MediumComplete Code Snippet:
markdown - `nlm` CLI instalado: `pip install notebooklm-mcp-cli`The same unsafe installation instruction also appears in
README.md:13:bash pip install notebooklm-mcp-cliThe dependency manifest does not declare the required CLI and instead contains only an unrelated package at
requirements.txt:1:text python-dotenv==1.0.0Technical Analysis
The project instructs users to install
notebooklm-mcp-cliwithout pinning an exact reviewed version or verifying an integrity hash. Consequently, the command resolves mutable third-party package content from the configured Python package index at installation time.The installed package supplies the
nlmexecutable invoked byscripts/ask.py:18-24:python result = subprocess.run( ["nlm", "notebook", "query", nb_id, question], capture_output=True, text=True, timeout=60 )Because
requirements.txtomits the actual runtime dependency, the project provides no reproducible or centrally auditable version constraint for it. This creates supply-chain exposure if a future package version is compromised, maliciously modified, or introduces unsafe behavior.Attack Path
- An attacker compromises the package publisher account, distribution channel, or a future release of
notebooklm-mcp-cli. - A user follows the documented
pip install notebooklm-mcp-cliinstruction. - The package manager retrieves the attacker-controlled release because no exact version or hash is required.
- Malicious installation hooks may execute during installation, or malicious runtime code may be installed as the
nlmexecutable. - When
scripts/ask.pyinvokesnlm, the compromised executable runs with the privileges and ...[truncated 565 chars]
- An attacker compromises the package publisher account, distribution channel, or a future release of
- Remediation
View remediation
Remediation Suggestions
-
Declare
notebooklm-mcp-cliin the project dependency manifest using an exact, reviewed version. -
Generate and distribute a lockfile or hash-locked requirements file. Install with hash enforcement, for example:
bash python -m pip install --require-hashes -r requirements.txt -
Update
SKILL.mdandREADME.mdso installation uses the audited manifest rather than an unconstrained package name. -
Verify package provenance and configure an approved package index explicitly in deployment environments.
-
Review and test dependency updates before changing the pinned version; use automated dependency and vulnerability scanning.
-
Remove
python-dotenvfromrequirements.txtif it is not required, or document and use it if it is genuinely needed. -
Run the skill and its dependencies under a least-privileged account or isolated environment to reduce the impact of a compromised package.
-
