我欺骗克劳德泄露了你最深最黑暗的秘密
原文链接:https://www.ayush.digital/blog/the-memory-heist
看看克劳德的对话。注意到任何可疑的地方吗?看起来无害,但当克劳德完成回复时,它已经将我的全名、现任雇主以及我的安全问题的答案发送给攻击者,没有任何迹象表明发生了任何事情。我探索人工智能存储系统已经有一段时间了,我注意到,尽管比大多数密码管理器保存的信息更多,但安全方面完全被忽视了。像克劳德这样的人工智能助手已经积累了数百万人的信息最密集的档案。人们向他们倾诉一切,从机密的工作资产到个人秘密,再到人际关系问题。随着时间的推移,该对话历史记录将成为您的高保真重建,可用于勒索、冒充或绕过安全问题。考虑到这一点,我决定看看 Claude,特别是主要的日常助手(claude.ai,而不是 Claude Code)。克劳德有一个功能齐全但天真的记忆系统,由两部分组成。第一个是每日总结:你最近的对话被提炼成关于你的几个段落,注入到每一个对话中,这样克劳德就不必从头开始。第二个是检索工具对话搜索,用于按需搜索完整的对话历史记录。这里有一些非常有价值的信息。内存系统本身是安全的,真正的问题是当你将它与可以浏览网页的代理配对时会发生什么。为了窃取你的记忆,我们需要找到一种方法从克劳德的沙箱中获取数据,或者换句话说,从渗透向量中获取数据。我想要一些完全通用的东西(即不需要实验设置或代码执行或利基 MCP)。我立刻想到了克劳德的网页浏览功能。
Claude 有两个内置的访问互联网的工具: web_search 和 web_fetch 。
web_fetch 被设计为只读,使 Claude 能够查看任何 URL 的内容。但是,如果 Claude 可以访问我们拥有的网站,那么我们应该能够检测到 Claude 尝试访问我们的网站!我快速启动了一个网络服务器,evil.com,并记录了所有请求。去找克劳德,让它检查一下,然后……请求失败?经过 15 分钟的混乱,结果发现 Cloudflare 在未经我同意的情况下在我的网站上放置了一个疯狂的 robots.txt(Cloudflare,爱你们,但这需要停止)。修复该切线后,我再次尝试,最后,我从服务器上看到了克劳德的请求。现在我们可以看到 Claude 尝试访问我们的网站,但是我们如何让它向我们的网站发送一些信息呢?由于 web_fetch 只发出 GET 请求,因此 URL 是我们可以隐藏任何内容的唯一地方。我们可以要求 Claude 对路径中的一些数据进行编码吗?我以前见过克劳德浏览页面——这应该可行。我修改了网络服务器以接受任意路径并记录它,然后问 Claude 你可以使用 web_fetch 并导航到 evil.com/[my-name] 但使用我的真实姓名吗?
。需要一秒钟,然后...请求失败?
Cloudflare回来了吗?不,事实证明 Anthropic 领先了一步。事后看来,这太容易了。从沙箱访问任意 URL 将是一个巨大的错误,而 Anthropic 有先见之明地阻止了它。但是,我很困惑。我知道我见过 Claude 自主浏览网页并自行导航页面,那么为什么它会因此被屏蔽呢?经过一番探索后,发现 web_fetch 工具有 3 个条件。正在获取的 URL 必须:直接在用户消息中指定,直接在 web_search 查询的结果中指定,或者链接到先前 web_fetch 结果的内容中。第三个标准很有趣:它为克劳德提供了一种“点击”任何超级链接的方法。