Back to skill

Security audit

Dev Tools Pack

Security checks for vulnerabilities and agentic risk

Overview

This developer tool pack is not clearly malicious, but it contains unsafe file generators and a code-review command that can give misleading fake results.

Install only if you treat this as a rough template/demo pack. Do not rely on its code-review output for security or release decisions. Run generators only in a disposable or empty directory, avoid untrusted names/descriptions, and review generated HTML, extension manifests, CDN scripts, and overwritten files before opening, deploying, or publishing anything.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (6)

T09 · Insecure Skill Coding Practices

Error
Location
chrome-extension-generator.sh:45
Finding

Output Directory Traversal and Arbitrary File Overwrite in Chrome Extension Generator

Content
View full analysis
"$OUTPUT_PATH/manifest.json" << MANIFEST { "manifest_version": 3, "name": "$NAME", "version": "1.0.0", "description": "$DESCRIPTION", "permissions": ["storage"], "action": { "default_popup": "popup.html", "default_icon": "icon.png" }, "background": { "service_worker": "background.js" }, "icons": { "16": "icon.png", "48": "icon.png", "128": "icon.png" } } MANIFEST ``` The same attacker-controlled `OUTPUT_PATH` is subsequently used to write `popup.html`, `popup.js`, `background.js`, and `README.md`. ### Technical Analysis The extension name is converted to lowercase and spaces are replaced with hyphens, but path separators and `..` components are not removed. The optional output directory is also accepted without canonicalization or containment validation. Consequently, a name such as `../../target` produces a path outside the intended output directory. Shell quoting prevents word splitting, but it does not prevent the operating system from resolving traversal components. The `cat > file` redirections overwrite existing files without confirmation. ### Attack Path 1. An attacker supplies or influences the extension name or output directory. 2. The extension name contains traversal components such as `../../target`. 3. The script constructs `OUTPUT_PATH` using the unvalidated value. 4. The operating system resolves the traversal outside the intended generation root. 5. The script creates directories and overwrites predictable files such as `manifest.json`, `popup.html`, `background.js`, and `README.md`. 6. A later process ...[truncated 558 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
chrome-extension-generator.sh:62
Finding

Unsafe JSON and HTML Generation in Chrome Extension Template

Content
View full analysis
"$OUTPUT_PATH/manifest.json" << MANIFEST { "manifest_version": 3, "name": "$NAME", "version": "1.0.0", "description": "$DESCRIPTION", "permissions": ["storage"], "action": { "default_popup": "popup.html", "default_icon": "icon.png" }, "background": { "service_worker": "background.js" }, "icons": { "16": "icon.png", "48": "icon.png", "128": "icon.png" } } MANIFEST cat > "$OUTPUT_PATH/popup.html" << POPUP $NAME body { width: 300px; padding: 16px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } h1 { font-size: 16px; margin: 0 0 12px; } button { width: 100%; padding: 10px; background: #4285f4; color: white; border: none; border-radius: 4px; cursor: pointer; } button:hover { background: #3367d6; }

$NAME

$DESCRIPTION

Click Me POPUP ``` ### Technical Analysis `NAME` and `DESCRIPTION` are inserted directly into JSON and HTML without context-specific encoding. Quotation marks, backslashes, line breaks, closing tags, and markup characters therefore retain their syntactic meaning in the generated files. A crafted value can terminate a JSON string and add or alter manifest properties if the resulting document remains valid. In the popup, a crafted value can terminate an HTML element and inject arbitrary markup. Browser extension Content Security Policy may restrict some inline script techniques, but it does not make unesc ...[truncated 1210 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
saas-landing-page.sh:57
Finding

Output Directory Traversal and Arbitrary File Overwrite in SaaS Landing Page Generator

Content
View full analysis
"$OUTPUT_PATH/App.jsx" << 'REACT_APP' import React from 'react'; import Hero from './components/Hero'; import Features from './components/Features'; import Pricing from './components/Pricing'; import Testimonials from './components/Testimonials'; import CTA from './components/CTA'; import Footer from './components/Footer'; function App() { return (
); } export default App; REACT_APP ``` The constructed path is also used to overwrite `components/Hero.jsx`, `index.html`, and `README.md`. ### Technical Analysis The product-name transformation does not remove path separators or traversal sequences. Adding the `-landing` suffix does not prevent traversal; for example, a product value containing `../../target` still places the resulting destination outside the intended root after path normalization. The `--output` value is likewise not canonicalized. All generated files are opened with truncating redirection, so existing matching files are silently overwritten. ### Attack Path 1. An attacker controls or influences the product name or `--output` option. 2. The supplied product name contains traversal components. 3. The generator builds `OUTPUT_PATH` without checking canonical containment. 4. `mkdir -p` creates directories outside the intended output root. 5. Truncating redirections replace matching files in the escaped destination. 6. The overwritten source or web files may later be built, served, or deploye ...[truncated 460 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
saas-landing-page.sh:101
Finding

HTML and JSX Injection in Generated SaaS Landing Pages

Content
View full analysis
"$OUTPUT_PATH/components/Hero.jsx" << "HERO" export default function Hero() { return (

PRODUCT_NAME

DESCRIPTION

Get Started Free View Demo
); } HERO sed -i '' "s/PRODUCT_NAME/$PRODUCT/g" "$OUTPUT_PATH/components/Hero.jsx" sed -i '' "s/DESCRIPTION/$DESCRIPTION/g" "$OUTPUT_PATH/components/Hero.jsx" ``` ```bash cat > "$OUTPUT_PATH/index.html" << HTML $PRODUCT - $DESCRIPTION

$PRODUCT

Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
saas-landing-page.sh:141
Finding

Generated Pages Execute Mutable Third-Party JavaScript from CDNs

Content
View full analysis
``` ```html ``` The plain HTML template also includes: ```html ``` ### Technical Analysis The generated pages load JavaScript directly from external CDNs at page runtime. The Tailwind and Babel URLs do not specify exact immutable versions, while the React URLs use the mutable major-version alias `@18`. None of the resources has a Subresource Integrity hash. The effective executable code can therefore change after this Skill has been audited. A CDN compromise, account compromise, malicious upstream publication, or unexpected version change can cause arbitrary third-party JavaScript to execute in every generated page that loads the affected resource. ### Attack Path 1. A user generates and deploys a landing page. 2. A visitor opens the deployed page. 3. The browser retrieves JavaScript from the configured CDN URLs. 4. The CDN, upstream package, or mutable version alias serves altered code. 5. The browser executes that code in the context of the generated page. 6. The altered dependency can access page data and perform actions available to JavaScript under that origin's browser security policy. ### Impact Assessment Compromised remote dependencies can execute arbitrary browser-side JavaScript for all visitors of deployed generated pages. Potential impact includes page modification, credential or form-data capture, authenticated same-origin requests, access to non-HttpOnly web storage, and redirection. The code runs ...[truncated 82 chars]
Remediation
View remediation

other

Warning
Location
code-review-assistant.sh:20
Finding

Code Review Assistant Returns Fabricated Findings Without Inspecting the Target

Content
View full analysis
${NC}" exit 1 fi echo "📁 Reviewing: $TARGET" echo "" cat << 'REPORT' ### Code Review Report #### ⚠️ Issues Found ##### High Priority 1. **Security: Potential SQL Injection** - File: example.js - Line: 45 ```javascript const query = `SELECT * FROM users WHERE id = ${userId}`; ``` **Recommendation**: Use parameterized queries ##### Medium Priority 2. **Error Handling: Missing try-catch** - File: example.js - Line: 23 ```javascript const data = JSON.parse(response); ``` **Recommendation**: Add error handling 3. **Best Practice: Hardcoded Secret** - File: example.js - Line: 67 ```javascript const API_KEY = "sk-1234567890"; ``` **Recommendation**: Use environment variables REPORT echo -e "${GREEN}✅ Review complete!${NC}" ;; ``` The diff mode similarly performs only a summary command and then prints fixed findings: ```bash if command -v git &> /dev/null; then git diff --stat 2>/dev/null || echo "Not a git repository" fi cat << 'DIFF_REPORT' ### Changes Summary | File | Additions | Deletions | |------|-----------|-----------| | src/utils.js | +15 | -3 | | src/api.js | +42 | -8 | | tests/test.js | +20 | -0 | ### Files with Potential Issues - **src/utils.js** - 2 issues - **src/api.js** - 1 issue DIFF_REPORT ``` ### Technical Analysis The `review` branch verifies only that a target string was supplied. It never opens, parses, searches, or otherwise inspects the target file or directory. Nevertheless, it reports fixed vulnerabilities at fixed paths and line numbers ...[truncated 1082 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill advertises a broad collection of unrelated developer tools without defining clear activation boundaries, allowed inputs, or when each tool should be invoked. In an agent setting, this can cause overbroad triggering or execution in unintended contexts, increasing the chance of unsafe file operations, code generation, or review actions being performed on the wrong target.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The package description is extremely broad ('Complete developer tools collection - Chrome extensions, code review, GitHub tools, and more') and does not define clear scope, triggers, or operational boundaries. For an agent skill, this ambiguity can enable overbroad invocation and unexpected access to sensitive developer contexts such as repositories, code review workflows, or browser-integrated tooling.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The review command claims to analyze a user-specified file or directory, but it never inspects the provided target and instead prints a hardcoded report containing fabricated findings. This is dangerous because users may trust the output as a real security/code review result and make release or remediation decisions based on false assurance or misleading issue data.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The PR command advertises GitHub PR review capability and references GITHUB_TOKEN, but performs no API calls or pull request analysis. This is risky because operators may believe pull requests were reviewed when no review occurred, creating a false sense of security and allowing defects or vulnerabilities to pass unchecked.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script unconditionally writes to README.md using shell redirection, which will overwrite any existing file without prompting, backup, or checking for prior content. In an agent or automation context, this can cause unintended data loss and may destroy hand-written documentation if the script is run in the wrong directory.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script creates directories and then writes multiple project files under the computed output path, overwriting generated content if rerun. While it prints progress messages after creation begins, there is no up-front warning or confirmation that the skill will write a full landing-page project to disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The generated tips include Chinese text in an otherwise English-language script, which imposes a specific language on the user-facing output. This matches the language/locale policy violation category because the skill does not provide opt-in, alternatives, or justification for the locale choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script reads git config user.name from the local repository/environment and inserts it into the generated README as author information without explicit disclosure or consent. While not severe on its own, this can leak personal identity details into generated content, especially when used in shared, automated, or public publishing workflows.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

At L132 the comment says 'Create index.html for Next.js', which implies framework-specific output. However, the file written at L133-L153 is a plain HTML page that loads React, ReactDOM, and Babel from public CDNs and does not reflect a real Next.js structure or entrypoint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

Both generated HTML variants set , which enforces an English locale in the output regardless of user preference. The skill does not expose a language option or explain that output is intentionally English-only.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The non-React output path likewise emits unconditionally. This is a natural-language locale choice baked into the generated artifact without configurability or justification.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The here-document at L38-L170 interpolates $TAGS_TAG_LINE at L46 before TAGS_TAG_LINE is assigned at L172-L177. This contradicts the apparent intent of the inline text structure, because provided tags will not appear in the generated blog body even though the script later computes a tags line for that purpose.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.