第8章 像心脏流血一般的漏洞
陈青峰和赵长安在咖啡馆说完了正事之后,陈青峰便转身离开了。
一路上,他乘坐地铁回到了家里,刚一回到家,一种难以形容的难受的感觉就突然袭来。以至于陈青峰一时不慎跌倒在地。
于是他艰难的在地板上挪动着。
直到慢慢的挪进了卧室,然后他连忙打开抽屉,拿出了几片从帝都回来时医生开给他的镇痛药。
随后直接干咽了下去。
一直过了好一会儿,陈青峰才终于缓过劲儿来。
没事,他饿着肚子慢慢的走到了厨房,给自己煮了一碗清汤挂面。
因为身体极度难受,他吃不下任何的东西。
只有不用咀嚼的挂面,他还勉强吃得下。
就这样,他煮好了面之后端着锅来到了自己熟悉的书房。
随后打开电脑,做起了每天都要做的事情,那就是阅读代码。
作为一名程序员,陈青峰一直喜欢阅读那些知名的开源代码。
而最近这些日子,他一直在研究openSSL。
因为这个项目是全球最知名的加密协议。而且同时它也是一个开源项目。
SSL本来是一个连接协议,但后来使用的人多了,于是便有人想到了加密的手段来阻止黑客进行破坏。
于是openSSL这个项目便诞生了。
现在陈青峰要做的是黑客类型的外挂,如果能够了解一些openSSL的原理。那对于他的外挂事业会很有帮助,最起码他能够知道哪些程序员犯了致命的错误,而自己该如何下手?
陈青峰一边吃着挂面,一边在自己的项目工程文件里阅读着代码。
调试代码是一件繁琐的事情,但这也是程序员和程序员之间的对话。
你可以通过学习别人的程序来提高自己。
并且这个过程只有懂技术的人才会乐在其中。
除此之外,陈青峰还发现了另外一個好处,那就是在调试代码享受乐趣的时候,身体和大脑会暂时忘记关于自己体内癌症的事情。
这对于减缓因为疾病带来的不适有很好的帮助。
“心跳检测!”
这是一个用来做时间同步的功能,虽然很重要,但很多程序之间都有心跳检测,因此这段代码读起来大同小异。
陈青峰慢慢的在代码中间打着节点,他自己构建了一个可以测试openSSL的小型测试程序。
通过断点,可以看清楚到底内存中存储了什么东西?
陈青峰先是按常规的策略,将心跳包发送了过去。
很快他的断点就收到了回应!
这一切都在他的意料之中,不过就在这时,他的手不小心碰到了筷子,筷子在键盘上碰了一下,陈青峰手忙脚乱,一下子又碰到了鼠标点了一下编译按钮,看着漫长的编译程序,他不由的感到一阵头疼。
还好,编译器只是编译他修改部分的代码。
可就在这时,断点又一次被触发了。
陈青峰惊讶的看着这一切。
然后他又回过头来,看着代码里被自己修改的部分。
原本应该发送的一段内容,已经超出了64KB应有的范围,刚才陈青峰不小心在后面多加了一个0。
按理说,这段非法报文发送出去之后,断点是不会被触发的。
可现在它居然被触发了?
这到底是怎么回事?
陈青峰觉得有点奇怪,程序不应该走到这里。
于是他重新试验了一下,又多加了几个断点。
于是程序便开始一步一步的被陈青峰跟随着。
当陈青峰看到一处if判断的时候,他突然发现,这段程序的指针竟然违反常规的跳到了if为真的代码段!
陈青峰惊讶的看着上下这一段程序代码。
他睁大眼睛重复了一遍又一遍。
最终他不由的深吸了一口气。
然后他觉得自己发现了一个难以形容的重大事实。
OpenSSL的程序员居然犯错误了?
一段非法访问的报文居然被认为是正确的。
这也就意味着,自己获取了服务器内部一段不知区域的内存储的消息。
越界访问?
知名的开源加密项目居然会出问题?
全世界那么多程序员,无数双眼睛都盯着的基础程序,居然被自己亲手调出了bug。
这意味着什么?
陈青峰还是有点不敢相信,因为按照常理来说,这根本是不可能的事情。
可是眼下却明明白白的发生了。
于是陈青峰耐着性子,悄悄的打开了某大厂的页面。
OpenSSL协议,现在最常用的,就是这些大厂,尤其是在电商领域更是常见。
现在陈青峰要试验一下。
于是他端起来喝了一口已经凉掉的面汤。然后活动了一下手指,在键盘上迅速的敲击了起来。
他伪造了一段和刚才类似的超出限制的非法报文。
然后怀着颤抖的心情发送给了电商网站的服务器。
紧接着,他就在程序里等待着对方的回应。
几乎不到一秒的时间,他就收到了一段信息。
陈青峰打开一看,脸上顿时露出了一种欣喜之后释然的笑容。
他没有错,OpenSSL的程序员的确犯了一个致命的错误。
它通过超长的报文拿到了服务器内返回的64KB的数据。
而这段数据里甚至还包含着一个陌生人的用户名和密码。
一个用来心跳检测的模块,居然让程序泄露出了内存里的信息。
而重要的数据,被一点一点的从漏洞里渗透出来。仿佛在心脏的主动脉上漏出了一个渗血的出血口,一点一点的流着血。
而陈青峰可以确定,掌握了这个漏洞,起码在这一夜间,全世界所有采用openSSL协议加密的网站,都会在他的面前门洞大开。
这意味着什么?
这意味着上帝突然在刚才那一刻,为他打开了一扇财富的大门。
但是他不确定这个漏洞什么时候会被程序员发现。
不过如果他早动手的话,起码有一点是肯定的,他的治疗费用应该不用发愁了!
陈青峰难以抑制的从桌子前站了起来。
他走到了自家的书柜前,把上面一瓶五粮液直接拿下来。
随后拧开之后,大口的灌进了自己的胃里。
不过平日里不怎么喝酒的陈青峰很快就咳嗽了起来。
然而此刻他却遇到了人生中最开心的时刻。
他从来都没有感觉到像今天这样有成就感。
原来全世界最优秀的程序员,全世界最严谨的开源项目也有犯错误的时候。