T09 · Insecure Skill Coding Practices
- Location
bitable-config.json:2- Finding
Hardcoded Feishu Bitable Destination Can Cause Cross-Installation Data Access
- Content
View full analysis
Vulnerability Details
File Location:
bitable-config.json:2-3
Vulnerability Type: Hardcoded external resource identifiers and unsafe shared runtime configuration
Risk Level: MediumVulnerable Code
json { "app_token": "Tqnfb144ia0F5wsBQfCcd0lYnzh", "table_id": "tblViMOo7sfFds2h", "app_name": "AI Model Information Database (Artificial Analysis)", "table_name": "LLM Model Overview", "folder_token": "" }Technical Analysis
The distributed runtime configuration contains populated Feishu Bitable
app_tokenandtable_idvalues instead of placeholders. The workflow inSKILL.mdinstructs the Agent to use existing values from this file for subsequent record listing, creation, and update operations.These identifiers are not necessarily sufficient for standalone Feishu authentication. However, they select a specific external resource and become actionable when combined with an Agent's already-authorized Feishu tools. This creates a confused-deputy condition: the installing user's Feishu authorization may be used to access or modify a table selected by the Skill package author rather than a table explicitly selected by the user.
Runtime resource identifiers should not be shared across installations. The Skill already includes
bitable-config.example.jsonfor placeholders, making inclusion of a populated runtime configuration unnecessary for its declared functionality.Attack Path
- A user installs or loads the Skill package.
- The Agent reads the committed
bitable-config.json. - Because
app_tokenandtable_idare populated, the documented update workflow treats the referenced Bitable as an existing destination. - The Agent invokes its authorized Feishu tools using these embedded identifiers.
- If the Agent's Feishu identity has access to the referenced resource, it may list existing records or create and update records without first confirming that the table belongs to, or was selected by, the current us ...[truncated 1131 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the populated
bitable-config.jsonfrom the distributed Skill package. - Retain only
bitable-config.example.jsonwith clearly invalid placeholder values. - Add
bitable-config.jsonto version-control and package ignore rules. - Store runtime Bitable identifiers in user-specific configuration outside the Skill installation directory.
- Require explicit user confirmation before using an existing
app_tokenandtable_id. - Verify that the selected Bitable belongs to, or is intentionally accessible by, the current user before listing or modifying records.
- On first use, create a new Bitable under the current user's authorized Feishu context unless the user explicitly supplies an existing destination.
- Display the destination table name and URL before the first write and require confirmation when it differs from previously approved state.
- Consider the exposed identifiers compromised for distribution purposes and replace or revoke them where supported.
- Enforce least-privilege Feishu permissions so the Agent can access only the tables required for the current task.
- Remove the populated
