本文的早期版本曾发表于 《SC评论》。经修改后在此发布。
若您曾遭遇窃贼闯入家中,便能体会那种最初的不安感——继而意识到自己确实遭到了盗窃与侵犯。这种经历通常会带来持久的困扰,更不用说还需采取堪比诺克斯堡的安防措施。
现在想象一下,你的家被盗了,因为窃贼配了钥匙。他们悄无声息地进进出出,却小心翼翼不被察觉。直到某天,你才惊觉藏在冷冻柜里的珠宝不翼而飞,保险箱被洗劫一空,个人物品被翻得乱七八糟。 这正是组织遭遇"零日攻击"时面临的现实。2020年Ponemon研究所的研究显示,80%的数据泄露事件源于零日漏洞利用,而令人担忧的是,多数企业至今仍未做好充分准备来显著改善这一数据。
零日攻击的本质在于,它不给开发人员留出时间来检测和修复可能被利用的现有漏洞——因为威胁发起者总是先发制人。 损害已然造成,随后便是一场修复软件漏洞与挽回企业声誉的激烈竞赛。攻击者始终占据优势,而最大限度缩小这种优势至关重要。
那份没人想要的圣诞礼物Log4Shell正引爆互联网,据称超过十亿台设备受到这个Java灾难性漏洞的影响。这很可能成为史上最严重的零日攻击,而我们才刚刚开始。尽管有报告称攻击行为早在漏洞公开数日前就已开始,但2016年黑帽大会的一场演讲表明该问题早已存在。哎哟。更糟的是,该漏洞极易被利用,全球所有恶意脚本编写者和威胁行为者都在借此大捞一笔。
面对阴险狡诈的威胁,更不用说软件开发过程中未被发现的漏洞,究竟该采取何种最佳防御策略?让我们一探究竟。
针对大型目标的"零日攻击"较为罕见(且代价高昂)
暗网存在着庞大的漏洞利用市场,零日漏洞往往价格不菲——本文提及的一个案例在撰稿时标价高达250万美元。 该漏洞被标注为苹果iOS系统漏洞,安全研究人员索要的天价并不令人意外。毕竟这可能成为入侵数百万设备的门户,在漏洞被发现修复前尽可能长时间地窃取数十亿条敏感数据。
但究竟谁拥有如此巨额资金?通常情况下,有组织的网络犯罪集团若认为必要,总能筹措资金——尤其在勒索软件攻击日益猖獗的当下。 然而全球各国政府及国防部门也是漏洞利用工具的客户群体——它们可将这些工具用于威胁情报分析;而在更积极的场景下,企业自身也会购买潜在的零日漏洞利用工具,以便在灾难发生时及时缓解影响。
2021年实时发现零日漏洞的数量屡创新高,大型组织、政府部门及基础设施最易成为漏洞探测的目标。 虽然无法完全抵御零日攻击,但您可通过设立结构完善且奖励丰厚的漏洞赏金计划来"主动出击"。 与其坐等黑市有人兜售您软件城堡的钥匙,不如主动邀请正规安全专家加入,为其提供合理的报酬,以换取合规披露漏洞及潜在修复方案。
倘若这竟是某种令人瞠目的零日威胁,想必您需要的可不止一张亚马逊礼品卡(不过这张卡绝对物有所值)。
您的工具可能对安保人员构成障碍
安全工具的臃肿问题由来已久,普通首席信息安全官(CISO)需管理55至75种安全工具。这不仅是世界上最混乱的瑞士军刀(比喻),根据Ponemon研究所的研究,53%的企业甚至不确定这些工具是否有效。另一项研究显示,仅有17%的首席信息安全官认为其安全解决方案"完全有效"。
在以职业倦怠、安全领域合格人员短缺、需求激增及敏捷性要求著称的领域,强迫安全专业人员处理海量数据、报告及监控庞大工具集所带来的信息过载,实属令人疲惫不堪。 这正是可能导致他们错过关键警报的典型情境——在评估Log4j漏洞时,此类疏漏或许就曾发生。
预防性安全措施应包含由开发人员主导的威胁建模。
代码层面的漏洞往往由开发人员引入,他们需要精确的指导和持续的学习路径来培养安全编码能力。然而,高级安全开发人员有机会在软件开发过程中学习并实践威胁建模。
最了解软件的人正是开发者,这不足为奇。他们深谙用户交互模式、功能使用场景,且当具备足够安全意识时,更能预见系统可能被破坏或利用的潜在情境。
若将此类情况类比于Log4Shell漏洞事件,我们不幸目睹了这样一种情景:一个灾难性漏洞竟能逃过专家和复杂工具集的检测,但若该库被配置为对用户输入进行净化处理,此类漏洞或许根本不会发生。这种疏忽看似是为追求便利而设计的隐蔽功能,却让漏洞变得极易被利用(想想SQL注入的程度,这绝非明智之举)。倘若威胁建模工作由一群热衷安全且经验丰富的开发者团队完成,这种情境很可能已被理论化并纳入考量。
一个优秀的安全计划包含情感因素,因为人为干预和细微差别是解决人为问题核心所在。威胁建模需要同理心和经验才能有效,正如在软件和应用程序架构层面进行安全编码和配置一样。 开发人员不应被突然推上这个岗位,但理想状态是为他们规划清晰的成长路径,使其能力提升到能够分担安全团队重要任务的程度(这也是建立两个团队之间良好关系的好方法)。
零日通向n日
应对零日漏洞的下一步措施是尽快发布补丁,希望每位使用易受攻击软件的用户都能尽快安装——当然要赶在攻击者下手之前。 Log4Shell漏洞的持久性和破坏力可能超越Heartbleed,这源于其在数百万设备中的广泛集成,以及在软件设计中形成的复杂依赖关系。
事实上,完全阻止此类隐蔽攻击的方法并不存在。然而,若我们致力于运用一切手段打造安全优质的软件,并以开发关键基础设施的严谨态度对待软件开发,我们终将迎来成功的契机。