T08 · Insecure Dependencies
- Location
SKILL.md:20- Finding
Unpinned Dependency and Unverified Plugin Pack Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:20andSKILL.md:95-100
Vulnerability Type: Supply-chain exposure through unpinned packages and arbitrary plugin sources
Risk Level: MediumVulnerable documentation snippets:
markdown Tribunal is a Claude Code quality enforcement plugin. Once installed (`pip install tribunal && tribunal init`), it hooks into every file write, test run, and agent interaction.bash tribunal list-packs # browse registry tribunal install python-strict # 90% coverage, type hints, docstrings tribunal install go-tdd # go test -cover, go vet, -race flag tribunal install nextjs-quality # TypeScript strict, component tests, a11y tribunal install https://github.com/org/custom-pack # direct URL tribunal install ./local-pack/ # local directoryTechnical Analysis
The Skill recommends installing
tribunalfrom PyPI without pinning a version or validating an integrity hash. It also documents installation of plugin packs directly from arbitrary GitHub URLs and local directories without requiring a trusted-source allowlist, immutable commit reference, signature verification, checksum validation, or source review.This creates a supply-chain trust gap: the code ultimately installed can differ from the code previously reviewed. The exposure is particularly significant because the initialized dependency is described as intercepting file writes, Bash-related test activity, and agent lifecycle events. A malicious or compromised distribution could therefore execute in a security-sensitive development context.
The project itself contains only documentation and does not ship a malicious executable payload. Exploitation depends on compromise or malicious control of an external package or pack source.
Attack Path
- An attacker compromises a Tribunal package release, a plugin-pack repository, or ano ...[truncated 1230 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin Tribunal to a reviewed, trusted version, for example by using an exact version constraint rather than an unconstrained
pip install tribunal. - Require package hashes through a locked requirements file and install with hash verification, such as pip's
--require-hashesworkflow. - Prefer signed releases and document how users must verify signatures or checksums before installation.
- Restrict plugin packs to an explicit allowlist of reviewed publishers and repositories.
- For Git-based packs, require an immutable reviewed commit SHA rather than a mutable branch or generic repository URL.
- Require manual source review for local and remote packs before installation, including examination of installation scripts, hooks, and subprocess execution.
- Install and test packages in an isolated virtual environment or container with minimal filesystem access and no unnecessary credentials.
- Document the lifecycle hooks and permissions enabled by
tribunal init, and require explicit user confirmation before enabling them. - Maintain a dependency lockfile and periodically audit pinned dependencies and plugin packs for newly disclosed vulnerabilities or ownership changes.
- Pin Tribunal to a reviewed, trusted version, for example by using an exact version constraint rather than an unconstrained
