T08 · Insecure Dependencies
- Location
examples/example-docker.md:7- Finding
Mutable and Unlocked Third-Party Dependencies Permit Supply-Chain Substitution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed SpielerPlus/TeamPlus scraper that uses provided account credentials to fetch team data, with privacy and dependency-hygiene caveats but no evidence of hidden or malicious behavior.
Install only if you are authorized to access the SpielerPlus/TeamPlus account and team data involved. Treat the credentials and scraped outputs as sensitive, avoid committing .env files, avoid dumping full financial or absence data into shared logs, and consider pinning dependencies or using a reviewed lockfile before running it in shared or production environments.
examples/example-docker.md:7Mutable and Unlocked Third-Party Dependencies Permit Supply-Chain Substitution
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm install
cp .env.example .env
# Edit .env with your credentials
npm run teams
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm install
cp .env.example .env
# Edit .env with your credentials
npm run teams
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
npm install
cp .env.example .env
# Edit .env with your credentials
npm run teams
```
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
npm install
cp .env.example .env
# Edit .env with your credentials
npm run teams
```
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### Required Setup
1. **npm Token** (GitLab CI/CD Variable: `NPM_TOKEN`)
- https://www.npmjs.com → Profile → Access Tokens → Create Automation Token
2. **ClawHub** (optional, automatic)
- Uses `clawdhub` in CI
Referenced artifact was not completely inspected
const SpielerPlusScraper = require('./src/index.js');
The skill uses 'env' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.
The file calls require('dotenv').config() and reads process.env despite the manifest declaring only network permission. In a constrained agent platform, undeclared local environment access can expose unrelated secrets from the host runtime and expands the trust boundary beyond what users expect from a network-only scraping skill.
The README explicitly promotes extraction of team members, absences, finances, participation statistics, and profile data, all of which may contain personal or financial information, but gives no meaningful privacy, consent, retention, or sharing guidance. In a scraping tool with network access, this omission increases the likelihood of unauthorized collection, overexposure, or mishandling of sensitive team data.
The README instructs users to place account credentials in a .env file or export them as environment variables without warning about secret hygiene such as excluding .env from version control, avoiding credential reuse, and protecting local/CI environments. Because the skill accesses a real third-party account, weak guidance here can lead to credential leakage and subsequent account compromise.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The documentation instructs users to provide live account credentials and describes access to potentially sensitive team data such as members, absences, finances, roles, and profiles, but it does not warn about privacy, least-privilege use, or secure credential handling. This increases the chance that users expose personal or financial data without understanding the sensitivity or validating how the scraper stores, transmits, or outputs that information.
The Docker example runs npx playwright install chromium without pinning the Playwright package version, which can cause non-reproducible builds and expose users to unexpected upstream changes or a compromised dependency release at build time. In a network-enabled scraping skill that relies on browser automation, this increases supply-chain risk because the container fetches code during build from the public registry.
Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.
The example instructs users to pass account credentials via environment variables without any warning about secure handling, shell history exposure, CI/CD logging, or safer alternatives. In the context of a scraper for a team-management platform, these credentials likely grant access to personal and organizational data, so careless handling could lead to account compromise or privacy exposure.
The example retrieves and prints potentially sensitive team data including members, finances, participation, and profile details directly to stdout. In real environments, console output may be captured by logs, CI systems, terminals, or shared shells, causing unintended disclosure of personal or financial information.
This is a manifest file, so vague-trigger review applies. The description says 'Generic SpielerPlus/TeamPlus scraper for team management data,' which is broad and does not define when the skill should or should not be invoked, increasing the risk of matching loosely related requests about team data.
For markdown files and code files, missing-warning findings should cover behaviors affecting privacy or user data; this manifest description indicates scraping team management data, which commonly includes personal, schedule, attendance, or financial information. The package metadata provides no disclosure about handling sensitive data, authentication, or privacy implications.
This code exposes potentially sensitive organizational data such as team members, absences, finances, participation, roles, and profile details directly to stdout and via JSON output. Although the operations are part of the scraper's purpose, the CLI provides no warning that personal or financial data may be displayed or exported, which is a missing disclosure for safety-sensitive data handling.
The manifest describes a network scraper for the SpielerPlus/TeamPlus platform, but the code also loads a local .env file and reads process environment variables for secrets. Accessing local configuration/secrets is a separate capability from scraping and is not declared in the skill purpose or permissions.
The code reads login credentials from environment variables and then uses them to authenticate to an external service, but there is no confirmation prompt, user-facing log, or warning to disclose that account credentials will be used for automated access. Because this skill also navigates authenticated pages and extracts team data, users are not clearly informed in-code about the privacy-sensitive nature of the operation.
The skill enumerates and extracts sensitive organizational data including members, absences, finances, participation, roles, and team profile information. In an agent setting, bulk collection of personal and financial team data without scoped consent, minimization, or access controls increases the risk of privacy violations and over-collection well beyond a narrowly tailored scraping function.
This markdown file instructs the user to copy an environment file and edit it with credentials, but it provides no warning about protecting secrets, avoiding commits, or the fact that the skill will use sensitive account data. Because markdown files should disclose behaviors affecting privacy or sensitive data, this is a missing warning.
Declared permissions with no matching code capability may indicate removed functionality or pre-staging for future abuse.
The code accesses SPIELERPLUS_EMAIL and SPIELERPLUS_PASSWORD, which are sensitive credentials, but provides no user-facing disclosure about credential usage or handling. Comments only note initialization and optional team selection, not that authentication secrets are being consumed.