T08 · Insecure Dependencies
Warning
- Location
- README.md:93
- Finding
- Unpinned Third-Party Dependencies and Mutable Update Sources<![CDATA[ ## Vulnerability Details **File Location**: `README.md:93-111` and `README.md:313-316`; equivalent instructions appear in `README.zh-TW.md` **Vulnerability Type**: Supply-chain exposure through unpinned packages and mutable repository branches **Risk Level**: Medium ### Vulnerable Code ```bash npm i -g clawhub # install ClawHub CLI (one-time) clawhub install notebooklm-studio ``` ```bash git clone --recurse-submodules https://github.com/jasontsaicc/notebooklm-studio-skill.git cd notebooklm-studio-skill ``` ```bash pip install "notebooklm-py[browser]" playwright install chromium ``` The documented update procedure also pulls directly from a mutable branch: ```bash cd notebooklm-py && git pull origin main && cd .. pip install -e "notebooklm-py[browser]" ``` ### Technical Analysis The installation instructions do not pin exact npm or Python package versions, package hashes, Git tags, submodule commits, or immutable repository commit IDs. The update procedure explicitly pulls from the mutable `main` branch and installs the resulting checkout in editable mode. The project identifies `notebooklm-py` as an unofficial NotebookLM API and CLI. That CLI operates with an authenticated Google NotebookLM browser session, increasing the sensitivity of any code executed through its installation or update process. No malicious dependency was confirmed during this audit. The vulnerability is that the effective code installed in the future can differ from the code reviewed here. A compromised package publisher, repository account, branch, release pipeline, or transitive dependency could introduce arbitrary installation-time or runtime behavior. ### Attack Path 1. An attacker compromises a dependency publisher, upstream repository, package registry account, or transitive dependency. 2. The attacker publishes a malicious release or modifies the upstream `main` branch. 3. A user follows the documented unpinned installation or update instructions. 4. Packa ...[truncated 1039 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin exact npm and Python dependency versions rather than installing the latest available releases. 2. Provide a lockfile with verified transitive dependency versions and integrity hashes. 3. Pin Git dependencies and submodules to reviewed commit IDs instead of cloning or pulling mutable branches. 4. Replace `git pull origin main` with an update procedure that checks out a signed, reviewed release tag or commit. 5. Publish checksums or signatures for supported releases and document how users should verify them. 6. Recommend installation in a dedicated virtual environment or isolated container under a non-privileged account. 7. Avoid administrator-level package installation unless strictly required. 8. Document the security implications of granting an unofficial CLI access to an authenticated Google session. 9. Add dependency scanning and release-signature verification to the project's publication process. ]]>
