T09 · Insecure Skill Coding Practices
- Location
src/platforms/index.js:330- Finding
Platform API Credentials Stored in Plaintext with Unrestricted Default Permissions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill matches its e-commerce management purpose, but it gives broad business-data and credential handling power without enough safeguards or disclosure.
Review carefully before installing. Use least-privilege API keys, avoid passing secrets via command-line flags, restrict permissions on ~/.crossborder-ecom/config.json, and do not run bulk sync, pricing apply, inventory sync, Feishu upload, or exports until you have a dry-run/backup/approval process and understand exactly which platforms and records will be changed or shared.
src/platforms/index.js:330Platform API Credentials Stored in Plaintext with Unrestricted Default Permissions
src/orders.js:101Spreadsheet Formula Injection in CSV Order Exports
The documentation includes commands to automatically apply pricing strategies, including aggressive pricing, without warning that these commands may modify live marketplace listings across connected platforms. In this context, unintended price changes can immediately affect revenue, trigger marketplace policy issues, or create exploitable underpricing at scale.
The document instructs users to configure API keys and run synchronization and reporting commands against multiple external commerce platforms and Feishu, but it does not clearly warn that these actions may transmit, modify, export, or overwrite business data. In the context of a cross-platform e-commerce automation skill, this omission can cause operators to perform high-impact actions without informed consent, increasing the risk of unintended data disclosure or destructive updates.
The README promotes one-click bulk synchronization across multiple marketplaces and automatic Feishu data syncing without clearly warning that the command may create or modify live listings and transmit business data to external services. In an agent/skill context, users may treat examples as safe read-only operations, so missing consent and scope warnings increases the risk of unintended remote changes or data disclosure.
The README describes one-click pricing application and real-time inventory synchronization/update features without prominently warning that these actions can change live prices and stock levels on connected marketplaces. In a multi-platform e-commerce skill, accidental execution could cause financial loss, overselling, underselling, or operational disruption across several storefronts at once.
The skill explicitly promotes automatic multi-platform product, order, inventory, and Feishu synchronization but does not warn that potentially sensitive business data will be transmitted to multiple third-party services. In an e-commerce management context, silent cross-platform data propagation can expose commercial data, customer order information, or inventory state beyond what the user intended.
The quick-start flow recommends running a full sync with Feishu enabled immediately after setup, without any confirmation, preview, or warning about mass updates and external data sharing. This increases the chance of accidental bulk publication, overwriting catalog data, or sending operational data to Feishu before the user validates configuration and scope.
The command descriptions, help text, and user-facing guidance are predominantly fixed in Chinese, which imposes a specific language on all users. The file does not provide any option, locale detection, or documented opt-in that would let users choose another language.
The manifest’s user-facing description, tags, and feature names are presented entirely in Chinese, and there is no indication that the skill supports other languages or that Chinese is an intentional region-specific constraint. This can violate language/locale policy because it implicitly forces a specific language without user opt-in.
The file's description and all CLI prompts are written in Chinese, indicating the skill enforces a specific language for user interaction. The policy allows locale constraints only when users can opt in or when the regional limitation is clearly justified, neither of which is present here.
When the --feishu option is used, the command sends the full orders collection to an external Feishu service without any visible warning, confirmation, redaction step, or indication of what fields are being transmitted. Because order records commonly contain sensitive business or customer data, this can cause unintended third-party disclosure if users enable sync without understanding the scope.
The command's natural-language interface, including prompts, status messages, and help text, is entirely in Chinese. This enforces a specific language for all users without offering a locale option or documenting that the tool is intentionally region-specific.
The remove operation deletes a configured platform immediately based solely on a command-line argument, with no confirmation prompt, dry-run mode, or undo protection. In a CLI that manages potentially important integration settings, this increases the risk of accidental or scripted destructive changes, causing service disruption or loss of configuration state.
When --feishu is supplied, the command sends pricing suggestions to an external Feishu integration without clearly warning the user at the time of execution about the outbound data transfer. In business tooling, pricing data can be commercially sensitive, so silent or poorly disclosed synchronization can cause unintended data exposure to third-party services.
The command applies pricing changes directly when --apply is used, with no confirmation, dry-run, or preview gate before modifying product prices. In an automation or CLI context, this increases the chance of accidental destructive changes from mistyped parameters, bad upstream data, or unsafe invocation by another tool.
This file presents its command description, progress messages, errors, and help output entirely in Chinese. That creates a language/locale policy concern because the skill effectively forces one language without offering opt-in, fallback, or justification for a Chinese-only audience.
The skill's description, status messages, and result output are all hard-coded in Chinese, including the command description and all console text. This imposes a specific language on users without any visible opt-in or locale selection, which matches the policy category for language/locale violations.
This code file contains extensive user-facing output and instructions in Chinese, including the demo banner, operational status messages, and next-step guidance. Because the skill does not offer an opt-in language selection or explain that it is intentionally limited to a Chinese-speaking audience, it conflicts with the language/locale policy criteria.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const fetch = require('node-fetch');
try {
const response = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
This code sends business data to Feishu over network requests and can also create new tables remotely, which affects user data and external systems. Although there are success/failure logs, they do not disclose beforehand that the skill will transmit potentially sensitive records or create remote resources, and the comments/docstrings only describe syncing in general terms.
The methods updateInventory and bulkUpdateInventory perform direct inventory writes across one or more platforms, which can affect business data and may be difficult to reverse. While syncInventory includes some console logging, these update entry points themselves provide no confirmation prompt, user-facing warning, or explanatory comment/docstring indicating that they will modify live platform inventory.
updateOrderStatus claims to update order state but only logs the request and returns { success: true } without calling any platform API or verifying the result. This can mislead callers into believing an order was changed when it was not, causing integrity issues, inconsistent workflow state, and potentially unsafe business actions such as shipping, refunds, or notifications based on false success.
This code writes exported order data, including customer information, to local files via fs.writeFileSync. While the methods have internal comments, there is no user-facing confirmation, warning, or visible disclosure that potentially sensitive business/customer data will be persisted to disk.
The module comment describes a platform adapter that manages API connections for TikTok, Amazon, Shopee, and Lazada. However, the connect/getProducts/getOrders/createProduct methods are TODO-backed stubs that log messages or return mock data and synthetic success objects, which contradicts the stated behavior of actual API integration.
The platform manager persists the full configuration object, including platform credentials such as apiKey, to a predictable plaintext file under the user's home directory without any encryption, permission hardening, or secure-secret storage. If the host is shared, backed up insecurely, or compromised by another local process, those credentials can be recovered and used to access connected e-commerce platforms.
The function applies bulk price changes across products and platforms immediately, without any preview, confirmation, dry-run, approval gate, or per-item validation. In an agent/automation context, this can cause large-scale unintended modifications to business-critical data if invoked with bad parameters or incomplete upstream analysis.
Detected: suspicious.env_credential_access, suspicious.exposed_secret_literal