Back to skill

Security audit

Ebay Review Checker

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to be a local review-analysis tool, but it is advertised as eBay-specific while much of the implementation is Amazon-oriented and it has unsafe report-generation and installation practices.

Review this carefully before installing. The skill does not appear to contain backdoors or credential theft, but it is not reliably described: it claims eBay-specific analysis while the implementation is largely Amazon/generic review analysis. Do not use its scores as authoritative for eBay seller or buyer decisions. If you test it, install from a pinned commit in an isolated environment, avoid global installation, and do not open generated reports from untrusted review data unless the HTML escaping and CDN dependency issues are fixed.

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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/report_html.py:365
Finding

Stored Cross-Site Scripting in Generated HTML Reports

Content
View full analysis
Review Analysis Report - {asin} ``` ```html
ASIN: {asin}
``` ```html
Summary: {summary}
``` ```javascript // SuspiciousReview const suspicious = {suspicious_json}; const container = document.getElementById('suspiciousReviews'); if (suspicious.length === 0) {{ container.innerHTML = '

No highly suspicious reviews detected.

'; }} else {{ suspicious.slice(0, 5).forEach((review, index) => {{ container.innerHTML += `
#${{index + 1}} Risk: ${{review.risk_score?.toFixed(0) || 'N/A'}}%
"${{review.content}}"
Reasons: ${{(review.reasons || review.reasons_zh || []).join(', ')}}
`; }}); }} ``` Dimension names and details are also interpolated directly into the document: ```python {"".join([f'''
{d.get('status', '❓')}
{d.get('name', d.get('name_zh', ''))}
{d.get('score', 0):.0f}/100
Remediation
View remediation
` element. Prefer placing JSON in a non-executable element and escaping HTML-significant characters: ```python safe_json = json.dumps(data, ensure_ascii=False) safe_json = ( safe_json.replace("&", "\\u0026") .replace("<", "\\u003c") .replace(">", "\\u003e") ) ``` Alternatively, generate the DOM entirely from safely encoded server-side HTML. 4. Add a restrictive Content Security Policy. If inline scripts are removed, an example baseline is: ```html ``` 5. Validate structured inputs and enforce expected scalar types for risk scores, names, details, reasons, and review content. 6. Add regression tests containing payloads such as ``, ``, quotes, backticks, ampersands, and Unicode line separators. Confirm that the generated report displays them only as text. ]]>

T08 · Insecure Dependencies

Warning
Location
scripts/report_html.py:56
Finding

Unpinned Runtime JavaScript Dependency in Generated Reports

Content
View full analysis
``` ### Technical Analysis Every generated report loads Chart.js from a third-party CDN when the report is opened. The dependency URL does not specify an exact package version and does not include a Subresource Integrity hash. Consequently, the effective JavaScript executed by a report is not fully represented by the audited project. It can change after report generation because of upstream package resolution, CDN behavior, or compromise of the package publishing and delivery chain. Because the script is loaded as ordinary page JavaScript, it executes with the same browser privileges as the report's own scripts. ### Attack Path 1. The application generates an HTML report containing the unpinned CDN URL. 2. A victim opens the report while network access is available. 3. The browser requests the current CDN-resolved Chart.js resource. 4. If the package, registry account, CDN, or delivery path is compromised—or an incompatible future release is resolved—the browser receives content different from that reviewed with the Skill. 5. The returned JavaScript executes within the report page. ### Impact Assessment A compromised dependency could: - Read and alter all report data and analysis results. - Execute arbitrary JavaScript in the report's browser context. - Send report data to external services. - Present deceptive content or phishing interfaces. - Break report rendering because of incompatible future changes. The impact is limited by normal browser sandbox and origin controls, but all content and capabilities available to the report page are exposed. ]]>
Remediation
View remediation
/dist/chart.umd.min.js" integrity="sha384-" crossorigin="anonymous"> ``` 3. Obtain the integrity hash from a trusted release process and verify it independently. 4. Establish a dependency update procedure that includes: - Explicit version changes - Release-note review - Vulnerability scanning - Hash verification - Report-rendering regression tests 5. Configure a Content Security Policy that permits scripts only from the selected local source or explicitly approved pinned CDN endpoint. 6. Document that opening reports should not require network access when a local bundled dependency is used. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:15
Finding

Unpinned Global Installation Through a Remotely Resolved npm CLI and Repository

Content
View full analysis
Remediation
View remediation
... ``` 2. Pin the Skill repository to an immutable commit digest or a cryptographically verified release tag rather than a mutable repository head. 3. Publish and verify checksums or signatures for downloaded Skill artifacts. 4. Avoid global installation by default. Prefer a project-local or isolated installation and explain when global installation is necessary. 5. Do not recommend running the command with `sudo` or administrative privileges. 6. Document the exact expected package source, repository URL, version, commit identifier, and integrity-verification procedure. 7. Use a controlled release process that reviews both the installer and Skill contents before updating the pinned references. ]]>
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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 (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Claiming an eBay authenticity analyzer while reportedly generating only an HTML report from supplied data is materially deceptive behavior. Even without classic code-execution impact, this undermines security review, can mask unimplemented controls, and may cause operators to make bad moderation or purchasing decisions based on false assurance.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Claiming an eBay authenticity analyzer while reportedly generating only an HTML report from supplied data is materially deceptive behavior. Even without classic code-execution impact, this undermines security review, can mask unimplemented controls, and may cause operators to make bad moderation or purchasing decisions based on false assurance.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Claiming an eBay authenticity analyzer while reportedly generating only an HTML report from supplied data is materially deceptive behavior. Even without classic code-execution impact, this undermines security review, can mask unimplemented controls, and may cause operators to make bad moderation or purchasing decisions based on false assurance.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

Using npx skills without a pinned version introduces supply-chain risk because the executed package version can change over time and may resolve to a compromised or unexpected release. In a skill installation context, that can result in unreviewed code execution on the user's system during install.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The module docstring explicitly identifies the tool as an 'Amazon Review Checker' and the code is built around Amazon-specific concepts such as ASINs and Verified Purchase. This conflicts with the manifest, which claims an eBay-focused analyzer with eBay-specific red flag identification, indicating the implemented behavior is for a different platform than advertised.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The inline guidance tells users that adding reviewer information will unlock 'Account Profile Analysis', but the code only records reviewer_info presence in determine_analysis_level and never performs any analysis on reviewer names, review counts, or account behavior. This is an active contradiction between documentation-like user guidance and actual implemented functionality.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The HTML report includes a third-party script from jsDelivr/Chart.js, which creates an unnecessary network dependency and exposes report viewers to supply-chain and privacy risks. Because the report also interpolates untrusted review data directly into HTML and later into innerHTML-rendered content, any compromise of the external script or malicious content in inputs could increase client-side attack surface.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest says this skill is an eBay review and feedback authenticity analyzer, but the generated report identifies itself as 'Amazon Review Checker'. This is an active intent contradiction in user-facing output, not merely missing detail, and can mislead users about the tool's target platform and purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This code performs a file write to the path supplied by output_path, but the function only prints a success message after the write occurs. There is no prior confirmation prompt, cautionary comment/docstring about overwriting output files, or other user-facing disclosure before the operation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.