T08 · Insecure Dependencies
- Location
collect_briefing_data.py:44- Finding
Unpinned Third-Party CLI Package Is Retrieved and Executed
- Content
View full analysis
Vulnerability Details
File Location:
collect_briefing_data.py:44-53; related invocation guidance appears inSKILL.md:41,SKILL.md:52,SKILL.md:269-272, andREADME.md:18
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
python def run_fulcra_json(*args: str) -> Any: command = os.environ.get("FULCRA_CLI_COMMAND", "uv tool run fulcra-api").split() result = subprocess.run( [*command, *args], capture_output=True, text=True, timeout=60, check=False, ) if result.returncode != 0: message = (result.stderr or result.stdout or "Fulcra CLI command failed").strip() raise RuntimeError(message) return parse_json_output(result.stdout)Related documented commands include:
bash uv tool run fulcra-api auth loginbash uv tool run fulcra-api --help uv tool run fulcra-api auth login --help uv tool run fulcra-api data-updates "14 hours" uv tool run fulcra-api calendar-events --helpTechnical Analysis
The default command uses
uv tool run fulcra-apiwithout an exact package version, lockfile, or integrity verification. Depending on the localuvcache and resolution behavior, this can retrieve and execute the currently available package release when the collector or authentication flow runs.The Skill legitimately needs a Fulcra client, but resolving a mutable package at execution time is not the minimum-risk way to provide that dependency. Authentication and all sensitive data queries consequently depend on package contents that can change after the Skill itself has been reviewed.
This is a supply-chain weakness rather than evidence that the current Fulcra package is malicious. The audited project contains no embedded malicious payload and does not itself read
~/.config/fulcra/credentials.json. Nevertheless, code executed as part of the CLI runs wi ...[truncated 1365 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
fulcra-apito a reviewed exact version rather than resolving an unconstrained release:bash uv tool run fulcra-api==REVIEWED_VERSION - Prefer installing the dependency once in a dedicated virtual environment and invoking its fixed executable path.
- Commit a lockfile with cryptographic hashes when the packaging workflow supports it.
- Verify package provenance, publisher identity, and release signatures or hashes before upgrades.
- Test and review each dependency update before changing the pinned version.
- Run the collector as an unprivileged, dedicated user with access only to the data and directories required for the briefing.
- Document the supported version so authentication and data-query behavior cannot silently change between runs.
- Pin
