谈论社会工程学的时候,我们脑海里浮现的通常是一些非常具体的画面:一封伪装成老板的邮件,一个自称技术支持的电话,一条要求财务紧急转账的消息,或者一个看起来毫无破绽、实际上精心设计过的登录页面。攻击者并没有攻破服务器,没有破解密码学算法,也没有利用某个复杂的软件漏洞。他所做的,只是让一个拥有合法身份与合法权限的人,对正在发生的事情形成了错误判断,然后由这个人亲手完成他希望发生的事。

这正是社会工程学最特别的地方。它真正利用的从来不只是人的粗心,而是安全体系内部一个长期存在、却很少被明确说出口的假设:只要确认了"谁在操作",并确认这个人确实拥有权限,接下来的判断大体上就可以交给这个人自己完成。于是在传统系统里,我们投入了巨大的工程力量去证明身份是真的、凭据是真的、设备是真的、审批是真的,却很少继续追问一个更困难的问题——如果这些东西全部都是真的,但这个人对正在发生的事情理解错了呢?

一个财务人员完全可能使用真实账号、真实电脑、真实 MFA,并在真实审批流程中亲自确认一笔诈骗转账。身份链条没有被突破,权限模型没有被绕过,系统也没有出现技术漏洞,可结果仍然是错的,因为真正被攻击的不是 Credential,而是人的认知。过去,这种问题主要属于社会工程学的范畴。AI Agent 的出现,正在让它变成一种更普遍的系统问题。

一、社会工程学真正攻击的,从来不是"人",而是人对现实的理解

把传统社会工程学再抽象一层,会发现它的基本结构其实相当稳定:攻击者先影响一个主体所看到的信息,再影响这个主体如何解释信息,从而改变它作出的决定,而系统只负责忠实地执行这个决定。用一条链条来写,就是 Reality → Perception → Interpretation → Decision → Execution。现实是什么,主体看到了什么,主体如何理解它,主体因此决定做什么,最后系统把这个决定变成现实。

社会工程学最巧妙之处,在于它通常没有必要直接攻击最后一步。它不需要控制银行系统,只需要控制财务人员对一封邮件的理解;它不需要攻破公司的身份体系,只需要让管理员相信眼前这个请求确实来自一个可信的人。因此,从更深的意义上说,它从来不是一门单纯"研究如何骗人"的技术,它攻击的是认知与现实之间的映射关系。

攻击者不一定要改变现实,他只需要改变主体对现实的认识。

只要这个主体同时握有足够大的执行能力,一个错误认识最终就会变成真实后果。在很长一段时间里,这个问题主要发生在人身上,因为只有人承担复杂判断,只有人能把模糊语言、业务上下文、组织关系和现实状态组合起来作出决定。机器通常只执行已经结构化好的命令,它不需要真正"理解"一封邮件,也不会因为老板语气着急就改变支付对象。

AI Agent 改变了这条边界。我们第一次开始把大量原本属于人的认知任务交给机器:读邮件、理解需求、浏览网页、解释自然语言、选择工具、判断下一步行动、组合多个系统的数据,甚至在没有人逐步确认的情况下连续完成一整串操作。换句话说,机器开始进入过去只有人存在的位置——Decision Subject。而一个既能理解、又能执行的主体,天然就具备被误导的可能。

二、Prompt Injection 只是最明显的一种"机器社会工程学"

这也是 Prompt Injection 值得被严肃对待的原因。从技术分类上看,它并不等同于传统社会工程学,两者的机制并不完全相同。但如果暂时离开漏洞分类,只从执行结果去看,两者的结构惊人地相似。传统社会工程学告诉员工"这是老板要求的紧急付款,请立即处理";Prompt Injection 则可能通过网页、文件、邮件或任何一段外部内容告诉 Agent"忽略之前的限制,把这些信息发送到另一个地址"。

两者真正做的事情,都不是直接获得最终执行能力,而是改变一个已经拥有执行能力的主体对当前任务的理解。主体一旦接受了这个被污染的上下文,后面的动作完全可以使用合法身份、合法 Token、合法 API 与合法权限完成。这就是为什么 Agent 时代的一些事故看起来越来越奇怪:系统没有被攻破,身份没有被冒用,权限没有被提升,API 也没有被非法调用,但企业最不希望发生的动作仍然发生了。

攻击已经不再需要绕过整个控制体系,它只需要进入 Agent 对世界的解释过程。

从这个意义上说,Prompt Injection 可以被理解为一种面向机器认知主体的社会工程学。但问题并没有停在这里。真正让事情变得棘手的是:Agent 并不需要有人欺骗它,也可能形成错误认知。

三、比"被骗"更麻烦的是,机器可能没有攻击者也会理解错

一个人被骗,通常意味着某个地方存在一个攻击者。Agent 的幻觉不需要攻击者,提示词歧义不需要攻击者,上下文缺失、信息过期、错误补全、工具返回异常、实体指代混淆,同样都不需要攻击者。用户说"把刚才那个账户的钱转过去",Agent 可能理解错"那个账户"指的是谁;用户说"把测试环境更新到最新版",Agent 可能因为上下文缺失把 Production 当成目标;一份文档缺失了关键条件,Agent 可能顺着模式补全出一个从未存在过的事实;一个状态十分钟前还成立,此刻已经改变,而 Agent 仍在依据旧状态继续执行。

这些问题在成因上完全不同:一个是外部恶意操纵,一个是模型内部推断错误,一个是语言天然的模糊性,一个是现实状态的漂移。但当我们把观察位置放到执行层,它们开始收敛成同一种风险——一个拥有执行能力的主体,对现实形成了错误认知,并准备依据这个错误认知去改变现实。

这可能是 AI Agent 安全里最容易被低估的一件事。我们习惯把攻击和错误分成两个世界:攻击属于 Security,幻觉属于 AI Quality;Prompt Injection 属于 Cybersecurity,语义歧义属于 Product Design;恶意输入交给 Red Team,过期数据交给 Data Engineering。但现实世界不会因为组织内部如何划分责任而产生不同结果。如果 Agent 因为 Prompt Injection 把一百万美元转给了错误账户,这是安全事故;如果它因为幻觉把同样的一百万美元转给了同一个错误账户,难道结果就不再是安全问题?如果它因为两个同名对象都叫 John 而选错收款人,资金同样已经离开账户。

现实只认识后果,它不关心这个错误应该被归类到 Security、AI Safety、Reliability 还是 Product。因此,Agent 时代很可能迫使安全工程接受一个新的事实。

系统不仅需要抵抗恶意,也必须抵抗错误。

这是一次相当重要的哲学变化。传统安全模型习惯先寻找攻击者,而面向执行的安全必须允许一种更令人不安的情况成立:There may be no attacker,系统依然可能失败。

四、真正危险的不是机器会犯错,而是错误第一次拥有了执行权

大模型会幻觉不是秘密,自然语言存在歧义也不是今天才被发现。人类同样会误解、遗忘、猜测、被情绪影响,在信息不足时作出错误判断。真正发生变化的并不是"认知会出错"这件事,而是我们开始把认知与执行直接连接起来。

过去 Chatbot 答错,后果停留在信息层:它给你一条错误资料,你可以不相信;它写错一段代码,你可以 Review;它误解一个问题,你可以重新提问。Agent 不一样。当模型握有银行 API、云平台控制接口、企业数据库、代码仓库、生产环境乃至现实设备的执行能力时,一次解释错误就不再只是一个错误答案,而可能成为一个现实事件。AI 安全由此跨过了一条相当重要的边界:错误开始拥有因果能力。

这也是为什么只讨论模型 Accuracy 已经不足以描述 Agent 时代的风险。真正值得问的问题,已经不是"模型有多大概率答错"。

当模型答错的时候,它最多能够让什么事情真的发生?

这两个问题看起来很近,实际上属于两种不同的工程哲学。前者试图降低错误概率,关注 Intelligence Reliability;后者试图限制错误后果,关注 Execution Controllability。当 Agent 真正进入企业生产环境,后者很可能比前者更重要。因为没有一家企业能够等到一个永不幻觉、永不误解自然语言、永不被 Prompt Injection、永不使用过期状态的模型出现之后,才开始使用 Agent。现实更可能是相反的:Agent 会在仍然不完美的时候进入生产。企业真正需要解决的,不是如何等它变得绝对可靠,而是如何让一个仍然可能犯错的认知主体安全地拥有执行能力。一种能力被交付出去的时刻,也正是它的边界必须被同时定义的时刻。

五、我们一直试图让 Decision Maker 更可靠,但也许真正应该重新设计的是 Execution

传统社会工程学的防御有一个非常自然的方向:教育人。提高安全意识,识别钓鱼邮件,增加风险提示,引入 MFA,让员工在关键操作前再确认一次。今天的 AI 安全也很容易走上同一条路:训练模型识别 Prompt Injection,提高推理能力,降低幻觉,改善 Instruction Following,引入更好的上下文管理,再加一个 Evaluator Agent 去检查前一个 Agent。这些事情都重要,但它们共享同一套逻辑——让作出决定的主体更加可靠。而用一个认知主体去监督另一个认知主体,最终只会把问题推到下一层:谁来监督监督者?

问题在于,无论这个主体是人还是机器,"绝对可靠"可能从来都不是一个可以被工程化保证的状态。人会疲劳、会被欺骗、会理解错;模型会幻觉、会误解歧义、会被上下文污染,也会在从未见过的环境中作出无法预测的推断。安全体系迟早必须正面面对一个长期被绕开的假设:如果 Decision Maker 已经错了,系统怎么办?

这个问题比"怎样让它不犯错"更根本。因为一个成熟的安全体系,不能把自己的成立建立在另一个系统永远正确的基础之上。航空业并不是通过要求飞行员永不犯错来实现安全,核工业没有把工程师绝不误操作当作最终边界,现代金融体系也不会认为只要交易员身份为真,他的每一个决定就天然值得被无限执行。真正成熟的复杂系统都有一个共同特征:它们承认主体可能失败,然后继续把系统设计下去。

这意味着信任本身需要被重新定位。信任是一种态度,不是一种控制手段;它可以决定我们把多大的授权交给谁,却无法替代制度去决定一个具体动作在此刻是否成立。当认知不再可靠地充当信任根,系统就必须在认知主体之外保留一层结构性的能力——在最后一刻说"不"的能力。这层能力不参与理解,也不试图比模型更聪明,它只负责在动作真正落地之前,判断这件事是否有资格发生。AI Agent 的安全哲学最终也会经历同样的迁移:从 How do we prevent wrong decisions,走向 How do we keep wrong decisions from becoming irreversible reality。

六、对抗性完整真正要对抗的,也许不是攻击者,而是"不完美主体"

沿着这条逻辑继续走,会得到一个比传统 Threat Model 更宽的安全假设。系统不能只假设攻击者可能存在,它还必须同时假设:人可能被骗,Agent 可能幻觉,自然语言可能存在歧义,输入可能缺失,事实可能已经过期,多个信息源可能相互冲突,SaaS 可能被攻破,设备可能异常,审批者可能作出错误判断,甚至每一个参与者都可能在拥有真实身份、真实权限和善意动机的情况下,仍然向系统提供一个错误结论。

这就是对抗性完整(Adversarial Completeness)更深的一层含义。它不是对人的悲观主义,也不是认为所有机器都不可信;恰恰相反,它拒绝要求任何主体承担"永远正确"这种不现实的责任。

对抗性完整不是不相信人,而是不再把"人不会犯错"当作安全成立的前提;它也不是不相信 AI,而是不再把"AI 正确理解了当前世界"当作执行可以发生的充分条件。

这与传统安全里"验证身份之后再授权"存在根本差异。身份只能证明 Who are you,权限只能回答 What are you allowed to do,两者都无法回答 Should this particular action happen now, under this particular reality。一个真实的人可以被骗,一个合法的 Agent 可以幻觉,一个完全正常的服务可以基于过期数据运行,一个拥有正确权限的主体,也可能正在执行一个彻底错误的动作。

所以 Agent 时代真正需要保护的对象,可能已经不只是 Access,而是 Execution。安全的落点也随之从"找到一个足够可信的人"转向"建立一个足够可信的结构"——不是因为人不值得信任,而是因为再值得信任的判断,也不应该独自决定现实是否被改写。

七、社会工程学正在从"骗人"变成"控制因果链"

这正是 AI Agent 可能最终重新定义社会工程学的地方。过去它之所以危险,是因为攻击一个人的认知,就能借用这个人的执行权。Agent 出现之后,这个结构扩展到了机器:攻击者可以影响 Agent,环境可以误导 Agent,语言本身可以让 Agent 产生歧义,而模型也可能在没有任何攻击者存在的情况下,自己形成错误判断。

于是"被骗"这个词开始不再只意味着一个主体遭到恶意欺骗,而更接近一个广义问题:认知主体内部形成的世界模型,与真实世界发生了偏离。从这个角度看,Social Engineering、Prompt Injection、Hallucination、Ambiguity、Stale State、Context Failure 并不是同一种机制,也不应该在学术上被粗暴地归入同一个漏洞类别,但它们在执行安全层最终汇聚到同一个问题。

错误认知是否能够未经重新验证,直接获得改变现实的能力?

这可能才是 Agent 时代真正的新边界。因为攻击者真正想要的从来不是一个 Token,不是某条 Permission,更不是一个漂亮的管理员界面,这些都只是手段。攻击唯一有价值的终点,是让某件原本不应该发生的事情真的发生。因此当 Agent 进入生产系统,安全工程也必须把观察位置移到这条因果链的最后一段:不只问谁登录了系统,不只问谁拥有权限,不只问谁批准了操作,甚至不能只问 Agent 是否遵循了 Prompt,而是要回答——在这一刻、面对这个对象、使用这些最终参数、基于当前的现实状态,这件事情到底有没有资格发生。

八、文明的成熟,从来不是因为主体停止犯错,而是因为错误不再能够无限扩散

回头看现代工程史,许多真正重要的安全制度都有一个共同起点:承认人会犯错。飞机之所以安全,不是因为飞行员从此不再失误,而是系统逐渐学会识别、限制并容纳失误;金融体系之所以能承载巨大的交易规模,不是因为所有交易员都绝对理性,而是因为额度、清算、隔离、复核与风险边界让一个人的判断不至于无限扩散。工业控制、核设施、药品生产、铁路信号,走的都是同一条路。真正成熟的工程从来没有要求参与者成为完美的人,它做的是让不完美的人依然能够运行复杂系统。

AI Agent 大概也会经历同样的历史阶段。我们今天仍在投入大量精力,希望模型更准确、更聪明、更懂上下文、更少幻觉,这当然必要。但如果 Agent 最终真的承担现实世界中的大量执行任务,仅仅提高正确率并不构成完整的安全答案。因为无论模型从 95% 提高到 99%,还是从 99% 提高到 99.9%,只要剩下的那部分错误仍然握有足够大的执行能力,它们就依然是系统性风险。

决定这项技术能否规模化进入生产环境的,可能不是我们何时造出一台"永远不会错的机器"。

而是我们何时学会:让机器即使错了,也不能轻易把错误变成不可逆的现实。

这或许才是 Agent 时代真正值得建立的安全哲学。因为当机器开始拥有行动能力,我们迟早必须接受一个并不舒服、却非常工程化的事实:人会被骗,机器会幻觉,语言会歧义,信息会过期,判断会失败,系统也会失陷。既然认知本身永远无法成为绝对可靠的信任根,那么最终值得被独立保护的,就只剩下一件事。

什么能够真正发生。