自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

驚!用 C 語言寫的程序不安全

開發(fā) 后端 開發(fā)工具
編者按:寫程序的安全性與編程語言本身沒有關(guān)系!

[[111580]]

關(guān)于C語言內(nèi)存管理薄弱的問題幾年前我們就討論過。有人試圖反駁,說現(xiàn)代各種操作系統(tǒng)或runtime平臺的進步,對內(nèi)存管理的風(fēng)險提供了各種保護,比如地址空間隨機化,還有各種諸如Valgrind這樣的工具可以發(fā)現(xiàn)內(nèi)存訪問bug,大大削弱危險程度。我十分推薦大家重新閱讀一下那次討論。

我的觀點——當(dāng)時和現(xiàn)在——都是C語言不適合用來寫安全性要求高的程序,任何缺乏內(nèi)存檢查機制的編程語言都不適合。很簡單,就是不適合。它們應(yīng)該僅 限于用來寫一些小的核心系統(tǒng),***是小到可以用一些常規(guī)的方法(被證明的方法)進行檢查,所有其它的,包括全部應(yīng)用邏輯,都應(yīng)該用受控代碼實現(xiàn)(例如 C#,Java或其它的,我沒有偏向)。

心臟出血就是這種缺乏邊界檢查造成的結(jié)果的另一個例子。它無法被Valgrind這樣的工具檢查出,因為它不是普通的被觸發(fā)的動作——它需要是一種惡意的行為或是一種足夠智能的測試協(xié)議才能發(fā)現(xiàn)(很難很難)。

事實上,沒有哪個程序員能夠聰明到可以寫出完全避免心臟出血這 樣的bug的程序。畢竟,程序員的學(xué)習(xí)和編碼關(guān)注的是他們的程序的邏輯。在沒有邊界檢查機制的編程語言里,邏輯可能會走錯路,因為計算機可以訪問和執(zhí)行任 意內(nèi)存內(nèi)容,這些內(nèi)容是和你的程序里的代碼和變量是沒關(guān)系的。所有沒有邊界檢查的編程語言將計算機的多個維度暴露給程序,如果你覺得自己比OpenSSL 開發(fā)團隊強、能很好的處理這種情況,那是自欺欺人。

我們無法在軟件中避免bug的存在,但我們可以堵住這些看起來無窮無盡的bug的源頭。因為它,很早之前我們的互聯(lián)網(wǎng)就遭受了Morris蠕蟲病毒的危害?,F(xiàn)在,2年的時間里,世界70%的互聯(lián)網(wǎng)流量都暴露無疑,代價慘重。如果不堵住這源頭,以后會讓我們損失更多。

英文原文:The Heartbleed Bug

譯文鏈接:http://www.vaikan.com/c-vulnerabilities/

責(zé)任編輯:林師授 來源: 外刊IT評論 編譯
相關(guān)推薦

2009-08-03 16:58:59

C#不安全代碼

2015-07-01 14:48:51

2023-09-07 10:50:22

2021-04-12 10:38:51

CC++谷歌

2023-06-01 19:24:16

2012-04-16 10:12:54

Java線程

2024-01-19 08:42:45

Java線程字符串

2020-11-03 12:32:25

影子物聯(lián)網(wǎng)物聯(lián)網(wǎng)IOT

2021-04-04 23:16:52

安全刷臉銀行

2020-04-22 20:35:02

HashMap線程安全

2014-09-12 17:44:23

2018-01-26 10:49:19

2014-04-09 09:37:29

2020-04-23 10:36:45

容器云安全云計算

2010-08-16 10:01:01

2021-12-08 07:31:40

Linux安全病毒

2009-11-18 10:05:13

2017-02-16 08:50:00

2009-11-12 08:38:34

2019-12-17 14:20:57

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT
點贊
收藏

51CTO技術(shù)棧公眾號