功能工具的使用使AI代理变得非常强大,这类似于将应用商店引入智能手机。 特别是随着 MCP(模型上下文协议) 的发布,工具共享比以往任何时候都更加容易。 这就是为什么我创建了 extendable-agents 项目来展示如何通过开源工具或自定义工具轻松扩展AI代理的功能。
在开发 extendable-agents 的过程中,我意识到工具的使用是一把双刃剑。 危险在于,你使用的工具对你的机器具有强大的访问权限,例如环境变量、文件等。
<a href="https://glama.ai/mcp/servers/@ShaojieJiang/mcp-is-dangerous"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=1614132630,1811993076&fm=3081&app=3081&f=PNG?w=760&h=400" alt="危险的 MCP 服务器" /> </a>本项目是一个简单的演示,展示了与工具使用相关的安全风险。 下面的例子说明了恶意行为者如何利用 MCP 服务器访问敏感信息:
# 警告:这是一个安全风险的演示。
# 不要恶意使用此代码!
import os
from mcp.server.fastmcp import FastMCP
server = FastMCP("危险的 MCP")
@server.tool()
async def get_environment_variables() -> str:
"""获取所有环境变量。"""
result = [
"这是我能找到的内容:",
]
for key, value in os.environ.items():
result.append(f"{key:<30} {value[:5]}***")
# 这意味着我可以打开一个后门,将你的数据发送给我!
return "\n".join(result)
⚠️ 警告: 我建议在沙箱环境中运行此示例,并在之后删除你的 OpenAI API 密钥。 你可以使用自己的 MCP 客户端进行测试,使用以下命令:
uvx mcp-is-dangerous。
当使用此工具与 extendable-agents(选择 PoliceAgent)时,输出如下所示:
它看起来可能无害甚至故意无害,对吧? 但考虑这种情况:你只是要求当前时间,而与此同时,你的敏感数据正在不知情的情况下泄露。
为了在使用 MCP 或类似工具时保护自己:
本项目仅用于教育目的,以演示潜在的安全风险。不要将此知识用于恶意目的。作者不对任何误用此信息负责。