T08 · Insecure Dependencies
- Location
SKILL.md:8- Finding
Unpinned Third-Party Package Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:8-11,SKILL.md:29,SKILL.md:48-50,metadata.json:8, andexamples/generate_og.py:2-4
Vulnerability Type: Unpinned and unauditable third-party dependency
Risk Level: MediumVulnerable Code
SKILL.md:8-11:yaml install: - kind: uv package: social-card bins: []SKILL.md:29andSKILL.md:48-50:markdown > **Import:** `pip install social-card` then `from social_card import SocialCard`bash pip install social-cardmetadata.json:8:json "install": "pip install social-card",examples/generate_og.py:2-4:python from social_card import SocialCard SocialCard("og").title("Hello World").subtitle("My first social card").render("og.png")Technical Analysis
The skill instructs the operator or agent to install
social-cardfrom an external package registry without specifying an exact version, integrity hash, immutable artifact, or lockfile. The project contains only documentation, metadata, and an example; it does not include the implementation of the importedsocial_cardmodule.Consequently, the behavior of the executable dependency cannot be verified from this artifact. The documented claims that the package performs no network access, blocks path traversal, and depends only on Pillow cannot be independently substantiated by auditing the supplied files.
An unpinned command such as
pip install social-cardresolves package contents at installation time. A future compromised or malicious registry release could execute code during installation or whensocial_cardis imported. The version0.2.1in the skill metadata identifies the skill itself but does not constrain the version of the package installed from PyPI.Attack Path
- An attacker compromises the publisher account, package repository, release process, or another part of the distribution chain for th ...[truncated 1205 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
social-cardto an exact, reviewed version in every installation instruction and metadata declaration. - Use a lockfile containing cryptographic hashes for the complete transitive dependency set.
- Require hash verification during installation, such as a fully pinned requirements file used with
pip install --require-hashes. - Vendor the reviewed implementation into the artifact or include its source so its security properties can be audited together with the skill.
- Publish and verify signed release artifacts or provenance attestations where supported.
- Install the dependency in an isolated, least-privilege virtual environment or container with restricted filesystem and network access.
- Keep the installation declarations in
SKILL.mdandmetadata.jsonsynchronized and add automated checks that reject unpinned dependencies. - Independently verify the documented path, dimension, input-length, file-format, and network-access protections against the exact pinned package release.
- Pin
