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