您现在的位置是:娱乐 >>正文
漏洞
娱乐4人已围观
简介2017年,安全研究员Marcus Hutchins在分析WannaCry勒索病毒时,随手注册了一个域名。这个域名恰好是病毒代码里硬编码的终止开关地址。几小时内,全球十几万台被感染的机器停止了加密行为 ...
2017年,漏洞安全研究员Marcus Hutchins在分析WannaCry勒索病毒时,漏洞随手注册了一个域名。漏洞这个域名恰好是漏洞病毒代码里硬编码的终止开关地址。几小时内,漏洞全球十几万台被感染的漏洞机器停止了加密行为。一个价值数十亿美元的漏洞灾难,被一个成本不到11美元的漏洞域名按下了暂停键。病毒作者写了几千行代码,漏洞却没堵上这一个洞。漏洞
漏洞这东西,漏洞从来不按你预想的漏洞剧本出现。
我做开发那几年,漏洞最怕的漏洞不是代码跑不通。跑不通至少说明你知道哪里有问题。漏洞真正让人后背发凉的是代码跑通了,一切正常,然后某天凌晨三点收到告警短信。你打开日志,发现系统在一种你从未设想过的输入组合下彻底崩溃。
有个同事写过一个用户注册模块。逻辑很清晰:检查用户名是否已存在,不存在就插入数据库。测试环境跑了几百遍都没事。上线第一周,同一个用户名出现了两次。他查了半天,最后发现问题出在并发上——两个请求几乎同时到达,都查到了“用户名不存在”,然后都执行了插入。这个窗口期只有几十毫秒,但够用了。
他补了一句“先查再插”不够,得用数据库的唯一索引来兜底。但那个唯一索引,当初建表的时候他觉得“没必要”。
漏洞的本质不是“我写错了”,而是“我没想到”。写错了好改,没想到的东西,你根本不知道要去改。
1999年,NASA的火星气候轨道器在进入火星大气层时失联。事后调查发现,洛克希德·马丁公司的工程师用英制单位计算推力,NASA的团队用公制单位接收数据。一个单位换算的疏忽,1.25亿美元烧成了火星大气里的一道弧光。两边的工程师都很优秀,各自的计算都没错。问题出在两套系统交接的那个缝隙里。
这种缝隙到处都是。前端以为后端会校验参数,后端以为前端已经校验过了。A服务以为B服务会保证消息顺序,B服务以为A服务会处理乱序。每个人都在自己的地盘上做得滴水不漏,但地盘和地盘之间的那块灰色地带,没人管。
安全圈有句话:你无法证明一个系统没有漏洞,你只能证明你还没找到。这话听着丧气,但它是事实。漏洞不是一个可以被“消灭”的东西,它更像是一种系统属性——只要系统足够复杂,组件之间的交互足够多,缝隙就一定会存在。
那怎么办?承认这件事本身,就是第一步。
我后来养成了一个习惯:每次写完一个功能,不急着提交代码,先花十分钟想一个问题——“如果我要故意搞垮这个功能,我会从哪里下手?”输入一个负数?传一个空数组?在请求发出后立刻取消?把系统时间改到2099年?这十分钟通常比写代码本身更有价值。
还有个更笨但更管用的办法:让别人来看你的代码。不是那种走过场的Code Review,是真正带着恶意去审视。自己看自己的代码,永远带着“我知道它想干什么”的滤镜。换一双眼睛,滤镜就碎了。
WannaCry那个终止开关域名,后来被安全社区称为“杀死开关”。它之所以有效,是因为病毒作者没想到有人会去注册那个域名。这个漏洞不在代码里,在作者的思维盲区里。而思维盲区,是所有人共有的东西。区别只在于,你有没有意识到自己也有。
Tags:
上一篇:跪求渗透百度云资源
下一篇:在语文教学中渗透心理健康教育论文
相关文章
腾讯公司案例分析
娱乐腾讯的底色从来不是社交,而是那台沉默的“流量发动机”。很多人盯着微信和QQ的日活数字,却忽略了真正让腾讯穿越周期的,是它把人际关系变成了一台精密运转的收银机。2023年Q3财报里,游戏收入只占三成,金 ...
【娱乐】
阅读更多kail linux软件
娱乐Kali Linux 里最该被记住的一件事:它默认不给你 root 密码。装完系统第一次登录,你拿到的只是一个普通用户账号,密码是你自己设的那个。想跑 nmap 扫端口?得先 sudo。这不是设计缺陷 ...
【娱乐】
阅读更多拽蒜资源整合解压密码
娱乐《拽蒜资源整合解压密码》这个标题,第一次看到的人多半会愣一下。拽蒜?资源整合?解压密码?三个词凑一块儿,像是某个网盘群里的黑话。事实也确实如此。我在一个搞影视素材的微信群里蹲了三个月,发现“拽蒜”根本 ...
【娱乐】
阅读更多