T05 · Unauthorized Access and Privilege Escalation
- Location
config/feishu_permissions.json:3- Finding
Excessive Feishu Permissions Violate Least-Privilege Boundaries
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches a short-video script workflow, but its optional Feishu setup asks for broad workspace permissions and some file-changing steps lack strong user-control boundaries.
Review this skill before installing. Use local-only reports unless you create a tightly scoped Feishu app; do not bulk-import the bundled Feishu permissions as-is. Keep Excel paths pointed at files you control, confirm any rollback/delete action before running it, and treat generated spreadsheets as untrusted until formula-like cell values are sanitized.
config/feishu_permissions.json:3Excessive Feishu Permissions Violate Least-Privilege Boundaries
scripts/excel_manager.py:169Untrusted Script Content Can Be Written as Executable Spreadsheet Formulas
声明描述的是一个面向用户的完整技能:批量生成多平台短视频脚本、管理文案库。但提供的代码片段并没有实现这些核心能力。它更像是一个安装后手动运行的示例/模板入口脚本,要求用户确认本地路径,随后导入模块、读取单个平台(xiaohongshu)配置、创建生成器对象,并把信息写到本地文本文件。虽然导入了 ScriptGenerator、ExcelManager、WorkflowManager、FormatChecker 等模块,且名称暗示可能支持所声明的功能,但在该代码片段中这些能力并未实际执行;尤其没有批量处理、多平台遍历、脚本生成输出流程,也没有任何文案库管理逻辑。因此,代码实际行为与声明用途存在明显不匹配。
声明描述聚焦于短视频脚本批量生成和文案库管理,但代码并未生成任何脚本,也没有管理文案库内容。相反,它主要处理“活动/推广/促销”配置的自然语言解析、查询和持久化保存。这属于 materially different primary purpose:从脚本生成/文案管理变成了活动配置管理。虽然活动匹配可能可作为上层脚本生成的辅助能力,但该代码块本身的核心行为与声明用途明显不一致,因此应判定为描述与行为不匹配。
声明的核心用途是“短视频脚本批量生成与管理”,但提供的代码并不生成脚本文本,也不管理文案库数据。其功能集中在对已有分镜/脚本进行时长计算、匹配检查、自动调整时间段以及输出报告。这更像是脚本后处理/时长优化组件,而不是批量生成与管理系统的实现。虽然它可能服务于短视频脚本工作流,但与声明的主要能力存在明显偏差,因此应判定为描述与行为不匹配。
声明描述的核心功能是短视频脚本批量生成和文案库管理,但代码并未实现任何脚本生成、内容管理、多平台适配或文案库操作。相反,代码专注于飞书机器人/应用权限的读取、格式化、批量导入 JSON 生成,以及权限开通流程说明。这属于 materially different primary purpose,且能力范围与声明明显不符。虽然代码未表现出敏感越权行为,但其实际功能与技能描述基本无关,应判定为描述与行为不匹配。
The declared description presents the skill as a production feature for batch generating and managing short-video scripts. However, the supplied code chunk is specifically a test script (test_workflow.py) for validating WorkflowManager behavior. Its primary purpose is QA/testing: initializing the workflow, calling internal step methods, printing pass/fail diagnostics, and returning an exit code. While the tested workflow appears related to short-video content ideation, the code shown does not itself implement batch script generation or document-library management. Instead, it exercises lower-level workflow steps like trending-topic search, rules loading, external search, similarity checks, and format checks. That makes the actual behavior materially different from the declared end-user purpose.
声明的用途聚焦于“短视频脚本批量生成与管理、文案库管理”,但实际代码并未实现或展示脚本生成、批量处理、文案库管理等核心能力。相反,这段代码是针对 config_manager 的测试文件,主要围绕配置加载、平台配置读取、配置校验和路径配置异常处理。虽然平台参数配置可能是该技能的支撑部分,但这段代码本身的直接行为与声明的主要功能存在明显偏离,因此应判定为不匹配。
声明强调的核心能力是“短视频脚本批量生成与管理”。但当前代码块并没有实现任何脚本生成逻辑、平台适配逻辑或批量生成流程;它只是一个测试脚本,用于验证 ExcelManager 对文案库 Excel 文件的加载、格式扫描、已有脚本读取、追加写入和写入校验等功能。虽然“管理文案库”与Excel读写有一定相关性,但该代码的直接目的明显是测试Excel管理组件,而不是实现所声明的主要用户功能。因此描述与实际代码行为存在实质性不匹配。
声明的核心用途是“短视频脚本批量生成与管理”,而实际代码是一个测试文件,主要验证 FormatChecker 的格式检查、批量验证、自动修复和平台限制规则。它处理的是脚本结构与合规性测试,不体现批量生成脚本或管理文案库的主要功能。虽然同属短视频脚本相关领域,但主功能明显不同,因此构成描述与行为不匹配。
代码片段的实际功能并不是批量生成短视频脚本或管理文案库,而是对配置管理器进行测试,重点在于加载 skill 配置、获取平台配置、验证配置项以及检查 Excel 路径是否已设置。虽然这些能力可能作为短视频脚本生成系统的底层支持组件,但该代码片段本身的主要目的与声明的用户可见用途不一致。因此应判定为描述与实际行为存在明显不匹配。
声明的核心用途包含两部分:批量生成短视频脚本,以及管理文案库。实际代码并不是脚本生成器,而是一个针对 ExcelManager 的测试脚本,主要验证 Excel 文案库文件的创建、加载、格式扫描、已有脚本读取、脚本追加和写入校验。虽然“管理文案库”与 Excel 读写存在一定相关性,但这里的实际行为更具体地是本地 Excel 文件测试与管理组件验证,且完全没有体现“批量生成多平台短视频脚本”的生成能力。因此代码行为与声明用途存在实质性偏差,应判定为不匹配。
声明的核心用途是“批量生成与管理短视频脚本/文案库”,但代码片段实际是测试 FormatChecker 的格式检查功能:构造合法/非法脚本样例,调用 validate_script、validate_batch、auto_fix 和 get_fix_report,并验证不同平台的格式限制。这说明其主要行为是脚本格式校验与修复测试,而不是脚本生成或文案库管理。虽然都处于短视频脚本相关领域,但主功能存在明显偏差,因此应判定为描述与代码行为不匹配。
声明描述强调的是面向用户的短视频脚本批量生成和文案库管理能力;但实际代码并未生成任何短视频脚本,也未实现文案库管理。相反,代码是一个针对 ConfigManager 的测试文件,主要围绕配置加载、平台配置读取、时长分镜计算、配置校验以及 Excel 路径配置异常处理。这些能力更像底层配置/测试支持逻辑,而不是声明中的主要功能。虽然配置管理可能是该技能的支撑实现细节,但该代码片段本身的直接行为与声明用途存在明显偏离,因此应判定为描述与行为不匹配。
声明描述的核心能力是“批量生成短视频脚本、管理文案库”,但提供的代码块并没有生成脚本或管理文案库的逻辑。相反,它构造测试数据并调用 FormatChecker 执行 validate_script、validate_batch、auto_fix 等操作,主要用途是验证脚本格式是否合规及自动修复部分问题,还包含针对不同平台规则的检查。因此其实际行为更接近“脚本格式检查/测试工具”,与声明的主要用途存在明显偏差。未见敏感权限或资源访问问题,但主功能不一致,应判定为描述与行为不匹配。
The error-handling logic authorizes autonomous deletion of all content written in Step 8 after a second validation failure, but it provides no clear user warning or approval requirement for rollback. Automated deletion logic is higher risk than append-only behavior because it can remove data unexpectedly, especially if row tracking is wrong, validation misfires, or concurrent edits occur in the same Excel file.
The delete_rows method irreversibly removes rows from the workbook data structure, yet there is no confirmation prompt, logging, or explicit user disclosure associated with this destructive action. Comments indicating rollback intent are not user-facing and do not satisfy the warning requirement for safety-critical operations in code files.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
prompt = prompt.replace("[MIN_CHARS_LINE]", str(content_req.get("G", {}).get("min_chars", 30)))
prompt = prompt.replace("[MIN_CHARS_SOUND]", str(content_req.get("H", {}).get("min_chars", 15)))
return prompt
def get_prompt_for_script(self, script_num: int) -> str:
"""获取指定脚本的生成提示词(供外部调用)"""
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
elif in_table and not line.strip().startswith('|'):
in_table = False
return rules if rules else self._get_default_rules()
def _get_platform_library_path(self) -> str:
"""获取当前平台的文案库路径
The trigger phrase and onboarding flow are broad enough that an agent could enter configuration-changing behavior from ordinary conversational requests without a strong confirmation boundary. In this skill, activation can lead to file path configuration, external search, report generation, and optional integration setup, so ambiguous invocation increases the chance of unintended side effects.
The shortcut examples use natural-language commands like configuration and execution requests without explicit scope limits, which can make it unclear whether the agent should explain, preview, or actually perform actions. Because this skill manages local files and can drive network-assisted workflow steps, overly permissive triggers raise the risk of accidental execution or modification from casual phrasing.
The skill declares capabilities to invoke Python, read configuration files, and write local files, but it does not declare any explicit tool scope such as allowed-tools or permissions. That weakens sandboxing and user transparency, because an agent may execute shell and filesystem operations that are not clearly bounded by the manifest.
Broad shortcut phrases like '配置关键词' or similar configuration-style triggers can activate the skill during ordinary conversation, causing unintended file edits or workflow execution. Because this skill can write configuration and potentially launch shell-driven flows, accidental invocation raises the risk of unauthorized local changes.
The shortcut and setup text references configuring Feishu upload/report destinations, but it does not clearly warn that generated reports may be uploaded to an external workspace. This can lead to unintended disclosure of generated content, metadata, or possibly sensitive business materials to a third-party platform.
The documentation says the skill may automatically call web_search to collect current hot topics when keywords are empty, but it does not provide a clear user warning or opt-in at the point of use. Automatic outbound queries can expose user intent, topics, or workflow context to external services without informed consent.
The description string is written only in Chinese and the rest of the configuration likewise assumes Chinese-language use, without any indication that users can choose another language or locale. This is a natural-language policy concern because the file embeds a single-language constraint rather than documenting it as optional or region-specific.
The prompt template is written entirely in Chinese and specifies the full output structure, which strongly implies the generated script and validation workflow are expected to be in Chinese. In this config file there is no visible option for user language choice or a documented justification that this skill is intentionally limited to a Chinese-only locale.