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