第8章 像心臟流血一般的漏洞
一路上,他乘坐地鐵回到了家裏,剛一回到家,一種難以形容的難受的感覺就突然襲來。以至於陳青峯一時不慎跌倒在地。
於是他艱難的在地板上挪動着。
直到慢慢的挪進了臥室,然後他連忙打開抽屜,拿出了幾片從帝都回來時醫生開給他的鎮痛藥。
隨後直接乾嚥了下去。
一直過了好一會兒,陳青峯才終於緩過勁兒來。
沒事,他餓着肚子慢慢的走到了廚房,給自己煮了一碗清湯掛麪。
因爲身體極度難受,他喫不下任何的東西。
只有不用咀嚼的掛麪,他還勉強喫得下。
就這樣,他煮好了面之後端着鍋來到了自己熟悉的書房。
隨後打開電腦,做起了每天都要做的事情,那就是閱讀代碼。
作爲一名程序員,陳青峯一直喜歡閱讀那些知名的開源代碼。
而最近這些日子,他一直在研究openssl。
因爲這個項目是全球最知名的加密協議。而且同時它也是一個開源項目。
ssl本來是一個連接協議,但後來使用的人多了,於是便有人想到了加密的手段來阻止黑客進行破壞。
於是openssl這個項目便誕生了。
現在陳青峯要做的是黑客類型的外掛,如果能夠了解一些openssl的原理。那對於他的外掛事業會很有幫助,最起碼他能夠知道哪些程序員犯了致命的錯誤,而自己該如何下手?
陳青峯一邊喫着掛麪,一邊在自己的項目工程文件裏閱讀着代碼。
調試代碼是一件繁瑣的事情,但這也是程序員和程序員之間的對話。
你可以通過學習別人的程序來提高自己。
並且這個過程只有懂技術的人才會樂在其中。
除此之外,陳青峯還發現了另外一個好處,那就是在調試代碼享受樂趣的時候,身體和大腦會暫時忘記關於自己體內癌症的事情。
這對於減緩因爲疾病帶來的不適有很好的幫助。
“心跳檢測!”
這是一個用來做時間同步的功能,雖然很重要,但很多程序之間都有心跳檢測,因此這段代碼讀起來大同小異。
陳青峯慢慢的在代碼中間打着節點,他自己構建了一個可以測試openssl的小型測試程序。
通過斷點,可以看清楚到底內存中存儲了什麼東西?
陳青峯先是按常規的策略,將心跳包發送了過去。
很快他的斷點就收到了迴應!
這一切都在他的意料之中,不過就在這時,他的手不小心碰到了筷子,筷子在鍵盤上碰了一下,陳青峯手忙腳亂,一下子又碰到了鼠標點了一下編譯按鈕,看着漫長的編譯程序,他不由的感到一陣頭疼。
還好,編譯器只是編譯他修改部分的代碼。
可就在這時,斷點又一次被觸發了。
陳青峯驚訝的看着這一切。
然後他又回過頭來,看着代碼裏被自己修改的部分。
原本應該發送的一段內容,已經超出了64kb應有的範圍,剛纔陳青峯不小心在後面多加了一個0。
按理說,這段非法報文發送出去之後,斷點是不會被觸發的。
可現在它居然被觸發了?
這到底是怎麼回事?
陳青峯覺得有點奇怪,程序不應該走到這裏。
於是他重新試驗了一下,又多加了幾個斷點。
於是程序便開始一步一步的被陳青峯跟隨着。
當陳青峯看到一處if判斷的時候,他突然發現,這段程序的指針竟然違反常規的跳到了if爲真的代碼段!
陳青峯驚訝的看着上下這一段程序代碼。
他睜大眼睛重複了一遍又一遍。
最終他不由的深吸了一口氣。
然後他覺得自己發現了一個難以形容的重大事實。
openssl的程序員居然犯錯誤了?
一段非法訪問的報文居然被認爲是正確的。
這也就意味着,自己獲取了服務器內部一段不知區域的內存儲的消息。
越界訪問?
知名的開源加密項目居然會出問題?
全世界那麼多程序員,無數雙眼睛都盯着的基礎程序,居然被自己親手調出了bug。
這意味着什麼?
陳青峯還是有點不敢相信,因爲按照常理來說,這根本是不可能的事情。
可是眼下卻明明白白的發生了。
於是陳青峯耐着性子,悄悄的打開了某大廠的頁面。
openssl協議,現在最常用的,就是這些大廠,尤其是在電商領域更是常見。
現在陳青峯要試驗一下。
於是他端起來喝了一口已經涼掉的麪湯。然後活動了一下手指,在鍵盤上迅速的敲擊了起來。
他僞造了一段和剛纔類似的超出限制的非法報文。
然後懷着顫抖的心情發送給了電商網站的服務器。
緊接着,他就在程序裏等待着對方的迴應。
幾乎不到一秒的時間,他就收到了一段信息。
陳青峯打開一看,臉上頓時露出了一種欣喜之後釋然的笑容。
他沒有錯,openssl的程序員的確犯了一個致命的錯誤。
它通過超長的報文拿到了服務器內返回的64kb的數據。
而這段數據裏甚至還包含着一個陌生人的用戶名和密碼。
一個用來心跳檢測的模塊,居然讓程序泄露出了內存裏的信息。
而重要的數據,被一點一點的從漏洞裏滲透出來。彷彿在心臟的主動脈上漏出了一個滲血的出血口,一點一點的流着血。
而陳青峯可以確定,掌握了這個漏洞,起碼在這一夜間,全世界所有采用openssl協議加密的網站,都會在他的面前門洞大開。
這意味着什麼?
這意味着上帝突然在剛纔那一刻,爲他打開了一扇財富的大門。
但是他不確定這個漏洞什麼時候會被程序員發現。
不過如果他早動手的話,起碼有一點是肯定的,他的治療費用應該不用發愁了!
陳青峯難以抑制的從桌子前站了起來。
他走到了自家的書櫃前,把上面一瓶五糧液直接拿下來。
隨後擰開之後,大口的灌進了自己的胃裏。
不過平日裏不怎麼喝酒的陳青峯很快就咳嗽了起來。
然而此刻他卻遇到了人生中最開心的時刻。
他從來都沒有感覺到像今天這樣有成就感。
原來全世界最優秀的程序員,全世界最嚴謹的開源項目也有犯錯誤的時候。
。