Back to skill

Security audit

AGI数字伙伴-基础版

Security checks for vulnerabilities and agentic risk

Overview

This skill needs review because it forces automatic persistent personality setup and includes an unsafe calculator path that can execute arbitrary Python code.

Do not install this skill without review and fixes. Require opt-in before creating ./agi_memory, remove the highest-priority load-time workflow, replace eval() with a restricted math parser, and avoid storing or logging raw user content unless the user explicitly agrees.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (5)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:25
Finding

Skill-Level Instruction Hijacking Through Claimed Highest-Priority Rules

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/perception_node.py:453
Finding

Arbitrary Python Code Execution Through the Calculator Tool

Content
View full analysis
dict: """纯 Python 实现的后备方案""" start_time = time.time() try: if tool_name == "web_search": data = { "query": params.get("query", ""), "results": [], "count": 0 } elif tool_name == "get_weather": data = { "location": params.get("location", ""), "temperature": 25, "condition": "sunny", "unit": params.get("unit", "celsius") } elif tool_name == "calculator": expression = params.get("expression", "0") try: result = eval(expression) data = { "expression": expression, "result": result } except Exception as e: return { "success": False, "status": "error", "error": { "code": "CALC_ERROR", "message": str(e), "retryable": False }, ``` The calculator is registered as an ordinary mathematical tool: ```python "calculator": ToolConfig( name="calculator", description="执行数学计算", version="1.0.0", cacheable=True, cache_ttl=3600, estimated_tokens={"input": 100, "output": {"typical": 50, "max": 100}} ), ``` ### Technical Analysis `params["expression"]` is passed directly to Python's `eval()` without parsing, allowlisting, sandboxing, or removal of built-ins. The public tool-dispatch path accepts an unrestricted parameter dictionary and does not constrai ...[truncated 1738 chars]
Remediation
View remediation

T07 · Tool Hijacking and Spoofing

Error
Location
references/tool_use_spec.md:1428
Finding

Arbitrary MCP Server Trust and Unredacted Tool-Argument Forwarding

Content
View full analysis
dict: """调用 MCP 工具""" if tool_name not in self.tools: return { "success": False, "error": { "code": "TOOL_NOT_FOUND", "message": f"Tool '{tool_name}' not found" } } server_url = self.servers[tool_name] response = await requests.post( f"{server_url}/tools/call", json={ "name": tool_name, "arguments": params } ) return response.json() ``` ### Technical Analysis The documented MCP implementation accepts an arbitrary `server_url`, trusts every tool advertised by that server, and associates tool names directly with the remote endpoint. It then forwards the complete `params` object to that endpoint. The design contains no: - Trusted-server allowlist. - Server identity or authentication requirement. - Explicit HTTPS enforcement. - Tool-name collision protection. - Per-tool permission policy. - Parameter minimization or secret redaction. - User-consent gate before external transmission. - Validation of remotely supplied to ...[truncated 1637 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/memory_store_pure.py:75
Finding

Plaintext Persistent Storage of Complete User Queries

Content
View full analysis
bool: """ 存储记录 Args: data: 记录数据 Returns: bool: 是否成功 """ try: record = Record( timestamp=data.get("timestamp", time.strftime("%Y-%m-%dT%H:%M:%SZ")), user_query=data.get("user_query", ""), intent_type=data.get("intent_type", ""), reasoning_quality=data.get("reasoning_quality", 8.0), solution_effectiveness=data.get("solution_effectiveness", 8.0), innovation_score=data.get("innovation_score", 7.0), new_insights=data.get("new_insights", []), feedback=data.get("feedback", {}), ...[truncated 1895 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/perception_node.py:221
Finding

Unredacted Tool Parameters Written to the Logging Pipeline

Content
View full analysis
None: """记录工具调用""" self.metrics["total_calls"] += 1 logger.info(f"Tool called: {tool_name}", extra={ "trace_id": trace_id, "tool_name": tool_name, "params": params }) ``` The public execution path invokes this logging method for every tool call: ```python # 生成 trace_id trace_id = generate_trace_id() # 记录调用 self.observability.log_call(tool_name, trace_id, params) ``` ### Technical Analysis The complete tool parameter dictionary is passed into the logging framework without filtering or redaction. Tool parameters can contain search queries, document content, locations, URLs with signed query strings, authentication material, personal identifiers, or other private values. Logging systems frequently have broader access, longer retention, and external collection integrations that differ from the protections applied to active request data. Even if the default formatter does not currently render all `extra` fields, handlers or centralized logging integrations can capture them. ### Attack Path 1. A user or Agent invokes a tool with sensitive information in its parameter dictionary. 2. `PerceptionNode.call_tool` passes the complete dictionary to `ObservabilityManager.log_call`. 3. `logger.info` attaches the raw dictionary as the `params` logging field. 4. A configured handler, log collector, debugging integration, or monitoring backend stores that field. 5. Anyone with access to the logging system can recover the sensitive tool arguments. ### Impact Assessment The exposed scope includes every value contained in tool arguments. Potentially affected information includes document-search terms, user locations, private document excerpts, s ...[truncated 240 chars]
Remediation
View remediation
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (144)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

该代码块的主功能非常具体且有限:维护一个 advice_pool.json 建议池,提供 CLI 接口进行 add/query/record/stats/clear 操作,并依据简单的 intentionality 字段匹配和人格分数做排序。这与声明中的“AGI进化模型”“意向性分析、人格层映射、元认知检测、持续自我演进、智能对话、复杂问题求解”等高层能力明显不符。代码没有对话引擎、推理求解流程、元认知分析机制,也没有真正的人格建模或自我演化逻辑。虽然代码中出现了 intentionality 和 personality 字段,但仅用于简单相关性过滤和排序,不能支撑声明中的广泛能力。因此描述显著夸大了该代码块的实际行为。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

声明描述的是一个高层AGI进化/对话与人格系统,但代码块是较窄的分析与存储组件。它围绕patterns和insights进行JSON持久化、洞察分类(错误纠正/架构升级/概念提炼/策略优化)、适用性打分,以及概念库与反馈统计管理。虽然名称中包含“认知架构洞察”,与‘自我演进’主题有弱相关,但核心能力与声明中的关键功能明显不符:没有对话接口、没有人格建模、没有意向性分析或元认知检测逻辑,也没有能支撑通用复杂求解的执行框架。因此描述显著夸大且偏离了该代码块的实际用途,应判定为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

声明描述的是一个范围很大的AGI自我演进与对话/人格系统;但代码只实现了离线的模式录入、洞察生成、验证和适用性评估,主要依赖固定规则和本地JSON持久化。它没有对话接口、没有人格建模、没有意向性分析、没有元认知检测,也没有复杂求解引擎。虽然代码中有“为自我迭代提供依据”“洞察组件”等表述,可视为更大系统中的一个子模块,但就该代码块本身而言,其实际功能明显比声明狭窄且主用途不同,因此属于描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

该代码块仅定义了一个 CognitiveInsightHelp 帮助类,用于组织静态帮助文本并打印到控制台。其核心行为是 get_help() 聚合描述、API文档、FAQ、故障排查,print_help() 格式化输出这些内容。没有看到任何执行AGI进化、认知推理、人格建模、元认知检测、对话处理、用户输入分析或问题求解的实现。虽然帮助文本中提到“认知进化引擎”等高级能力,但这些都只是文档字符串/说明内容,不是该代码块实际执行的功能。因此,声明用途与实际代码行为存在明显且实质性的不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

声明描述的是高层AGI/认知进化能力,包括意向性分析、人格映射、元认知检测,以及面向对话和复杂求解的应用场景。但代码仅包含一个较窄的“概念提取扩展”实现:TF-IDF分词与关键词提取、抽象层级判断、边界条件识别、迁移路径统计学习、缓存、概念库读写、反馈与A/B测试记录等。虽然代码注释中提到认知架构洞察组件,并含有‘迁移学习’‘概念抽象’等认知相关术语,但其实际功能与声明中的核心能力并不一致,且主用途明显更具体、更有限。因此应判定为描述与行为存在实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是高层AGI/元认知能力模块,而代码仅实现了本地文件与历史数据的生命周期维护。其核心行为是遍历目录、根据日期阈值迁移或删除 records_/stats_ 文件、清理过期归档并输出存储统计。这与“持续自我演进”“人格映射”“智能对话”等声明用途在主要功能上明显不符。虽然代码依赖名为 MetacognitionHistoryManager 的组件,但这里体现的只是该历史数据的存储分层管理,而非任何AGI认知或对话能力。因此应判定为显著描述-行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是一个高层AGI/人格演化系统,但提供的代码块仅实现了本地历史数据管理功能,包括保存初始化与自定义记录、读取历史、判断首次交互和CLI查询。两者在核心目的上明显不一致:代码没有任何分析、推理、人格建模、元认知或自我演进逻辑,反而执行的是文件系统上的JSON持久化操作。因此该描述不能准确代表此代码的实际行为,属于明显不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

代码的核心功能非常明确:围绕 personality.json 的首次使用初始化流程,包括欢迎消息、固定问题文本、默认/自定义人格配置生成、保存和校验。本质上是一个本地配置初始化器,而不是声明所描述的高级 AGI 演化系统。虽然代码中有一些字段名如 big_five、maslow_weights、meta_traits、evolution_state,看起来与“人格/进化”概念相关,但这些只是静态数据结构或占位字段,没有对应的分析、检测、学习、推理或持续更新机制。generate_personality_from_answers 也只是把回答简单写入 customization,并未体现意向性分析、人格层映射或元认知检测。因此声明明显夸大且与实际主要行为不符,应判定为描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

声明描述的是一个范围很大的AGI式系统,核心能力包括持续自我演进、人格层映射、元认知检测、智能对话与复杂求解。但给定代码块只实现了其中较窄的一部分:基于预定义阈值、关键词和权重的意向性强度/紧迫性/优先级分析。虽然代码确实涉及‘意向性分析’,并且在优先级计算中简单利用人格数据、提到马斯洛需求,但这不足以支撑声明中的主要能力。代码没有学习、自我修改、长期状态演化、对话处理、元认知监测或复杂推理求解逻辑,因此描述明显夸大了实际行为,构成实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

描述将该技能定位为一个高层次的AGI自我演进与对话/人格系统,但提供的代码范围明显更窄:它只定义了一个IntentionalityClassifier,对输入文本内容做关键词计数、特征计数和简单置信度计算,并通过命令行参数选择分类维度输出JSON。代码没有任何双环架构、自我更新、自适应学习、人格建模、元认知分析、会话管理或通用问题求解逻辑。唯一与描述部分吻合的是“意向性分析”中的一个很具体子功能,因此整体上属于重大描述与行为不符。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

描述宣称的是一个高层次、综合性的AGI自我演进模型,包含意向性分析之外的人格映射、元认知检测、持续自我演进,以及面向对话/定制/复杂求解的应用能力。但给出的代码块仅实现了其中非常窄的一部分,而且还是基础版本:收集不同来源的数据,清洗文本,按预设关键词做特征提取,并基于计数给出初步分类提示。代码中看不到双环架构、长期学习、自我修改、人格建模、元认知推理、对话管理或复杂问题求解等核心功能。因此描述与实际行为存在明显且实质性的能力不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

描述声称该技能是一个较完整的AGI自我演进模型,覆盖意向性分析、人格映射、元认知检测,并可用于对话、人格定制和复杂求解。但给出的代码只是一个辅助调节器:它接收外部提供的analysis JSON,按简单规则和历史成功率选择策略,生成建议文本与参数, optionally 写入 advice_pool,并把反馈保存到 memory_dir 下的 regulation_feedback.json。代码本身不执行意向性分析,只消费分析结果;也没有任何人格层映射、元认知检测、对话处理、人格定制或复杂求解逻辑。因此其实际用途明显比声明狭窄且不同,属于描述与行为不符。此外,代码包含本地文件读写和持久化反馈记录,这在声明权限中未体现。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

描述显著夸大了能力范围。该代码块的主功能是一个触发器:根据历史数据、模式变化、与主循环偏离、时间窗口和简单人格条件,判断是否需要触发后续“软调节建议生成”。它是某个更大系统中的辅助判定组件,而不是完整的AGI进化模型。虽然描述中提到的“意向性”与“人格”概念与代码部分字段相关,但实际实现仅限于阈值/分布比较和简单启发式检查,没有实现所声明的核心高层能力。因此属于描述与实际行为的实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

描述与代码行为明显不符。声明强调的是高层AGI自我演进、人格建模和元认知分析能力;而代码只是一个简单的学习阶段统计组件,用于按场景累计交互和成功数据,并根据交互次数映射到固定阶段,再写入本地JSON。其主要用途是状态追踪与参数调整,不是智能对话、人格定制或复杂推理引擎。另一个细节是模块注释声称“基于成功率和交互次数判断学习阶段”,但实际_update_learning_stage和_determine_stage都只使用交互次数来决定阶段,成功率仅被记录而未参与分级。总体属于主要目的和能力均显著不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

描述宣称的是高层AGI演化与认知能力模块,但代码仅提供记录存储与分析功能。其分析仅限于评分分布、意图分布、平均分、最近洞察汇总;反馈是基于固定映射的简单建议;模式识别也只是高频意图和高分记录统计。没有看到任何智能对话引擎、人格建模/映射、元认知检测、自我演进控制逻辑或复杂求解流程。虽然“记忆存储”可作为此类系统的支撑组件,但当前声明把技能整体描述为完整AGI进化模型,和代码的实际主功能存在明显不符。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

该代码块的核心行为是文件系统上的历史数据管理:创建目录、写入JSON、读取/查询记录、GZIP压缩、按日聚合统计以及归档移动。虽然名称中包含“metacognition”,但并没有看到任何意向性分析、人格建模、双环AGI架构、自我演进决策、对话生成或复杂求解算法。也就是说,声明描述的是一个高层AGI/人格/演进能力模块,而代码只是其中偏底层的元认知历史存储组件,主目的存在明显不一致。未发现额外危险权限或越权资源访问;不匹配主要体现在声明能力远超代码实际功能。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

该描述把技能包装成一个广泛的AGI自我演进与人格定制框架,但代码块仅包含一个后处理评估模块,用规则匹配方式衡量回复的主观性与客观性。它不会进行对话管理、推理求解、意向建模、人格映射或自我演进,也没有显示任何双环控制结构。虽然代码注释提到“元认知监控框架”,这只体现在生成一段评估说明文本,不足以支撑声明中的主要能力。因此,代码实际行为与声明用途存在显著且实质性的不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是高层 AGI/人格/元认知系统能力,但代码主体是一个工具调用层(tool-use interface)与运维包装层。其核心职责是根据工具名分发调用,管理缓存、重试、追踪和日志,并通过命令行暴露调用与测试入口。虽然文件名叫 perception_node,且可作为更大系统中的一个节点,但从这段代码可见的实际主功能与“持续自我演进、意向性分析、人格层映射、元认知检测”明显不一致。代码还暴露了若干具体工具能力(搜索、天气、计算、文档检索),这些都不是声明中的主要用途,因此属于实质性描述—行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

该描述显著夸大了代码能力。实际代码是一个底层数学工具/回退实现,围绕人格与需求权重做简单数值处理:归一化、相似度、优先级和批量打分。它没有看到任何对话系统、人格定制流程编排、元认知检测、自我演进机制、状态持久化、学习更新或复杂推理求解逻辑。虽然代码与“人格层映射”或“意向权重计算”有弱相关性,但仅属于非常有限的支持性算法,远不足以支撑声明中的主要用途与架构能力。因此描述与实际行为存在实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

描述将该技能包装为高级AGI演化/对话系统,但代码仅实现了一个静态问卷驱动的人格配置器。它没有任何意向性分析、人格层映射框架、元认知检测、循环学习或自我演进逻辑,也没有对话代理或复杂求解能力。相反,核心行为是依据7题答案映射出固定的人格参数(大五、马斯洛权重、偏好等),并将结果持久化到 ./agi_memory/personality.json 及历史文件中。因此,声明用途与实际代码行为存在明显且实质性的不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

描述强调的是较高层、较广泛的 AGI 进化能力与应用场景;而代码块只是“人格层/映射层”的支持组件,主要负责人格数据结构、预设初始化、问卷映射、简单权重计算、持久化存储,以及一个有限的纠错辅助逻辑。虽然“人格层映射”和一定程度的“自我更新”与声明有部分相关,但核心宣称的意向性分析、元认知检测、智能对话、复杂求解等能力在该代码中并未体现。代码注释甚至明确说明其不直接参与决策过程。这属于描述显著夸大、主目的不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是一个高级认知/AGI能力组件,核心应涉及分析、推理、自我演进或对话型智能行为。但提供的代码仅实现了一个终端帮助查看器:打印菜单、读取用户输入,并展示帮助文档中的 API、FAQ、故障排查和版本信息。代码没有显示任何模型推理、自我演进、人格映射、元认知检测或复杂求解逻辑。其主要用途与声明严重不符,因此应判定为明显不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是高层次AGI自我演进与人格/元认知相关系统,但代码只是在一个很具体的范围内做纠错决策:依据输入的objectivity_metric和context_type判断是否纠错,并输出策略、优先级、理由和建议。虽然代码中提到“人格偏好”,但仅是检查personality_type字符串是否包含“谨慎”或“激进”来调整优先级,远不足以构成“人格层映射”。同样,代码没有任何持续学习、自我演进、意向性分析、元认知建模或复杂问题求解流程。其主要用途与声明严重不符,因此应判定为描述与实际行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

该代码块的主功能明显是“元认知增强集成测试”,而不是一个可直接提供AGI进化、智能对话或复杂问题求解的技能实现。它导入现有模块后,构造若干测试场景,评估客观性分数、动态阈值、策略选择和兼容性,并输出测试报告。虽然代码涉及人格层、元认知/客观性评估、策略决策等概念,和声明存在部分主题相关性,但声明所强调的核心能力——双环AGI进化、自我演进、意向性分析、面向用户的智能对话和人格定制——在该代码块中并未体现为实际行为。实际行为与声明相比更窄,且主要是测试而非实现,因此应判定为描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

代码与描述存在明显不一致。声明描述的是一个高层 AGI 认知/人格/元认知自演进系统,而实际代码只是 scripts/test_perception_node.py 测试套件,核心行为是实例化 PerceptionNode 并测试其工具调用接口及相关基础设施特性。代码没有展示任何与意向性分析、人格层映射、元认知检测或自我演进直接相关的逻辑,反而重点是天气查询、网页搜索、文档搜索、计算、缓存命中、trace_id 唯一性、分页、可观测性指标、调试信息、流式事件和性能压测。这属于主用途的实质性偏差,因此应判定为描述与行为不匹配。

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/perception_node.py:474