社会工程学:人为什么会忽略安全警告
公司今年做了两次安全意识培训。第二次的考试,小李考了 96 分,还剩 4 分扣在一道关于附件的多选题上。
同一个月的某天上午,他在会议室里听汇报,手机上收到一条提醒,说他的身份验证令牌今天到期,需要重新绑定一下。他点开了。
事后他自己也说不清为什么。他知道这类提醒可能是伪造的,考试里那道类似的题他做对了,培训上讲过的案例他还记得。
这就是本文要回答的问题:知道风险存在,为什么仍然可能做出不安全的选择?
知道和做到之间隔着四步
把这件事拆开看,从「知道有风险」到「做出动作」,中间有四个环节。
第一步是知道这个风险。这一步是培训能覆盖的部分,也是唯一能被考试测出来的部分。
后面三步都是条件问题。当时的场景里有没有想起来;想起来了会不会被别的东西压住;判断的时候依据对不对;判断本身有没有足够的注意力支撑。
四个断点里,第二个最容易在事后被当成道德问题。「他明知道还这么做」,听起来像不在乎。实际上更常见的情况是,在当时那几秒钟里,另一个东西的分量更大:客户在等答复、领导站在旁边、手上三件事同时到期。
四个断点合起来可以写成一句话:
说人话:知道只是两个输入里的一个。培训能改前面那个,后面那个是当时的处境决定的,靠记得更多补不上。
理解了这一点,再来看四条最常被利用的机制,就顺了。它们动的都是后面那个输入。
四条最常被利用的机制
确认偏差
确认偏差指的是:人先形成一个倾向,然后优先看见支持这个倾向的证据。
审核一笔付款的时候,如果心里已经觉得这笔没问题,眼睛会自动去找支持它的那几行:金额对得上、供应商是老的、审批记录齐全。同时,不合常理的那个细节,比如付款时间在凌晨,会被一眼扫过去。扫过去的那一下没有意识到,也不会留下记录。
被利用的方式很直接:对方给你一个你本来就希望的结论。你本来就觉得这次升级没问题,那么只要对方说的事跟这个判断对得上,剩下的证据你自己会补。补充证据的过程发生得很顺,人不会觉得自己在被说服。
确认偏差还有一个反向版本,在安全岗位上更常见:手里拿着一个怀疑,于是把每条线索都往那个方向解释,忽略了不合的部分。两种方向都让判断脱离了证据。
打断它的办法是把顺序倒过来:先写下「什么情况下我会认为这件事有问题」,再去看材料。这句话要写在看之前,看完再补就不算了。
自动化偏差
自动化偏差指的是:系统给出的提示会被当成结论。
显示器右下角弹出一个更新提示,格式是系统那一套,语气是系统那一套;邮箱里一封通知带着公司签名档;平台里跳出一个异常提醒。这些形式的共同点是,它们平时确实是真的。长期下来,人形成了一条经验:这类东西不用再查。
这条经验在大部分时候能省事,所以它一直被用着。问题在于,形式是可以模仿的。一个提示只要长得像系统提示,判断这件事就会被直接跳过。
自动化偏差还有一层更隐蔽的作用。当系统说「没问题」的时候,人会放松核验;当系统说「有问题」的时候,人又容易跳过复核直接处置。两个方向上都省掉了一次独立判断。
打断它的办法是保留一个动作:不管提示长什么样,来源单独确认一次。系统发出的通知,可以在系统里再查一遍,而不是顺着提示里的入口点进去。
注意力分散
判断是需要工作记忆的。同时开会、回消息、赶截止时间的时候,留给判断的那部分容量会很有限。
容量不足时,大脑会给任务降级。原本需要三步的判断(这是谁、这件事该不该他做、走没走流程),会被压缩成一步:看起来像平常那种,处理掉。
被利用的方式也很朴素:把请求塞进你最忙的时段。上午十点、周五下午、月底结账,这些时间点的共同点是手上的事本来就多。另一种做法是制造一个必须马上处理的紧急事项,把原有的判断资源挤出去,然后再提真正的请求。
这条机制解释了一个常见现象:同一个人,在被专门叫住、坐下来、问他一句「你觉得这个有问题吗」的时候,判断是对的。他不是不会判断,是当时没有被留出判断的余地。
告警疲劳
告警疲劳是这四条里最容易被误解的一条。它表现的像工作态度问题,实际上是一个过程。
过程是这样走的。规则越加越多,同一条链路上每个环节都单独发一条,告警总量上去了。处理时间不够,只能扫一眼标题。大部分点开之后都没事,于是「点了也没事」这个经验在积累。处置动作慢慢从「判断一下」退化成「清掉」,因为清掉的成本很低,而漏掉看不出代价。
走到最后,某一天的某一条是真的,它和前面几十条长得一样。
用一个示意式子描述这一步:
说人话:刚清掉的那几十条,会直接影响你下一条怎么处理。这个式子只是示意,用来说明「前面清了多少」会参与决定「下一条被怎么对待」,它不是一个实测出来的规律。
从进攻方的角度,这条链本身就是目标。不需要骗过谁,只要让真事件落在噪声里。做法也很省事:制造一些会触发同类规则的低成本动作,把真事件压在中间。
另外几条也常被借用的心理
前面四条是主体,下面这几条出现的频率低一些,但每次都在起作用。
时间压力与稀缺。「这个窗口今天下午就关了」「名额只剩两个」,把可选范围压窄。时间压力的真正作用是取消比较的过程,让人从「要不要做」直接跳到「怎么赶紧做完」。
社会认同。「其他部门早就这么干了」「大家都改完了」,把判断替换成从众。这类话不需要是真的,因为很少有人去核。
损失厌恶。人躲损失的劲头比追收益大得多。「不改的话你这边可能会被点名」,比「改完有好处」有效得多。用在信息索取上也一样:不配合就可能出问题,配合似乎没有代价。
乐观偏差。这条最安静,它不需要对方做任何事。「这类事一般不会落到我头上」「我们单位太小,没人会盯着」,这些想法自己就会降低警惕。培训最难动摇的就是它,因为它在平时是对的。
承诺一致与沉没成本。人前面配合过一次,后面拒绝的成本就上升了。一段已经走了三轮的对话里,第四轮的核验会显得像是不信任对方,而这正是它最容易被跳过的时候。
为什么受过培训的人仍然会犯错
把上面这些放在一起,答案就比较清楚了。
培训改的是知识,场景改的是条件。考试的题目是被明确提出来的:「下面哪种做法更安全」。真实场景里的问题从来不被提出,它是嵌在一段正常对话、一个正常工作日里的。学员在考场上要做的判断,和他在工位上面临的判断,是两个任务。
还有一点需要注意。培训教的通常是识别,而真实场景要求的是暂停。识别是被动发生的(我认出了这是可疑的),暂停是主动的动作(我先停下,去核实)。人在忙的时候,被动的那部分还在运转,主动的那部分已经被挤掉了。
这就解释了一个看起来矛盾的现象:培训考试分数高的人,在真实场景里未必表现更好。分数测的是识别能力,而没有测过暂停能力。
有一件事值得说明。上面这些机制都是正常的心理功能,不是人的缺陷。确认偏差、自动化偏差、注意力分配、对重复刺激的习惯化,这些在日常生活里都在正常工作,只是在安全场景里正好指向了错误的方向。需要调整的是流程和条件,把判断的时间留出来。
拆解一个上午
下面这个场景里没有骗子,也没有故意使坏的人。
小周是运维。那天早上他手上压着三件事,其中一件要给客户回话。
09:10 到工位,先看监控面板。面板上有 46 条待处理告警,比昨天多。09:12 从第一条开始扫,前 20 条是同一个误报,上周就报过,IT 说在修。09:20 电话进来,客户催答复,面板在后台继续刷新,他去处理客户的事。
10:05 回来接着扫,剩 12 条。扫到第 4 条时,标题和前面几条几乎一样。10:06 点开又关上,标记已处理。这一步是自动的:模板化的标题、熟悉的来源、看起来是同一类。10:07 继续往下清,剩下 7 条在 3 分钟内清完,没有一条被真正看过。
10:30,被清掉的那条其实是真的。一台终端在连续向外部地址上传数据,触发了数据外发规则。14:00,客户那边反馈数据异常。从告警产生到被发现,中间隔了近 5 个小时。
回头看那四个断点,这段里都出现了。第 4 步是知识没被调出来:那条告警长得太像误报了。第 3 步是动机被压住:客户在等。第 5 步是依据被污染:标题、来源、样式都在说「跟前面一样」。第 6 步是注意力不够:7 条在 3 分钟内清完。
没有哪一步是明显的错误。每一步单看,都是没时间情况下的合理选择。
能改什么
从上往下有三层可以动。
个人层面,把临场判断换成预设规则。判断需要资源,规则不需要。事先定下几条硬规则:涉及外部地址的数据外发、涉及权限变更的请求、涉及资金的操作,不管看起来多平常,都停下来走一遍固定动作。规则的好处是在忙的时候也能执行,因为它不消耗判断。
团队层面,把节奏和复核分开。告警处置设一个上限,超过就交班而不是硬扫;关键动作安排双人复核,第二个人不看前一个人的结论,独立看材料。这一步针对的是确认偏差和注意力不足。
设计层面,解决告警疲劳要动的是告警本身。同一条链路上的多条告警聚合成一条;误报调掉或者降级,别让它们占同一块列表;真事件的判定条件写清楚,让它从样式上就跟误报区分开。
这三层里,第一层最便宜,第三层最有效。培训当然也要继续做,但要清楚它解决的是第一步那个断点,后面三步得靠条件设计。
结语
回到核心问题:知道风险存在,为什么仍然可能做出不安全的选择?
因为「知道」是一个状态,而「做出选择」是一个过程。这个过程发生在一个具体的时刻里,带着那个时刻的全部条件:手上有几件事、旁边有谁、时间还剩多少、前面刚看过什么。知识只是这些条件里的一个。
确认偏差和自动化偏差污染的是判断依据,注意力分散和告警疲劳压缩的是判断能力。四条都不需要对方多会说,只要把条件摆好,判断自己就会走样。
所以真正能提高安全性的,未必是让人记得更多,而是让判断在忙的时候也能发生:把规则写在前面,把核验变成动作,把告警的量降下来。
知道是必要条件,不是充分条件。








