T08 · Insecure Dependencies
- Location
SKILL.md:20- Finding
Unpinned Tweepy Dependency Creates Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:20-23andREADME.md:18
Vulnerability Type: Unpinned third-party dependency
Risk Level: MediumThe Skill installs Tweepy without a version constraint or package-integrity verification.
Complete vulnerable code snippets:
SKILL.md:20-23yaml install: - id: tweepy kind: pip package: tweepyREADME.md:18markdown 3. **Python 3** and `tweepy` (`pip3 install tweepy`)Technical Analysis
Both installation methods resolve whichever Tweepy release the configured Python package index currently considers appropriate. The project does not provide a reviewed version pin, lockfile, package hash, or index restriction. Consequently, the code installed at deployment time may differ from the dependency version originally reviewed.
This is a supply-chain hardening weakness rather than evidence that the current Tweepy package is malicious. Exploitation would require compromise of the package, its maintainer account, the package index, or the dependency-resolution path. If that occurred, package installation or import-time code could execute under the same account as the OpenClaw Agent.
The exposure is security-relevant because the scripts import Tweepy after Twitter credentials have been supplied through the environment. The dependency is also entrusted with OAuth credentials during client construction:
python client = tweepy.Client( consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET, )Attack Path
- An attacker compromises a future Tweepy distribution, its publishing account, the configured package index, or the dependency-resolution channel.
- A user installs or reinstalls the Skill using the unpinned
tweepydeclaration orpip3 install tweepy. - The installer resolves and executes the compromised pac ...[truncated 1097 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin Tweepy to an explicitly reviewed version in both metadata and documentation, for example:
yaml install: - id: tweepy kind: pip package: tweepy==REVIEWED_VERSION - Generate a lockfile or requirements file containing cryptographic hashes and install with hash enforcement:
bash python3 -m pip install --require-hashes -r requirements.txt - Pin and hash all transitive dependencies, not only Tweepy.
- Use an approved package index or internal artifact mirror and require TLS certificate validation.
- Run installation and execution as an unprivileged, isolated user. Avoid system-wide or privileged
pipinstallation. - Restrict the Skill process to only the credentials and filesystem paths needed for Twitter operations.
- Establish a dependency-update process that reviews release notes, source changes, provenance, and package hashes before updating the pinned version.
- Keep the dependency declaration in
SKILL.mdand the command inREADME.mdsynchronized so users cannot bypass the pin by following manual instructions.
- Pin Tweepy to an explicitly reviewed version in both metadata and documentation, for example:
