Back to skill

Security audit

Amazon Fba Finder

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Amazon FBA product-research calculator with no evidence of hidden execution, persistence, exfiltration, or destructive behavior.

Install only if you are comfortable providing marketplace API keys and product research queries to the configured services. Treat the financial outputs as estimates, validate inputs manually, and prefer pinned dependency versions or a reviewed lockfile before production use.

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

T08 · Insecure Dependencies

Warning
Location
requirements.txt:1
Finding
Unbounded and Unnecessary Third-Party Dependencies Expand the Supply-Chain Attack Surface<![CDATA[ ## Vulnerability Details **File Location**: `requirements.txt:1-6` **Vulnerability Type**: Unbounded third-party dependency resolution **Risk Level**: Medium ### Vulnerable Code ```text requests>=2.31.0 beautifulsoup4>=4.12.0 pandas>=2.0.0 numpy>=1.24.0 python-dotenv>=1.0.0 aiohttp>=3.9.0 ``` The associated installation instruction appears at `README.md:113-119`: ```bash skillhub install amazon-fba-finder clawhub install amazon-fba-finder pip install -r requirements.txt ``` ### Technical Analysis Every dependency has only a lower version bound. Consequently, an installation can resolve to any future package version available from the configured Python package index. The project does not provide a lock file, exact version constraints, or package hashes that would allow installers to verify that they are using versions reviewed by the project authors. Only `aiohttp` is imported by the application code. The declared `requests`, `beautifulsoup4`, `pandas`, `numpy`, and `python-dotenv` packages are not used by the reviewed implementation. Installing these unnecessary packages increases the number of maintainers, transitive dependencies, build systems, and package releases that must remain trustworthy. This is not evidence that any currently declared package is malicious. The weakness is that a later compromised or otherwise unsafe release could be selected automatically without a project change or additional review. Source distributions may also execute package-controlled build logic during installation. ### Attack Path 1. A user follows the documented installation procedure and runs `pip install -r requirements.txt`. 2. Pip queries the user's configured package index and selects the newest versions satisfying the lower bounds. 3. A dependency or transitive dependency publishes a compromised future release, or the configured index serves an untrusted artifact. 4. Because there is no upper bound, exact pin, lock file, or hash verification, pip ac ...[truncated 843 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove dependencies that are not imported or otherwise required: - `requests` - `beautifulsoup4` - `pandas` - `numpy` - `python-dotenv` 2. Pin each required direct and transitive dependency to a reviewed version using a generated lock file. 3. Require hashes during installation, for example through a hash-locked requirements file and `pip install --require-hashes`. 4. Prefer reviewed binary wheels and explicitly control whether source distributions are permitted in production installation workflows. 5. Run dependency vulnerability and provenance checks in CI. 6. Use a trusted package index and prevent unintended fallback to uncontrolled extra indexes. 7. Periodically update pins through a reviewed dependency-update process rather than resolving unrestricted future versions at installation time. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
src/profit_calculator.py:80
Finding
Missing Numeric Input Validation Can Produce Invalid or Misleading Financial Recommendations<![CDATA[ ## Vulnerability Details **File Location**: `src/profit_calculator.py:80-146` **Vulnerability Type**: Unvalidated numeric input used in financial calculations **Risk Level**: Medium ### Vulnerable Code ```python def calculate_profit(self, selling_price: float, product_cost: float, dimensions: ProductDimensions, shipping_cost: float = 0, advertising_pct: float = 0.10, monthly_sales: int = 300) -> ProfitAnalysis: # Calculate FBA fulfillment fee fba_fee = self._calculate_fba_fee(dimensions) # Calculate referral fee referral_fee = selling_price * self.REFERRAL_RATE # Calculate storage fee storage_fee = self._calculate_storage_fee(dimensions) # Calculate advertising cost advertising_cost = selling_price * advertising_pct # Other costs other_costs = selling_price * 0.03 total_cost = CostBreakdown( product_cost=product_cost, shipping_to_amazon=shipping_cost, fba_fee=fba_fee, referral_fee=referral_fee, storage_fee=storage_fee, advertising_cost=advertising_cost, other_costs=other_costs, total_cost=( product_cost + shipping_cost + fba_fee + referral_fee + storage_fee + advertising_cost + other_costs ) ) net_profit = selling_price - total_cost.total_cost profit_margin = (net_profit / selling_price) * 100 if selling_price > 0 else 0 investment = product_cost + shipping_cost roi = (net_profit / investment) * 100 if investment > 0 else 0 fixed_costs = 0 breakeven_units = int(fixed_costs / net_profit) + 1 if net_profit > 0 else 999999 monthly_profit = net_profit * monthly_sales recommendation = self._generate_recommendation( profit_margin, roi, net_profit, monthly_sales ) ``` The recommendation logic at `src/profit_calculator.py:206-221` relies direc ...[truncated 3168 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Validate every numeric argument before performing calculations: - Require `selling_price` to be finite and greater than zero. - Require product and shipping costs to be finite and nonnegative. - Require all dimensions and weight to be finite and greater than zero. - Require `advertising_pct` to be finite and constrained to an explicitly supported range, such as `0.0` through `1.0`. - Require `monthly_sales` to be a nonnegative integer. 2. Use `math.isfinite()` to reject `NaN`, positive infinity, and negative infinity. 3. Raise a clear `ValueError` or return a structured validation error instead of attempting to calculate with invalid data. 4. Consider `decimal.Decimal` for monetary calculations to avoid binary floating-point rounding artifacts. 5. Validate imported product and supplier data at the trust boundary, not only inside the calculator. 6. Prevent nonstandard `NaN` and infinity values from entering generated JSON reports. 7. Add tests for: - Zero and negative prices. - Negative costs and dimensions. - Zero and negative weight. - Negative and excessive advertising percentages. - Negative or non-integer monthly sales. - `NaN` and both infinity values. - Extremely large values and arithmetic overflow behavior. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (26)

Credential Access

High
Category
Privilege Escalation
Content
### 配置 API 密钥

```bash
# .env 文件
AMAZON_API_KEY=your_amazon_api_key
ALIBABA_API_KEY=your_alibaba_api_key
MARKETPLACE=US  # US/UK/DE/JP/CA/AU
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The documentation switches into Chinese for the main skill description and continues that pattern across most sections, which effectively forces a specific language on users. The file does not state that the skill is intended only for a Chinese-speaking audience or offer an alternative language/version despite the policy allowing explicit choice or justified locale constraints.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs users to configure Amazon and Alibaba API keys and describes calls to external services, but it does not clearly warn that product queries and related user-supplied data will be transmitted to third-party APIs. This can cause users to expose sensitive business research, marketplace strategy, and credentials without informed consent, especially in an agent environment where data flow may not be obvious.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
This manifest includes the primary skill description in Chinese, which can impose a specific language on users without any indication that language is selectable or optional. The policy requires language or locale constraints to be opt-in or clearly justified.

Natural-Language Policy Violations

Medium
Confidence
85% confidence
Finding
The skill description under the OpenClaw manifest is presented only in Chinese, and the file does not mention any user-selectable language behavior or region-specific justification. This creates a natural-language policy concern because the skill appears to enforce a language without opt-in.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The module docstring and class/method documentation are presented in Chinese, which effectively forces a specific language for users or maintainers reading the skill. The file does not indicate that Chinese is optional, user-selected, or required for a justified region-specific purpose.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This code file contains user-facing natural-language documentation and comments that force a specific language context, which can violate language/locale policy when no user opt-in or regional justification is provided. The module docstring presents the skill exclusively in Chinese and does not indicate that other languages are supported.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
This file includes natural-language descriptions and output text exclusively in Chinese, such as the module docstring and recommendation messages. Because the skill does not provide user opt-in, language selection, or a documented region-specific justification, it may violate language/locale policy requirements.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The recommendation generator returns fixed Chinese messages for all result states, which forces a specific language on end users. The file does not indicate any opt-in mechanism or locale-specific constraint that would make this acceptable under the stated policy.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The module docstring and user-facing descriptions are entirely in Chinese, which effectively imposes a specific language on users or maintainers without any opt-in or stated regional justification. The policy requires flagging language or locale constraints when the skill does not offer a choice or clearly document why the constraint exists.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This test file uses Chinese in the module docstring, comments, and test descriptions, which indicates the skill content is effectively fixed to a specific language. The policy allows locale constraints only when user choice is offered or the constraint is clearly documented and justified, neither of which appears here.

Natural-Language Policy Violations

Low
Confidence
70% confidence
Finding
All user-facing documentation and examples are presented in Chinese, and the file does not indicate that language is optional or user-selectable. Under the stated policy, forcing a specific language or locale without opt-in can be a natural-language policy issue unless the constraint is documented and justified.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
The manifest's primary user-facing description is entirely in Chinese, which indicates a language-specific experience without stating that users can choose another language. Under the policy rule, forcing a specific language without opt-in is a natural-language locale violation unless the constraint is explicitly documented and justified.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
beautifulsoup4>=4.12.0
pandas>=2.0.0
numpy>=1.24.0
Confidence
97% confidence
Finding
The dependency is specified with a lower-bound version only, so builds may resolve to different releases over time. That weakens reproducibility and can unintentionally introduce vulnerable or incompatible versions from the package index or transitive dependency graph.

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding
The manifest does not pin requests, and the package has multiple known advisories across its release history. Because the exact installed version is unknown, it is impossible to verify from this file alone whether deployments avoid affected versions, creating a real dependency hygiene and supply-chain risk.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
beautifulsoup4>=4.12.0
pandas>=2.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
Confidence
97% confidence
Finding
The dependency is not fully pinned, so installation results can vary across environments and over time. This increases supply-chain risk because a later release could introduce a security issue or breaking change without any change to this manifest.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
beautifulsoup4>=4.12.0
pandas>=2.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
aiohttp>=3.9.0
Confidence
97% confidence
Finding
Using only a minimum version for pandas makes the installed package unverifiable and non-reproducible. That can expose deployments to newly published vulnerable versions or unexpected behavior changes.

Unverifiable Dependency: pandas has 1 known advisory(ies) (CVE-2020-13091 (** DISPUTED ** pandas through 1.0.3 can unserialize and execute commands from an)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
90% confidence
Finding
Pandas has known advisories in some versions, but this file allows any version at or above 2.0.0 without fixing the exact release. That makes the deployed security posture unverifiable and weakens assurance that all environments are using a safe build.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
beautifulsoup4>=4.12.0
pandas>=2.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
aiohttp>=3.9.0
Confidence
97% confidence
Finding
The numpy requirement is not pinned to a single version, so consumers may install different releases depending on resolution time and environment. This creates avoidable supply-chain uncertainty and complicates proving that a safe version is in use.

Unverifiable Dependency: numpy has 16 known advisory(ies) (CVE-2014-1859 (Numpy arbitrary file write via symlink attack); CVE-2021-41495 (NumPy NULL Pointer Dereference); CVE-2021-33430 (NumPy Buffer Overflow (Disputed)) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding
NumPy has had multiple advisories, and this requirement does not identify which exact release will be installed. Without exact pinning, different environments may resolve differently, making it impossible to confirm exposure status from the manifest.

Unpinned Dependencies

Low
Category
Supply Chain
Content
beautifulsoup4>=4.12.0
pandas>=2.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
aiohttp>=3.9.0
Confidence
97% confidence
Finding
A lower-bound-only requirement for python-dotenv allows future or environment-specific versions to be installed without review. If a vulnerable release is resolved, the application could inherit that risk despite no source-code change.

Unverifiable Dependency: python-dotenv has 2 known advisory(ies) (CVE-2026-28684 (python-dotenv: Symlink following in set_key allows arbitrary file overwrite via ); CVE-2026-28684 (python-dotenv reads key-value pairs from a .env file and can set them as environ)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
95% confidence
Finding
python-dotenv has known advisories in parts of its version history, yet the manifest leaves the exact installed version open-ended. This is dangerous because the package often interacts with local configuration files and environment handling, so a vulnerable release could affect sensitive configuration paths.

Unpinned Dependencies

Low
Category
Supply Chain
Content
pandas>=2.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
aiohttp>=3.9.0
Confidence
97% confidence
Finding
The aiohttp package is unpinned, which makes dependency resolution nondeterministic and increases exposure to future vulnerable releases. In network-facing software, this uncertainty is particularly undesirable because library behavior often affects request parsing and transport security.

Unverifiable Dependency: aiohttp has 16 known advisory(ies) (CVE-2024-52303 (aiohttp has a memory leak when middleware is enabled when requesting a resource ); CVE-2026-54279 (aiohttp: Host-Only Cookies Become Domain Cookies After CookieJar Persistence); CVE-2026-34514 (AIOHTTP has CRLF injection through multipart part content type header constructi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
95% confidence
Finding
aiohttp has multiple known advisories, and the unpinned requirement prevents determining whether the installed release is vulnerable. Because aiohttp is typically used in network-facing contexts, unresolved version ambiguity can have security consequences in request handling, cookie management, or protocol parsing.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The file presents the skill name and author metadata in Chinese only, which can indicate a language-specific experience without any visible opt-in, fallback, or justification. The policy for this audit flags natural-language locale constraints when a skill appears to force a specific language absent user choice.

Static analysis

No suspicious patterns detected.