Linux之父怒噴谷歌安全工程師為哪般?
上周五,Linux 之父 Linus Torvalds 在內(nèi)核郵件列表上用很犀利的言辭抨擊了 Google Pixel 安全團(tuán)隊(duì)的開(kāi)發(fā)者 Kees Cook,引起了大家廣泛地討論。
事情的起因在于 Google Pixel 安全團(tuán)隊(duì)的開(kāi)發(fā)者 Kees Cook 向 Linus 遞交了加固 usercopy 的 pull request,但是 Linus Torvalds 認(rèn)為這種請(qǐng)求是極其愚蠢的,因?yàn)樗J(rèn)為此類(lèi)的加固觸及到了 Linux 的核心,會(huì)導(dǎo)致內(nèi)核出現(xiàn)混亂。而且他認(rèn)為安全人員的很多行為都是讓人難以接受的,解決安全問(wèn)題的核心在于調(diào)試和修復(fù) bug,而不是應(yīng)該像安全人員那樣靠殺死機(jī)器或終止運(yùn)行來(lái)解決問(wèn)題。
對(duì)此,Rober Graham 對(duì) Linus torvalds 的言論表示贊同,他認(rèn)為我們應(yīng)該關(guān)注郵件的中心思想而不是激烈的言辭,他表示 Linus Torvalds 在郵件中要表達(dá)的意思有兩點(diǎn):
對(duì)內(nèi)核進(jìn)行大的改動(dòng)應(yīng)該在小的迭代步驟中進(jìn)行,而且每一次都應(yīng)該徹底調(diào)試;
次要的安全問(wèn)題不是重大的緊急情況,他們不允許繞過(guò)的規(guī)則比 bug 或功能多。
去年曾經(jīng)有一些安全固化的代碼被添加到內(nèi)核中,以防止一類(lèi)緩沖區(qū)溢出 / 越界的問(wèn)題,此代碼沒(méi)有解決任何特定 0day 的漏洞,但它能預(yù)防一類(lèi)未來(lái)的潛在漏洞,這個(gè)代碼可以說(shuō)是有 bug 的,但是不能說(shuō)它是罪惡的,因?yàn)樗械拇a都會(huì)有 bug。
在 Linus Torvalds 看來(lái),當(dāng)檢測(cè)到溢出 / 越界訪問(wèn)時(shí),代碼將終止用戶(hù)模式進(jìn)程或內(nèi)核,那么可以說(shuō)這個(gè)代碼罪惡的。Linus 認(rèn)為它應(yīng)只產(chǎn)生警告,讓有問(wèn)題的代碼繼續(xù)運(yùn)行。但殺死這些東西將會(huì)使得 bug 變得更加糟糕,它會(huì)導(dǎo)致內(nèi)核的災(zāi)難性故障,如果我們的車(chē)上運(yùn)行著 Linux 的 多個(gè)副本,那么這種災(zāi)難將會(huì)危及我們的生命,而警告雖然會(huì)把這些 bug 顯示出來(lái),但不會(huì)造成災(zāi)難性的后果。在經(jīng)過(guò)僅僅一年之后,當(dāng) bug 得到修復(fù)時(shí),代碼的默認(rèn)行為會(huì)被改變并消除錯(cuò)誤的代碼,從而防止 bug 被利用。
簡(jiǎn)而言之,在內(nèi)核中進(jìn)行大的改變應(yīng)該在小而可管理的步驟中進(jìn)行,固化代碼在 Linux 的 25 年歷史中都沒(méi)有出現(xiàn)過(guò),所以在非緊急的情況下,沒(méi)必要立即進(jìn)行,更不用說(shuō)繞過(guò) Linus 提出的開(kāi)發(fā)流程了。
再者,大多數(shù)的安全人員不是開(kāi)發(fā)人員,他們實(shí)際上并不知道很多事情是如何運(yùn)行的,邊界檢查被他們定義為一種用來(lái)防止緩沖區(qū)溢出的安全功能,但實(shí)際上它是一種調(diào)試功能,開(kāi)發(fā)人員都知道知道這一點(diǎn),但是安全“專(zhuān)家”往往不知道,而做出這些內(nèi)核變化的往往是不懂這一點(diǎn)的安全人員,他們沒(méi)有意識(shí)到內(nèi)核的變化會(huì)在現(xiàn)有的代碼產(chǎn)生大量的 bug,而且殺死錯(cuò)誤代碼也是極其不恰當(dāng)?shù)男袨椤?/p>
由此可見(jiàn),雖然 Linus 的語(yǔ)氣有點(diǎn)不友善,但是他的說(shuō)法是合理的,他是一個(gè)講道理的人,他并沒(méi)有試圖阻止對(duì)內(nèi)核的改變,也并沒(méi)有阻止在安全上的提升,他只是想告訴人們,對(duì)內(nèi)核進(jìn)行大的改動(dòng)需要用傳統(tǒng)的方式,而不是采取一刀切的方法,與功能和 bug 相比,安全的地位并沒(méi)有比他們高。