Linux内核社区是数字军火商、斯拉夫兵工厂甚至NSA的最爱
聲明:為了更好地向讀者輸出更優(yōu)質(zhì)的內(nèi)容,InfoQ將精選來自國內(nèi)外的優(yōu)秀文章,經(jīng)過整理審校后,發(fā)布到網(wǎng)站。本文原文鏈接。本文已由h4rdenedzer0團(tuán)隊(duì)授權(quán)InfoQ中文站轉(zhuǎn)載。歡迎轉(zhuǎn)發(fā),但請(qǐng)保留原作者信息!
\\編者按:Grsecurity/PaX的應(yīng)用十分廣泛,特別是具有高安全性的環(huán)境。Gnu/Linux發(fā)行版里Gentoo提供PaX作為加固選項(xiàng),最近半年Debian社區(qū)發(fā)起的對(duì)抗大規(guī)模監(jiān)控的加固項(xiàng)目Mempo在內(nèi)核中也使用了Grsecurity/PaX。因此說普通的GNU/Linux安全是相對(duì)于Windows而言。不得不說,在這個(gè)一天云計(jì)算、一天霧計(jì)算、今天框計(jì)算、明天網(wǎng)格計(jì)算的年代,作為一個(gè)10多年前的設(shè)計(jì)和實(shí)現(xiàn),PaX的思路的確令人震撼。
\\譯者Shawn the R0ck:Grsecurity/PaX是在OS安全上的一個(gè)開創(chuàng)性的貢獻(xiàn),沒有PaX/Grsecurity的GNU/Linux的安全性只能防御腳本小子,過去的14年里Pax/Grsecurity為Linux內(nèi)核做出了巨大出貢獻(xiàn)的貢獻(xiàn),但到今天Linux內(nèi)核社區(qū)都不愿意承認(rèn),這可能的確是受商業(yè)廠商控制了主流媒體的后果,在后棱鏡時(shí)代,這種現(xiàn)象有極端的陰謀論甚至認(rèn)為NSA也是推手,當(dāng)然這也并非完全沒有道理,畢竟SELinux項(xiàng)目早已成為Five-Eyes國家的標(biāo)配。
\\我嘗試翻譯這篇5年前的訪談是為了讓更多的人了解到歷史,因?yàn)榉从^今天的Linux內(nèi)核社區(qū)對(duì)于安全的態(tài)度相比5年前可能是更糟糕,offset2lib的遠(yuǎn)程利用方式輕松繞過了GNU/Linux廠商們宣稱的完美防御,相信就算是智商只有85的人也能明白“抗爆破”機(jī)制只能抗不到1秒的時(shí)間是在扯淡;-)。即使offset2lib所帶來的風(fēng)險(xiǎn)巨大,Linux內(nèi)核社區(qū)的態(tài)度也是極度傲慢,他們也不認(rèn)為這個(gè)PaX/Grsecurity在2001年就已經(jīng)加固的攻擊平面而他們?cè)?015年還存在有什么問題,而BadiRET漏洞里我們更能清晰的看到SMEP雖然被繞過,但SMAP依然有效,而這兩個(gè)Intel CPU的特性也是源于2007年P(guān)aX/Grsecurity的其中一個(gè)特性UDEREF的啟發(fā)。自從有了OS的攻防歷史,就有了PaX/Grsecurity,如果Linux內(nèi)核社區(qū)繼續(xù)傲慢自大,最終的受害者是企業(yè)用戶和個(gè)人用戶。
\\在Anarchist看來,這樣的Linux內(nèi)核社區(qū)正是數(shù)字軍火商,斯拉夫兵工廠甚至NSA所喜歡的。
\\Slo-Tech:向我們的讀者介紹一下你自己(工作,教育背景以及興趣),也請(qǐng)你解釋一下你的真名是Spender還是Spengler;-)請(qǐng)問Brad是否是任何黑帽組織的成員?
\\\Brad Spengler:Brad Spengler(不是Brad Spender),雖然相似的名字并非偶然,我改了改姓氏作為別名。我畢業(yè)于Bucknell大學(xué),獲得了計(jì)算機(jī)與工程(混雜了計(jì)算機(jī)科學(xué)和電子硬件的課程)學(xué)士學(xué)位和一個(gè)應(yīng)用數(shù)學(xué)的學(xué)士學(xué)位。數(shù)學(xué)/物理學(xué)/經(jīng)濟(jì)學(xué)/哲學(xué)都是我最有興趣的課程。我在學(xué)習(xí)操作系統(tǒng)課程之前就已經(jīng)有4年的學(xué)習(xí)Linux內(nèi)核和編程的經(jīng)歷,所以計(jì)算機(jī)科學(xué)課程并不是那么的有趣。我從來沒有參加過任何黑帽組織。自從高中開始我總是對(duì)創(chuàng)造有趣的事物有興趣。…………………(未翻譯)
\\\Slo-Tech:你能用簡(jiǎn)單描述一下什么是PaX和GRSecurity以及有多少人參與這些項(xiàng)目嗎?
\\\Brad Spengler:PaX是一頭戲劇性的改變了整個(gè)安全的形態(tài)的野獸,而且對(duì)未來安全的影響甚至?xí)唷aX專注于一次性的解決一堆各種類型的漏洞利用,有一些工作還沒有完成,但希望能有所改變,也希望8年后(Shawn:現(xiàn)在已經(jīng)是5年后了,愚蠢的大眾還是寧愿相信商業(yè)廠商和NSA;-))所有人都能明白PaX的前瞻性。PaX完全專注于內(nèi)存的漏洞利用,Grsecurity則增加了主機(jī)層的防御和基于現(xiàn)有的PaX特性進(jìn)行了一系列的改進(jìn),包括抗爆破,ASLR的抗信息泄漏,不允許文件系統(tǒng)級(jí)別的任意代碼執(zhí)行等。Grsecurity包括了很多簡(jiǎn)單的自動(dòng)化特性,比如RBAC系統(tǒng)可以通過學(xué)習(xí)模式(你可以選擇基于進(jìn)程/用戶或者整個(gè)系統(tǒng))來自動(dòng)化創(chuàng)建規(guī)則,這些規(guī)則都是人類可讀的純文本格式(Shawn:SELinux是使用難以審計(jì)的二進(jìn)制的格式),報(bào)錯(cuò)信息有助于根據(jù)攻擊類型來制定相應(yīng)的規(guī)則。
\\PaX項(xiàng)目的參與人數(shù)是未知的!因此PaX Team至少有一個(gè)人:),對(duì)于Grsecurity這邊就我一個(gè)人。偶爾我也收到一些Patch提交(比如來自Zbyniu Krzystolik),贊助者和朋友有時(shí)也會(huì)告訴我他們想要加入一些新功能。
\\\Slo-Tech:只有一些人真正了解PaX Team開發(fā)了一些安全機(jī)制(比如ASLR)后來被用于Linux內(nèi)核里,至少目前來看主要的Linux內(nèi)核社區(qū)開發(fā)者和參與者并不打算承認(rèn)PaX所帶來的貢獻(xiàn),你認(rèn)為這些機(jī)制對(duì)于Linux安全貢獻(xiàn)最大的是什么。
\\\Brad Spengler:好吧,對(duì)我而言很搞笑的是聰明的Ingo Molnar多年前對(duì)于paxtest測(cè)試(包括檢查不同區(qū)域的地址空間是否有能力執(zhí)行任意代碼)非常不爽,因?yàn)榈?組測(cè)試中mprotect用于標(biāo)記一些內(nèi)存為可寫和可執(zhí)行。Ingo稱這個(gè)測(cè)試是“破壞”–mprotect檢測(cè)多少有些不公平(因?yàn)閑xec-shield完全失效了)。往前看幾年你會(huì)發(fā)現(xiàn)SELinux基本上把PaX的MPROTECT加入了它的規(guī)則語言。在Windows的世界里你能找到所有人都在嘗試日等價(jià)于Linux上的mprotect,glibc曾經(jīng)有一個(gè)make_stack_executable()函數(shù)也是ret2libc攻擊的對(duì)象,Windows上也有類似的函數(shù)。PaX team早在很多年前就認(rèn)識(shí)到攻擊者會(huì)找最薄弱的環(huán)節(jié)下手,而這正是今天正在發(fā)生的事情。
\\我不能說哪一個(gè)特性是對(duì)Linux安全貢獻(xiàn)最大,因?yàn)檫@些特性都是疊加式的讓Linux內(nèi)核更安全。同樣,我認(rèn)為下一個(gè)最具革命性的貢獻(xiàn)將同樣來自PaX team。
\\\\\Slo-Tech:看起來Brad和Linux內(nèi)核開發(fā)者的“口水戰(zhàn)”還在繼續(xù)。什么是主要原因?qū)е铝诉@種不愉快的情況?你不認(rèn)為其實(shí)GNU/Linux的終端用戶才是遭受損失的嗎?
\\\Brad Spengler:我從來都沒有發(fā)過一封郵件到LKML(Linux內(nèi)核郵件列表),所以我并沒有參與任何“口水戰(zhàn)”。PaX Team曾經(jīng)發(fā)過郵件到LKML(比如讓Linux內(nèi)核開發(fā)者承認(rèn)他們的不愿意讓外界關(guān)注的不披露漏洞的官方政策和安全漏洞信息模糊化以及Linus為此多次贏得pwnie獎(jiǎng)項(xiàng)的”a bug is bug”的安全哲學(xué))。8個(gè)公開的空指針引用的漏洞利用才被作為提權(quán)威脅來處理,在第一個(gè)公開漏洞利用后幾個(gè)月,mmap_min_addr被引入,但并不懂安全的Linux開發(fā)者開發(fā)的這個(gè)安全機(jī)制導(dǎo)致了至少6個(gè)不同的繞過。Linux內(nèi)核的ASLR有大量的弱點(diǎn)。SSP被攻破了多次最終導(dǎo)致他們強(qiáng)行限制其工作范圍。所有這些破事都來自于一個(gè)商業(yè)源頭:Red Hat——對(duì)于公司重要的是為了賺錢你要說你有X特性(比如反病毒廠商會(huì)宣稱:“我們將會(huì)保護(hù)你不受病毒的侵害。”),至于這個(gè)特性是否有用并不是公司關(guān)心的(但有些人會(huì)去驗(yàn)證廠商的宣傳—安全研究人員或者黑帽)。
\\\Slo-Tech:誰是你尊重的Linux內(nèi)核開發(fā)者?或者說,你不覺得在安全問題上Linux需要重新組織一下關(guān)于處理安全事件和安全開發(fā)的流程(很多回歸測(cè)試代碼)。比如微軟的SDL……你覺得SDL怎么樣?
\\\Brad Spengler:基于有很多公司和個(gè)人用戶使用微軟的產(chǎn)品,我很尊重微軟對(duì)安全的態(tài)度。Windows在大量的二進(jìn)制軟件的生態(tài)系統(tǒng)的基礎(chǔ)上,去實(shí)現(xiàn)安全功能的同時(shí)還要保證應(yīng)用程序的兼容性。這些工程的真實(shí)難度很容易被誤認(rèn)為是簡(jiǎn)單的事情。
\\Linux確實(shí)需要一些集中的領(lǐng)導(dǎo)者或者組織來處理安全。Linux開發(fā)者就算知道他們?cè)谛迯?fù)安全漏洞,但他們也不會(huì)通知任何人(包括廠商)。選擇性的通知廠商特定的安全問題,而不通知小的廠商和GNU/Linux發(fā)行版社區(qū)。Upstream基本上讓廠商難受,每個(gè)廠商都必須去做重復(fù)的勞動(dòng),因?yàn)闆]有標(biāo)準(zhǔn)化流程。Linux內(nèi)核社區(qū)官方的”a bug is just a bug”政策是在傷害所有的GNU/Linux用戶。一些很優(yōu)秀的加固補(bǔ)丁很少被內(nèi)核社區(qū)接受,因?yàn)樗麄冞^度看中安全機(jī)制造成的性能影響。
\\\Slo-Tech:你覺得Linux Torvalds能勝任Linux的安全工作嗎?我的意思是,他是一個(gè)優(yōu)秀的開發(fā)者,但不是一個(gè)安全研究人員。那其他的著名Linux內(nèi)核開發(fā)者呢?他們有相關(guān)的技能嗎?
\\\Brad Spengler:我不認(rèn)為他能,他沒有安全思維,也無法理解安全。我不確定為什么很多人都感覺在安全問題上Linus是否參與很重要。一些開發(fā)者“理解”安全,但通常他們只修復(fù)bug。Upstream通常不關(guān)心系統(tǒng)加固方面的內(nèi)容。
\\\Slo-Tech:Dave Aitel寫了一封名為“需要中心平臺(tái)讓多廠商合作來改善Linux內(nèi)核安全問題”的郵件到他的郵件列表。你同意他的觀點(diǎn)嗎?這是正確的一步嗎?你愿意為這樣的中心平臺(tái)工作嗎?
\\\Brad Spengler:這點(diǎn)上Dave是對(duì)的,但我并沒看到這種事情在發(fā)生。最重要的是Linus對(duì)安全的態(tài)度必須改變才行。只要一天他還是upstream內(nèi)核的看門人,不論他的觀點(diǎn)對(duì)還是錯(cuò)都會(huì)直接影響Linux的安全。同時(shí),PaX Team和我只能繼續(xù)做我們一直在做的事情,改善Linux的安全只有一條路:單干。
\\\\\Slo-Tech:內(nèi)核維護(hù)者悄然無聲的修復(fù)一些內(nèi)核bug是真的嗎?“悄然無聲的修復(fù)”是否意味著不正確的BUG分類和低估安全風(fēng)險(xiǎn)或者其他什么的?
\\\Brad Spengler:是的,他們已經(jīng)承認(rèn)這么干過。如果你回去讀讀LWN上我的文章有一堆這樣的例子。廠商在漏洞分類的問題上也非常糟糕——所有都是DoS。我認(rèn)為這個(gè)事情現(xiàn)在有所改善是因?yàn)樗麄儽黄毓夂褪艿搅斯姷呐u(píng)。部分的問題原因是沒有統(tǒng)一的bug管理造成了對(duì)于同一個(gè)bug有不同的解釋。通常不同的廠商的bug分析也不一樣,而現(xiàn)在有一些廠商發(fā)的安全公告并不是安全漏洞(比如NOMMU是用于嵌入式系統(tǒng),由于用戶空間和內(nèi)核空間沒有隔離所以根本沒有安全的設(shè)計(jì),但至少有2個(gè)CVE是有關(guān)這種系統(tǒng)的BUG)。這些事情可能會(huì)促使商業(yè)公司更愿意招聘軟件開發(fā)人員而不是安全人員來完成安全有關(guān)的工作。在每天都會(huì)報(bào)無數(shù)漏洞的年代,集中處理平臺(tái)和管理流程是能減輕很多工作量的。
\\\Slo-Tech:這是個(gè)惡心的問題,所以你不愿意的話你可以不回答。你愿意為微軟(像Crispin Cowan)或者Red Hat工作嗎?
\\\Brad Spengler:在我大學(xué)的最后一年微軟曾經(jīng)邀請(qǐng)我去面試,但我拒絕了,因?yàn)镠R在弄丟了我的簡(jiǎn)歷1年后他們才想起我,而我那時(shí)已經(jīng)失去去那里工作的興趣。為Red Hat工作?我確定你知道答案的;)
\\\Slo-Tech:眾所周知你使用Windows Vista作為你的主要操作系統(tǒng)。這對(duì)于一個(gè)Linux內(nèi)核安全研究者很奇怪。你為什么會(huì)這樣選擇呢?你嘗試去找過Windows的bug嗎?
\\\Brad Spengler:事實(shí)上我使用的是Windows 7–Cheddar Bay的視頻里應(yīng)該是RC版。因?yàn)長inux對(duì)我而言只是用來測(cè)試和改進(jìn)Grsecurity的。在高中和大學(xué)的時(shí)候,我曾經(jīng)使用GNU/Linux作為我的主要桌面系統(tǒng),但現(xiàn)在GNU/Linux都是在虛擬機(jī)里。以前的Linux的內(nèi)核和用戶態(tài)都簡(jiǎn)單很多。你知道那些眾所周知的配置文件,如果你修改他們,一些“智能”的進(jìn)程會(huì)背著你把配置改回去,你不會(huì)因?yàn)橄胍煌哪J(rèn)配置而一定要修改SELinux規(guī)則。那更多的是感受到GNU/Linux的自由(Shawn:個(gè)人認(rèn)為Brad說的問題應(yīng)該是針對(duì)RedHat/CentOS/Fedora的,至少目前來看Debian和Gentoo是享有高度的自由),而自由的缺失我認(rèn)為是因?yàn)樯虡I(yè)化造成的。而游戲是我用Windows的主要原因。如果Pidgin通知我有一個(gè)新版本更新,我只是下載一個(gè)去執(zhí)行,而不需要強(qiáng)制的更新另外100+個(gè)包,那樣會(huì)增加系統(tǒng)的風(fēng)險(xiǎn)的。
\\\Slo-Tech:為什么你會(huì)公布漏洞利用而不是把它們賣給像iDefense、ZDI、Immunity這樣的公司……類似像本地root提權(quán)漏洞像cheddarbay、ingom0wnar、wundebar的市場(chǎng)價(jià)值是什么?
\\\Brad Spengler:我不確定他們是否關(guān)心Linux的本地提權(quán)漏洞——首先,這些漏洞已經(jīng)在某些版本的Linux內(nèi)核開發(fā)分支上被修復(fù)了。其次這些漏洞利用太容易編寫了。所以這些漏洞利用是用于提醒大家安全的重要性的(以前的一堆討論無法改善Linux內(nèi)核社區(qū)的看法,但那8個(gè)漏洞利用做到了)。第1個(gè)成果是幫助到了人們?nèi)ダ斫怙L(fēng)險(xiǎn)的等級(jí)(有一些人聯(lián)系我說那些漏洞利用幫助他們說服了他們的老板更關(guān)注安全),因?yàn)長inux內(nèi)核公開的漏洞利用并不是那么多,不是因?yàn)槁┒床淮嬖?#xff0c;而是因?yàn)楹诿眰兌加糜谧约旱哪康牧恕5诙€(gè)成果是讓所有主要的的GNU/Linux廠商和發(fā)行版都把空指針引用的攻擊平面給默認(rèn)防御住了,SELinux的漏洞也修復(fù)了,廠商更注重關(guān)于mmap_min_addr的問題。用戶也注意到了這個(gè)特性和開啟它的重要性(Shawn:mmap_min_addr成為今天的標(biāo)準(zhǔn)安全基線),很多人也都升級(jí)了Linux內(nèi)核。這些都是好事。我想整件事情唯一的“創(chuàng)新”應(yīng)該是Enlightenment框架了(下一個(gè)問題跟這個(gè)有關(guān))。
\\\Slo-Tech:最近你發(fā)布的針對(duì)Linux內(nèi)核漏洞利用的框架叫Englightenment。你是否有計(jì)劃繼續(xù)改進(jìn)這個(gè)框架并且希望它成為像Metasploit一樣?
\\\Brad Spengler:我一直在改進(jìn)這個(gè)框架因?yàn)樗屛乙怨粽叩姆绞絹硭伎?#xff0c;這會(huì)幫助我有多種思路去考慮針對(duì)特定攻擊的防御機(jī)制(我最近在Grsecurity里實(shí)現(xiàn)的加固就是來源于此)。我也想讓她變得盡量通用:她已經(jīng)支持x86和x86_64平臺(tái)的所有2.4和2.6內(nèi)核上關(guān)閉所有LSM模塊。我最近也增加了Xen特性的支持,這個(gè)特性會(huì)更恰當(dāng)?shù)淖宧yppercall去修改內(nèi)核代碼。我也在考慮關(guān)于namespace/container(Shawn:就是lxc,以及后來Docker用的底層模塊),這些都在TODO list上。Enlightenment會(huì)僅僅針對(duì)Linux內(nèi)核漏洞利用。
\\\\\Slo-Tech:大多數(shù)人都不把本地漏洞利用提權(quán)當(dāng)成真正的威脅。我知道SuSE的Sebastian Krahmer寫過相關(guān)的觀點(diǎn)而我也同意他的觀點(diǎn),但事實(shí)上現(xiàn)在已經(jīng)沒有任何公開的遠(yuǎn)程漏洞利用了(Sgrakkyu是最后一名勇士),遠(yuǎn)程漏洞利用標(biāo)準(zhǔn)Linux內(nèi)核真的已經(jīng)是不可能還是在不遠(yuǎn)的將來會(huì)有所改變?
\\\Brad Spengler:遠(yuǎn)程內(nèi)核漏洞利用非常困難,特別是針對(duì)運(yùn)行PaX的內(nèi)核和定制過的內(nèi)核。只要讀讀sgrakkyu/twiz在Phrack上的論文《Attacking the core:Kernel exploitation notes》(Shawn:發(fā)表于Phrack Issue 64,2007年)就知道所涉及的復(fù)雜性。他們都是熱衷于挑戰(zhàn)高難度的人,而其他大部分人會(huì)選擇更簡(jiǎn)單的方式,比如從Web進(jìn)入然后使用本地內(nèi)核提權(quán)漏洞的方式。如果系統(tǒng)運(yùn)行了最新的PaX,漏洞利用會(huì)變得極度困難,而不是更簡(jiǎn)單。我仍然能看到現(xiàn)有的威脅會(huì)在可預(yù)見的未來存在下去,因?yàn)镚NU/Linux發(fā)行版都把時(shí)間浪費(fèi)在了不太可能出現(xiàn)嚴(yán)重bug的SUID程序上,而新的內(nèi)核提權(quán)漏洞幾乎每個(gè)禮拜都在曝光。還有就是Web開發(fā)人員(那些編寫的第三方代碼運(yùn)行在公共的服務(wù)器上,讓遠(yuǎn)程用戶能進(jìn)入“非信任的本地用戶”)并沒有變得更聰明。
\\\Slo-Tech:GNU/Linux能依然被認(rèn)為是安全的操作系統(tǒng)嗎?你覺得政府或者其他對(duì)安全性要求高的基礎(chǔ)架構(gòu)應(yīng)該使用GNU/Linux嗎?
\\\Brad Spengler:我希望在高安全要求的環(huán)境中有其他的系統(tǒng)可以使用(Shawn:經(jīng)過加固的GNU/Linux或者Quebes OS/Mirage OS?)。作為建議,一個(gè)安全的操作系統(tǒng)可能會(huì)犯下非常不安全愚蠢的錯(cuò)誤,而一個(gè)不安全的操作系統(tǒng)可以變得安全如果不跑任何業(yè)務(wù)的話。
\\\Slo-Tech:你有任何私人的0-day漏洞利用在你的硬盤上嗎;)
\\\Brad Spengler:有的,ext4_own.tgz,它小于1000bytes。
\\\感謝Brad Spengler的訪談。
\\閱讀原文:《Brad Spengler (PaX Team/grsecurity) interview》
\\更多參考
\1、PaX的技術(shù)考古之旅:英文版、中文版
2、針對(duì)64位Linux內(nèi)核的ASLR防護(hù)的繞過1、2
\\感謝魏星對(duì)本文的審校。
\\給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號(hào):InfoQChina)關(guān)注我們,并與我們的編輯和其他讀者朋友交流(歡迎加入InfoQ讀者交流群)。
總結(jié)
以上是生活随笔為你收集整理的Linux内核社区是数字军火商、斯拉夫兵工厂甚至NSA的最爱的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MRI炎症和结构损伤指标对TNF拮抗剂治
- 下一篇: JSONProxy - 获取跨域json