娱乐

心脏流血漏洞相关内容包括

时间:2010-12-5 17:23:32  作者:焦点   来源:探索  查看:  评论:0
内容摘要:```html 心脏流血漏洞相关内容包括 body { font-family: 'Segoe UI', 'PingFang SC', Roboto, sans-serif; line-he

```html 心脏流血漏洞相关内容包括

心脏流血漏洞相关内容包括

2014年4月7日,一个叫“心脏流血”的流血漏洞漏洞被公开。那天我还在用OpenSSL 1.0.1f的内容服务器上跑着一个内部测试服务,同事在群里甩了个链接,包括说“赶紧打补丁,心脏相关别问为什么”。流血漏洞我打开一看,内容CVE-2014-0160,包括CVSS评分7.5。心脏相关当时没觉得多吓人,流血漏洞直到看见有人用一行Python脚本从服务器内存里捞出了私钥碎片——那感觉就像你发现自家门锁的内容锁芯能被风吹开。

漏洞的包括根子出在OpenSSL的tls1_process_heartbeat函数。TLS心跳扩展本来是心脏相关用来保活的,客户端发个“心跳包”,流血漏洞服务器原样返回。内容问题在于,OpenSSL没检查请求包里的长度字段。攻击者可以谎称自己发了64KB的数据,实际只发1字节,然后服务器就会从内存里多读65535字节返回。内存里有什么?session密钥、用户密码、私钥片段,甚至其他进程的残留数据。就这么简单,没绕弯子。

我后来自己复现过一次:用Kali里的openssl s_client -connect连一个未修补的测试机,发个畸形心跳,返回的十六进制里直接看到了之前登录用户的cookie明文。那一刻我盯着终端,后背有点发凉。

受影响的是OpenSSL 1.0.1到1.0.1f,以及1.0.2-beta。1.0.0和0.9.8系列反而没事——因为心跳扩展是1.0.1才引入的。所以当时互联网上大约17%的HTTPS服务器中招,包括Yahoo、Imgur、Stack Overflow。Stack Overflow的工程师后来写了篇复盘,说他们凌晨四点被叫醒,发现攻击者已经用泄露的私钥尝试伪造证书。那几天我刷Twitter,满屏都是“Heartbleed”的段子,有人把服务器比作漏水的杯子,你问它要一滴水,它给你一整杯。

修复其实不复杂。OpenSSL在1.0.1g里加了个边界检查:if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0;。就这么一行。但麻烦的是善后——所有受影响的服务器都得换私钥、吊销证书、强制用户改密码。CloudFlare当时搞了个“心脏流血挑战”,让你从他们服务器内存里捞私钥,捞到算你赢。结果真有人捞到了,他们后来换了个新私钥,还发了篇技术博客。

我印象最深的是漏洞公开后第三天,一个做运维的朋友打电话给我,说他们公司有台老服务器还跑着CentOS 6.4,OpenSSL没升级。他手动编译了新版本,但重启Nginx时发现证书链不完整,浏览器报错。他折腾到凌晨两点,最后发现是ca-bundle.crt的路径写错了。他说:“这漏洞本身不复杂,复杂的是你永远不知道生产环境里埋了多少雷。”


现在回头看,心脏流血暴露的不只是代码缺陷。它让整个行业意识到,开源基础库的维护者可能只有两三个人,而全世界都在依赖他们。OpenSSL项目当时年预算不到2000美元,漏洞公开后才收到捐款。Linux基金会后来搞了核心基础设施计划,算是亡羊补牢。但你说彻底解决了吗?2021年Log4j又炸了一次,套路一模一样。

所以每次有人问我“心脏流血是什么”,我不会只讲技术细节。我会说:那是一个提醒——你每天敲的apt-get upgrade,背后可能藏着某个凌晨三点还在修边界检查的开发者。而漏洞从来不会消失,它只是换了个名字,等下一个没检查长度字段的函数。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap