第8章 像心脏流血一般的漏洞

陈青峰和赵长安在咖啡馆说完了正事之后,陈青峰便转身离开了。

一路上,他乘坐地铁回到了家里,刚一回到家,一种难以形容的难受的感觉就突然袭来。以至于陈青峰一时不慎跌倒在地。

于是他艰难的在地板上挪动着。

直到慢慢的挪进了卧室,然后他连忙打开抽屉,拿出了几片从帝都回来时医生开给他的镇痛药。

随后直接干咽了下去。

一直过了好一会儿,陈青峰才终于缓过劲儿来。

没事,他饿着肚子慢慢的走到了厨房,给自己煮了一碗清汤挂面。

因为身体极度难受,他吃不下任何的东西。

只有不用咀嚼的挂面,他还勉强吃得下。

就这样,他煮好了面之后端着锅来到了自己熟悉的书房。

随后打开电脑,做起了每天都要做的事情,那就是阅读代码。

作为一名程序员,陈青峰一直喜欢阅读那些知名的开源代码。

而最近这些日子,他一直在研究openSSL。

因为这个项目是全球最知名的加密协议。而且同时它也是一个开源项目。

SSL本来是一个连接协议,但后来使用的人多了,于是便有人想到了加密的手段来阻止黑客进行破坏。

于是openSSL这个项目便诞生了。

现在陈青峰要做的是黑客类型的外挂,如果能够了解一些openSSL的原理。那对于他的外挂事业会很有帮助,最起码他能够知道哪些程序员犯了致命的错误,而自己该如何下手?

陈青峰一边吃着挂面,一边在自己的项目工程文件里阅读着代码。

调试代码是一件繁琐的事情,但这也是程序员和程序员之间的对话。

你可以通过学习别人的程序来提高自己。

并且这个过程只有懂技术的人才会乐在其中。

除此之外,陈青峰还发现了另外一个好处,那就是在调试代码享受乐趣的时候,身体和大脑会暂时忘记关于自己体内癌症的事情。

这对于减缓因为疾病带来的不适有很好的帮助。

“心跳检测!”

这是一个用来做时间同步的功能,虽然很重要,但很多程序之间都有心跳检测,因此这段代码读起来大同小异。

陈青峰慢慢的在代码中间打着节点,他自己构建了一个可以测试open SSL的小型测试程序。

通过断点,可以看清楚到底内存中存储了什么东西?

陈青峰先是按常规的策略,将心跳包发送了过去。

很快他的断点就收到了回应!

这一切都在他的意料之中,不过就在这时,他的手不小心碰到了筷子,筷子在键盘上碰了一下,陈青峰手忙脚乱,一下子又碰到了鼠标点了一下编译按钮,看着漫长的编译程序,他不由的感到一阵头疼。

还好,编译器只是编译他修改部分的代码。

可就在这时,断点又一次被触发了。

陈青峰惊讶的看着这一切。

然后他又回过头来,看着代码里被自己修改的部分。

原本应该发送的一段内容,已经超出了64KB应有的范围,刚才陈青峰不小心在后面多加了一个0。

按理说,这段非法报文发送出去之后,断点是不会被触发的。

可现在它居然被触发了?

这到底是怎么回事?

陈青峰觉得有点奇怪,程序不应该走到这里。

于是他重新试验了一下,又多加了几个断点。

于是程序便开始一步一步的被陈青峰跟随着。

当陈青峰看到一处if判断的时候,他突然发现,这段程序的指针竟然违反常规的跳到了if为真的代码段!

陈青峰惊讶的看着上下这一段程序代码。

他睁大眼睛重复了一遍又一遍。

最终他不由的深吸了一口气。

然后他觉得自己发现了一个难以形容的重大事实。

Open SSL的程序员居然犯错误了?

一段非法访问的报文居然被认为是正确的。

这也就意味着,自己获取了服务器内部一段不知区域的内存储的消息。

越界访问?

知名的开源加密项目居然会出问题?

全世界那么多程序员,无数双眼睛都盯着的基础程序,居然被自己亲手调出了bug。

这意味着什么?

陈青峰还是有点不敢相信,因为按照常理来说,这根本是不可能的事情。

可是眼下却明明白白的发生了。

于是陈青峰耐着性子,悄悄的打开了某大厂的页面。

OpenSSL协议,现在最常用的,就是这些大厂,尤其是在电商领域更是常见。

现在陈青峰要试验一下。

于是他端起来喝了一口已经凉掉的面汤。然后活动了一下手指,在键盘上迅速的敲击了起来。

他伪造了一段和刚才类似的超出限制的非法报文。

然后怀着颤抖的心情发送给了电商网站的服务器。

紧接着,他就在程序里等待着对方的回应。

几乎不到一秒的时间,他就收到了一段信息。

陈青峰打开一看,脸上顿时露出了一种欣喜之后释然的笑容。

他没有错, Open SSL的程序员的确犯了一个致命的错误。

它通过超长的报文拿到了服务器内返回的64KB的数据。

而这段数据里甚至还包含着一个陌生人的用户名和密码。

一个用来心跳检测的模块,居然让程序泄露出了内存里的信息。

而重要的数据,被一点一点的从漏洞里渗透出来。仿佛在心脏的主动脉上漏出了一个渗血的出血口,一点一点的流着血。

而陈青峰可以确定,掌握了这个漏洞,起码在这一夜间,全世界所有采用openSSL协议加密的网站,都会在他的面前门洞大开。

这意味着什么?

这意味着上帝突然在刚才那一刻,为他打开了一扇财富的大门。

但是他不确定这个漏洞什么时候会被程序员发现。

不过如果他早动手的话,起码有一点是肯定的,他的治疗费用应该不用发愁了!

陈青峰难以抑制的从桌子前站了起来。

他走到了自家的书柜前,把上面一瓶五粮液直接拿下来。

随后拧开之后,大口的灌进了自己的胃里。

不过平日里不怎么喝酒的陈青峰很快就咳嗽了起来。

然而此刻他却遇到了人生中最开心的时刻。

他从来都没有感觉到像今天这样有成就感。

原来全世界最优秀的程序员,全世界最严谨的开源项目也有犯错误的时候。