回覆列表
-
1 # 使用者4590266628612
-
2 # 柚子愛舞蹈
是BUG 吧, 現在騰訊對BUG 封了很多,如果卡BUG 一般就會 出現錯誤程式碼 或者 瞬間掉血死亡, 現在能卡BUG 的就是箱子 可以卡進去,當然也有個別的不能卡,比如說金字塔 右邊房間樓梯角落的箱子 一卡進去就瞬間死亡。... 個人經驗
是BUG 吧, 現在騰訊對BUG 封了很多,如果卡BUG 一般就會 出現錯誤程式碼 或者 瞬間掉血死亡, 現在能卡BUG 的就是箱子 可以卡進去,當然也有個別的不能卡,比如說金字塔 右邊房間樓梯角落的箱子 一卡進去就瞬間死亡。... 個人經驗
1. 人的天性
大多數——當然不是全部——軟體 bug 源於我們自己犯的錯誤。雖然有些是因為軟體編碼工具和編譯器發生了意外,但是大部分的錯誤得歸咎於我們自己。
無論我們受到的 SDL 培訓和安全工具有多麼強大,只要我們還是人,我們就會犯錯。如果你想問為什麼電腦軟體會有這麼多的漏洞,歸根到底是因為,人的天性就是容易犯錯。
也就是說,我們在減少人為錯誤方面做得還不夠。有很多程式設計師因為沒有受到足夠的 SDL 培訓(有的甚至乾脆就沒有培訓),所以根本就沒有安全程式設計的理念。有時候我特別奇怪:有那麼多的程式設計師以寫安全軟體為生,卻居然不懂如何安全地程式設計。別不信,我敢打賭,你正在執行的銀行安全軟體中的 bug 不會比它能提供的保護措施少,搞不好甚至更多。
但是即使是那些經過嚴格訓練的程式設計師還是不可避免出現 bug。舉個例子,前不久有個自鳴得意的傢伙發明的使用 HTML 標記欄位確定顏色的緩衝區在瀏覽器中溢位了。不像以前還要輸入 FFFFFh 之類的東西,駭客甚至可以直接執行顏色域的程式碼,從而導致瀏覽器過度消耗資源、緩衝區溢位。看到沒有,這就是漏洞!而且很少會有人能預料到這種情況。
2. 不斷增加的軟體複雜性
就其本質而言,軟體越複雜,就意味著程式碼行數越多。只要你在程式設計,那麼即使你有多擅長寫程式碼,也一定會有錯誤和 bug 出現。有人曾說,如果你能做到每 50 行程式碼中只出現一個錯誤,那你就已經做得相當好了。大多數程式設計師差不多每隔 5 至 15 行就會犯錯。想象一下,這麼說吧,一般性的 Linux 核心擁有超過 1500 萬行的程式碼,有多少 bug 你自己算吧!
即使沒有編碼錯誤,網際網路時代應用程式的整體互動性也是漏洞被攻擊的途徑。大多數程式設計師不得不和其他 API 協作,儲存和檢索檔案,在多種裝置上正常工作。所有這些過程都會增加被成功擊破的機率。
而要防守的話,則需要寫更多的程式碼,因為得抵禦各種不同的攻擊渠道。這麼說吧,如果有一個只有 30 條組合語言指令的惡意程式,那麼針對相應的防守,你可能至少得寫 50000 條組合語言指令!
3. Fuzzers 也是人寫出來的
新近冒出來的 Fuzzers 軟體主要用於掃描軟體漏洞。Fuzzers——以及其他用於尋找編碼錯誤和漏洞的任何程式——都是人寫出來的,還是這句話,是人就會犯錯誤。例如 Fuzzers 是不會發現顏色屬性的緩衝區溢位這種情況的,這是因為我們在寫 Fuzzers 的時候沒有考慮這一方面。不過當我們意識到這一點並對 Fuzzers 進行更新之後,就能做到去查詢各種類似的緩衝區溢位條件的欄位。簡而言之,我們要 Fuzzers 做什麼,它才會去做什麼。
4. 缺乏對供應商的問責
許多安全專家抱怨,只要我們不能找到證據起訴供應商的軟體缺陷,我們就永遠不會變得更安全。我贊同這一點,增加對供應商的問責有助於降低安全風險,但是同時卻有可能會減緩進度。不過如果軟體公司比現在更能擔當起責任來,那麼我想我們能在手機上、電腦上能自由自在衝浪的感覺會更爽。
但是成功源於功能和速度,而非安全。社會現狀決定了我們必須犧牲一部分安全和保障去換取新鮮感。這不一定是壞事——因為能讓我們成功得更快。但是這樣一來我們就不得不承擔這樣做的後果。不過到目前為止,我們還是心甘情願為了新增更酷的新鮮玩意兒而面對更多的風險。
5. 缺乏對駭客的問責
現實是上面沒有一條能很快解決。但是軟體出現漏洞就其本身而言,真不是什麼大問題。說它脆弱是因為這些軟體在面對惡意攻擊的時候毫無抵擋之力。除非我們能制止駭客的猖獗行徑,否則惡意軟體將會一直困擾著我們。