T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_daily.js:14- Finding
Chromium Is Launched with Browser Sandboxing Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to fetch supermarket specials as advertised, but it runs browser automation against external websites with Chromium sandboxing disabled and non-reproducible dependency installation.
Review before installing. Run it only in a constrained, unprivileged environment, avoid running npm or browser automation as root, pin dependencies and commit a lockfile before production use, and remove Chromium no-sandbox flags if your host supports normal sandboxing.
scripts/fetch_daily.js:14Chromium Is Launched with Browser Sandboxing Disabled
package.json:10Puppeteer Dependency and Browser Artifacts Are Not Reproducibly Pinned
The skill advertises shell-based execution paths (npm start, node ..., bash ...) but does not declare any tool scope or permission boundaries. That creates an execution-safety gap: an agent or user may run local code with network access and filesystem/process effects without explicit authorization metadata, increasing the risk of unintended command execution.
Using npx puppeteer without pinning a version can fetch whatever package version is current at execution time, making the environment non-reproducible and exposing users to supply-chain risk if a bad or incompatible release is published. In a skill that encourages command execution, this increases the chance of unexpectedly running unreviewed code.
The header comment explicitly states 'Fetches Coles and Woolworths specials for the week'. However, the code contains a real browser-based fetch only for Coles, while Woolworths is handled by printing a URL and search suggestion rather than performing a fetch.
The skill description says it fetches sale details from both Woolworths and Coles for comparison or checking current specials. In this file, only Coles is programmatically fetched; the Woolworths section outputs a source label and user instructions instead of retrieving any data.
The description restricts the skill to Australian supermarkets, and later narrows performance to Melbourne metro area postcodes. This imposes a locale-specific scope without explicit opt-in language or a clearer justification in the description, which can conflict with language/locale policy expectations.
The skill tells users to run automation scripts and browser-driven scraping but does not clearly warn that these commands will make live requests to Coles and third-party aggregator sites. Lack of disclosure can lead to unexpected outbound traffic, website interaction, and possible policy/compliance issues in restricted environments.
The dependency on puppeteer uses a caret range (^22.0.0), which allows automatic installation of newer minor and patch releases. This weakens supply-chain reproducibility and can unexpectedly introduce vulnerable or malicious upstream changes without any manifest change in this skill.
"coles": "node scripts/fetch_with_puppeteer.js"
},
"dependencies": {
"puppeteer": "^22.0.0"
},
"engines": {
"node": ">=18.0.0"
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The code hard-codes the locale 'en-AU' when formatting the date, which imposes a specific language/locale choice on all users. The file does not offer a locale choice or document that this skill is intentionally limited to an Australian regional context.
The request header explicitly sets Accept-Language: en-US,en;q=0.5, which imposes a specific language/locale preference. Forcing a locale without offering user choice can violate language/locale policy requirements, especially in a general-purpose skill.
The Coles request also hard-codes Accept-Language: en-US,en;q=0.5, enforcing a specific locale preference. This is a natural-language policy concern because the skill does not let the user choose or explain why that locale is required.
No suspicious patterns detected.