T07 · Tool Hijacking and Spoofing
- Location
scripts/tool_guard.py:45- Finding
Tool authorization can be bypassed through mutable, name-only permission classification
- Content
View full analysis
"GuardrailResult": from guardrail import GuardrailResult level = self.get_permission_level(tool_name) if level == PermissionLevel.READ: return GuardrailResult( allowed=True, reason="读操作,自动批准" ) elif level == PermissionLevel.WRITE: return GuardrailResult( allowed=True, requires_confirmation=True, reason="写操作,需要用户确认", message=f"工具 '{tool_name}' 是写操作,请确认是否执行" ) elif level == PermissionLevel.DANGEROUS: return GuardrailResult( allowed=False, requires_authorization=True, reason="危险操作,需要明确授权", message=f"工具 '{tool_name}' 是危险操作,需要明确授权才能执行" ) def get_permission_level(self, tool_name: str) -> PermissionLevel: """获取工具的权限级别""" if tool_name in self.read_tools: return PermissionLevel.READ elif tool_name in self.write_tools: return PermissionLevel.WRITE elif tool_name in self.dangerous_tools: return PermissionLevel.DANGEROUS else: return PermissionLevel.WRITE def add_tool(self, tool_name: str, level: PermissionLevel): """动态添加工具到权限列表""" if level == PermissionLevel.READ: self.read_tools.add(tool_name) elif level == PermissionLevel.WRITE: self.write_tools.add(tool_name) elif level == ...[truncated 2827 chars]- Remediation
View remediation
