T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt, lines 1–3
Vulnerability Type: Unpinned dependencies and mutable package resolution
Risk Level: MediumVulnerable Code
text facebook_business python-dotenv urllib3<2Technical Analysis
The project does not pin any dependency to an exact, reviewed version and does not provide package hashes. The
urllib3<2constraint is only an upper bound and can still resolve to different releases over time.Consequently, identical installation commands may install unreviewed package versions. These dependencies execute in the same Python process that loads
META_ACCESS_TOKENandMETA_AD_ACCOUNT_ID. A compromised dependency release or package-distribution channel could therefore read those credentials, intercept Meta API data, modify reports, or execute arbitrary code with the privileges of the Skill process.No malicious dependency was identified in the reviewed files; the confirmed weakness is the absence of immutable dependency pinning and integrity verification.
Attack Path
- An attacker compromises a permitted dependency release or its distribution channel.
- A user installs the project after the compromised release becomes eligible under the mutable requirements.
- Python imports the affected package when
main.pyormeta_event_list.pyruns. - Malicious initialization code executes with the permissions of the Skill process.
- The malicious code reads environment variables containing the Meta access token and ad account ID, accesses retrieved advertising data, or performs other actions available to that process.
Impact Assessment
Successful exploitation could provide arbitrary code execution under the Skill process account. The resulting scope may include:
- Theft of the Meta access token and ad account identifier.
- Unauthorized access to advertising insights within the token’s granted permissions.
- Exposure of ad-set names, spending, conversion cou ...[truncated 337 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version.
- Generate and commit a lock file containing resolved transitive dependencies.
- Require cryptographic hashes during installation, such as with a hash-enabled requirements file produced by
pip-compile --generate-hashes. - Install dependencies with
pip install --require-hashes -r requirements.txt. - Review and test dependency updates before changing the lock file.
- Add automated dependency vulnerability and provenance scanning to CI.
- Run the Skill with minimal filesystem and network permissions and retain only the documented Meta permissions.
- Keep the Meta token out of source control and rotate it immediately if dependency compromise is suspected.
