T09 · Insecure Skill Coding Practices
- Location
config.local.json:2- Finding
Packaged Feishu Resource Identifiers
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Feishu bookkeeping assistant, but it needs review because it handles sensitive financial records while bundling real-looking Feishu table identifiers and under-disclosing record sampling, local storage, and external receipt OCR.
Review this skill before installing. Use a Feishu table you control, remove or replace any bundled config.local.json identifiers, confirm what data the agent will read before initialization, and avoid sending receipt images unless you are comfortable with temporary local storage and external vision processing.
config.local.json:2Packaged Feishu Resource Identifiers
SKILL.md:67Excessive Retrieval of Existing Financial Records During Initialization
SKILL.md:242Receipt Images Sent to an External Vision Processor Without Explicit Consent Controls
The README highlights convenience features but does not prominently warn users that first use may read their existing Feishu bookkeeping base and persist learned structure locally in a config file. This is a meaningful transparency and privacy issue because users may provide a Feishu link without understanding that historical financial metadata will be analyzed and retained on disk.
The initialization trigger phrase is extremely generic (effectively '我要记账' / 'I want to keep accounts'), which is likely to appear in normal conversation and can invoke the skill without strong user intent confirmation. In a skill that reads existing Feishu bookkeeping data and may create or modify records, broad activation increases the risk of unintended access to financial data or accidental writes.
The skill description, examples, prompts, field names, and responses are all specified in Chinese, and the trigger section only describes Chinese utterances. Under the policy, a skill should not impose a specific language or locale unless it offers opt-in or clearly documents a justified region-specific constraint.
The skill explicitly persists Feishu app tokens, table identifiers, and learned bookkeeping structure into a local config.json, but does not clearly warn users in the user-facing description that sensitive financial metadata and access credentials are stored on disk. This creates a privacy and credential-exposure risk if the local environment is shared, backed up insecurely, or later accessed by another skill or process.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
feishu_bitable_app > create
- name: "个人记账本"
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
feishu_bitable_app > create
- name: "个人记账本"
The skill downloads receipt images to local temporary storage for OCR processing, but it does not warn users that potentially sensitive receipts containing merchant names, timestamps, itemized purchases, and payment-adjacent data will be written to disk. Temporary local storage increases the chance of unintended retention, forensic recovery, or exposure to other local users or processes.
This manifest-style JSON defines the table name, field names, type labels, categories, and review options entirely in Chinese. Under the policy rule for natural-language violations, forcing a specific language without user opt-in can be a locale-policy issue when no justification or alternative locale support is documented in the file.
No suspicious patterns detected.