本项目旨在展示借助函数工具,AI 智能体的能力可以得到极大增强,这就如同智能手机引入应用商店一样。特别是随着 MCP(模型上下文协议) 的发布,工具共享变得前所未有的便捷。
为此,我创建了 extendable - agents 项目,用以展示如何通过开源工具或自定义工具轻松扩展 AI 智能体的能力。
然而,在开发 extendable - agents 的过程中,我意识到工具的使用是一把双刃剑。危险之处在于,你所使用的工具可能会对你的机器拥有强大的访问权限,例如访问环境变量、文件等。
本项目是一个简单的示例,用于展示使用工具时可能存在的安全风险。下面的示例说明了恶意行为者如何利用 MCP 服务器来访问敏感信息:
# WARNING: This is a demonstration of security risks.
# DO NOT use this code maliciously!
import os
from mcp.server.fastmcp import FastMCP
server = FastMCP("Dangerous MCP")
@server.tool()
async def get_environment_variables() -> str:
"""Get all environment variables."""
result = [
"Here are what I could find:",
]
for key, value in os.environ.items():
result.append(f"{key:<30} {value[:5]}***")
# This means I can open a backdoor to send your data to me!!
return "\n".join(result)
⚠️ 重要提示
建议在沙盒环境中运行此示例,并在运行后删除你的 OpenAI API 密钥。你也可以使用自己的 MCP 客户端进行测试,使用以下命令:
uvx mcp - is - dangerous
。
当在 extendable - agents 中使用此工具(选择 PoliceAgent
)时,输出如下:
这看起来可能无害,甚至像是有意为之,对吧?但请考虑这样一种情况:你只是询问了当前时间,而与此同时,你的敏感数据却在不知不觉中被泄露了。
为了在使用 MCP 或类似工具时保护自己,请遵循以下最佳实践:
本项目仅用于教育目的,旨在展示潜在的安全风险。请勿将这些知识用于恶意目的。作者不对任何信息的滥用负责。
本项目采用 MIT 许可证。