2013年,黑帽白帽一个叫Hector Monsegur的黑帽白帽纽约人在自家公寓里被FBI逮捕。他当时是黑帽白帽黑客组织LulzSec的核心成员,代号"Sabu",黑帽白帽参与攻破了索尼、黑帽白帽中情局网站、黑帽白帽英国 Serious Organised Crime Agency 等多個目标。黑帽白帽被捕后不到24小时,黑帽白帽他同意成为FBI的黑帽白帽线人,继续待在组织里,黑帽白帽把同伙一个个送进了监狱。黑帽白帽这个人的黑帽白帽身份同时是黑帽和白帽——取决于你站在法庭的哪一侧。
黑帽和白帽这两个词,黑帽白帽最早来自西部片。黑帽白帽好人戴白帽子,黑帽白帽坏人戴黑帽子。上世纪八十年代,计算机圈子借用了这个比喻。白帽黑客受雇于公司,帮它们找漏洞、打补丁;黑帽黑客利用漏洞牟利,卖数据、搞勒索、或者纯粹为了破坏。听起来界限分明,但现实远比这个二分法浑浊。
我认识一个做渗透测试的人,姑且叫他老周。他的日常工作就是拿客户的钱,去攻击客户自己的系统。有一次他花了三天时间,用一封钓鱼邮件拿到了某公司财务总监的账号密码,然后顺利进入了内部ERP系统。他把整个过程写成报告交给客户,客户看完沉默了很久。老周跟我说,那一刻他觉得自己像个拿着钥匙的贼,只是这把钥匙是主人主动递过来的。
问题在于,同一套技术,换个场景,性质就完全变了。SQL注入、社会工程学、零日漏洞利用——这些方法本身没有道德属性。一个人用它们去测试自己公司的防御水平,叫安全评估;用它们去窃取陌生人信用卡信息,叫犯罪。技术是同一把刀,切菜还是捅人,取决于握刀的手。
但"授权"这个东西,也没那么干净。2019年,两个安全研究员在Twitter上发现了一个漏洞:通过某个API接口,可以匹配到用户的手机号码。他们报告给了Twitter,Twitter修了。然后他们又发现,同样的漏洞在Facebook、Instagram上也存在。这次他们犹豫了——因为按照很多平台的漏洞赏金规则,未经授权测试第三方系统,哪怕出于善意,也可能触犯法律。他们最终没有去测。漏洞可能至今还在。
这就引出一个尴尬的事实:白帽的"白",很多时候靠的是法律文书和合同条款来背书,而不是行为本身的纯洁性。没有那份授权书,同样的操作就是犯罪。2013年,安全研究员Barnaby Jack 在黑客大会上演示了如何远程攻击心脏起搏器,能让它释放致命电击。他是在实验室里做的,用的是自己买的设备。如果他在医院里对着一个真实病人做同样的事,哪怕是为了证明设备不安全,也立刻变成刑事犯罪。他第二年去世了,那个漏洞的修复进展缓慢。
黑帽那边也不是铁板一块。很多人最初只是好奇,想看看系统里面有什么。有个叫"Dark Dante"的黑客,1990年代入侵了太平洋贝尔的语音邮件系统,只为了偷听明星的八卦。他被抓了,坐了几年牢,出来后成了《连线》杂志的记者。还有更极端的例子:Kevin Poulsen,曾经因为入侵电话线路、赢走电台奖品而被通缉,后来成了SecurityFocus的编辑,再后来去了《连线》,专门报道网络安全。这些人从黑到白的转身,往往不是因为良心发现,而是因为被抓住了,或者发现合法赚钱更容易。
真正让我觉得这个二分法站不住脚的,是漏洞交易市场。一个零日漏洞,卖给厂商的漏洞赏金计划,可能值几千美元;卖给政府机构或者漏洞经纪商,能值几十万甚至上百万。同一个漏洞,同一份利用代码,卖给谁决定了它是"安全研究"还是"网络武器"。Zerodium这样的公司公开高价收购漏洞,只卖给"美国政府及其盟友"。那它算白帽还是黑帽?取决于你怎么定义"盟友",以及你站在哪一边。
所以我现在不太用这两个词了。我倾向于问更具体的问题:谁授权的?影响范围多大?有没有告知受影响的人?有没有给修复留出时间?这些问题的答案,比一顶帽子的颜色更能说明问题。
老周后来接了一个活,帮一家医院测试医疗设备的安全性。他发现输液泵的固件可以被远程修改,改变给药速率。他报告了,厂商花了八个月才发布补丁。那八个月里,他每次看到输液泵都会多看两眼。他说,那段时间他特别理解为什么有人会选择直接把漏洞公开——因为厂商不着急。公开了,他们才会急。但公开也意味着,在黑帽发现之前,所有人都暴露在风险里。
没有完美的选择。只有一连串权衡,和事后才看得清的后果。