遺憾的是,老謀深算的黑客可以在數(shù)據(jù)經(jīng)過(guò)網(wǎng)絡(luò)時(shí),通過(guò)篡改數(shù)據(jù)來(lái)迫使兩臺(tái)新客戶機(jī)都認(rèn)為對(duì)方是舊客戶機(jī)。更糟的是,在有了支持完全(雙向)向后兼容性的同時(shí)仍無(wú)法消除該問(wèn)題。
對(duì)這一問(wèn)題的一種較好解決方案是從開(kāi)始就采用強(qiáng)制升級(jí)方案進(jìn)行設(shè)計(jì);使客戶機(jī)檢測(cè)到服務(wù)器不再支持它。如果客戶機(jī)可以安全地檢索到補(bǔ)丁,它就升級(jí)。否則,它告訴用戶他們必須手工獲得一個(gè)新的副本。很遺憾,重要的是從一開(kāi)始就應(yīng)準(zhǔn)備使用這一解決方案,除非您不在乎得罪您的早期用戶。
遠(yuǎn)程方法調(diào)用(Remote Method invocation (RMI))的大多數(shù)實(shí)現(xiàn)都有類似的問(wèn)題。當(dāng)客戶機(jī)和服務(wù)器想通過(guò) RMI 通信,但服務(wù)器想使用 SSL 或一些其它加密協(xié)議時(shí),客戶機(jī)可能不支持服務(wù)器想用的協(xié)議。若是這樣,客戶機(jī)通常會(huì)在運(yùn)行時(shí)從服務(wù)器下載適當(dāng)?shù)奶捉幼謱?shí)現(xiàn)。這形成了一個(gè)大的安全漏洞,因?yàn)橄螺d加密接口時(shí),還沒(méi)有對(duì)服務(wù)器進(jìn)行認(rèn)證。攻擊者可以假裝成服務(wù)器,在每臺(tái)客戶機(jī)上安裝他自己的套接字實(shí)現(xiàn),即使是在客戶機(jī)已經(jīng)安裝了正確的 SSL 類的情況下。問(wèn)題是:如果客戶機(jī)未能建立與缺省庫(kù)的安全連接(故障),它將使用一個(gè)不可信實(shí)體給它的任何協(xié)議建立連接,因此也就擴(kuò)展了信任范圍。
原則 4:最小特權(quán)
最小特權(quán)原則規(guī)定:只授予執(zhí)行操作所必需的最少訪問(wèn)權(quán),并且對(duì)于該訪問(wèn)權(quán)只準(zhǔn)許使用所需的最少時(shí)間。
當(dāng)您給出了對(duì)系統(tǒng)某些部分的訪問(wèn)權(quán)時(shí),一般會(huì)出現(xiàn)濫用與那個(gè)訪問(wèn)權(quán)相關(guān)的特權(quán)的風(fēng)險(xiǎn)。例如,我們假設(shè)您出去度假并把您家的鑰匙給了您的朋友,好讓他來(lái)喂養(yǎng)您的寵物、收集郵件等等。盡管您可能信任那位朋友,但總是存在這樣的可能:您的朋友未經(jīng)您同意就在您的房子里開(kāi)派對(duì)或發(fā)生其它您不喜歡的事情。
不管您是否信任您的朋友,一般不必冒險(xiǎn)給予其必要的訪問(wèn)權(quán)以外的權(quán)利。例如,如果您沒(méi)養(yǎng)寵物,只需要一位朋友偶爾收取您的郵件,那么您應(yīng)當(dāng)只給他郵箱鑰匙。即使您的朋友可能找到濫用那個(gè)特權(quán)的好方法,但至少您不必?fù)?dān)心出現(xiàn)其它濫用的可能性。如果您不必要地給出了房門(mén)鑰匙,那么所有一切都可能發(fā)生。
同樣,如果您在度假時(shí)確實(shí)雇傭了一位房子看管人,那么您不可能在沒(méi)有度假時(shí)還讓他保留您的鑰匙。如果您這樣做了,那么您使自己陷入額外的風(fēng)險(xiǎn)之中。只要當(dāng)您的房門(mén)鑰匙不受您的控制,就存在鑰匙被復(fù)制的風(fēng)險(xiǎn)。如果有一把鑰匙不受您的控制,而且您不在家,那么就存在有人使用鑰匙進(jìn)入您房子的風(fēng)險(xiǎn)。當(dāng)有人拿了您的鑰匙,而您又沒(méi)有留意他們,那么任何這樣的一段時(shí)間都會(huì)構(gòu)成一個(gè)時(shí)間漏洞,在此段時(shí)間內(nèi)您就很容易受到攻擊。為了將您的風(fēng)險(xiǎn)降到最低,您要使這段易受攻擊的時(shí)間漏洞盡可能的短。
現(xiàn)實(shí)生活中的另一個(gè)好的示例是美國(guó)政府的忠誠(chéng)調(diào)查系統(tǒng) ―“需要知道”政策。即使您有權(quán)查看任何機(jī)密文檔,您仍不能看到您知道其存在的 任何機(jī)密文檔。如果可以的話,就很容易濫用該忠誠(chéng)調(diào)查級(jí)別。實(shí)際上,人們只被允許訪問(wèn)與那些交給他們的任務(wù)相關(guān)的文檔。
UNIX 系統(tǒng)中出現(xiàn)過(guò)一些違反最小特權(quán)原則的最著名情況。例如,在 UNIX 系統(tǒng)上,您一般需要 root 特權(quán)才能在小于 1024 的端口號(hào)上運(yùn)行服務(wù)。所以,要在端口 25(傳統(tǒng)的 SMTP 端口)上運(yùn)行郵件服務(wù)器,程序需要 root 用戶的特權(quán)。不過(guò),一旦程序在端口 25 上運(yùn)行了,就沒(méi)有強(qiáng)制性要求再對(duì)它使用 root 特權(quán)了。具有安全性意識(shí)的程序會(huì)放棄 root 特權(quán)并讓操作系統(tǒng)知道它不應(yīng)再需要那些特權(quán)(至少在程序下一次運(yùn)行之前)。某些電子郵件服務(wù)器中存在的一個(gè)大問(wèn)題是它們?cè)讷@取郵件端口之后沒(méi)有放棄它們的 root 權(quán)限(Sendmail 是個(gè)經(jīng)典示例)。因此,如果有人找到某種方法來(lái)欺騙這樣一個(gè)郵件服務(wù)器去完成某些惡意任務(wù)時(shí),它會(huì)成功。例如,如果一位懷有惡意的攻擊者要在 Sendmail 中找到合適的棧溢出,則那個(gè)溢出可以用來(lái)欺騙程序去運(yùn)行任意代碼。因?yàn)?Sendmail 在 root 權(quán)限之下運(yùn)行,所以攻擊者進(jìn)行的任何有效嘗試都會(huì)成功。
另一種常見(jiàn)情況是:一位程序員可能希望訪問(wèn)某種數(shù)據(jù)對(duì)象,但只需要從該對(duì)象上進(jìn)行讀。不過(guò),不管出于什么原因,通常該程序員實(shí)際需要的不僅是必需的特權(quán)。通常,該程序員是在試圖使編程更容易一些。例如,他可能在想,“有一天,我可能需要寫(xiě)這個(gè)對(duì)象,而我又討厭回過(guò)頭來(lái)更改這個(gè)請(qǐng)求。”
不安全的缺省值在這里可能還會(huì)導(dǎo)致破壞。例如,在 Windosw API 中有幾個(gè)用于訪問(wèn)對(duì)象的調(diào)用,如果您將“0”作為參數(shù)傳遞,那么這些調(diào)用授予所有的訪問(wèn)。為了更有限制地進(jìn)行訪問(wèn),您需要傳遞一串標(biāo)志(進(jìn)行“OR”操作)。只要缺省值有效,許多程序員就會(huì)堅(jiān)持只使用它,因?yàn)槟菢幼鲎詈?jiǎn)單。
對(duì)于受限環(huán)境中運(yùn)行的產(chǎn)品的安全性政策,這個(gè)問(wèn)題開(kāi)始成為其中的常見(jiàn)問(wèn)題。例如,有些供應(yīng)商提供作為 Java applet 運(yùn)行的應(yīng)用程序。applet 構(gòu)成移動(dòng)代碼,Web 瀏覽器會(huì)對(duì)此代碼存有戒心。這樣的代碼運(yùn)行在沙箱中,applet 的行為根據(jù)用戶同意的安全性政策受到限制。在這里供應(yīng)商幾乎不會(huì)實(shí)踐最小特權(quán)原則,因?yàn)樗麄兡欠矫嬉ㄌ嗟木?。要?shí)現(xiàn)大體意思為“讓供應(yīng)商的代碼完成所有的任務(wù)”的策略相對(duì)要容易得多。人們通常采用供應(yīng)商提供的安全性策略,可能是因?yàn)樗麄冃湃喂?yīng)商,或者可能因?yàn)橐_定什么樣的安全性策略能最佳地使必須給予供應(yīng)商應(yīng)用程序的特權(quán)最小化,實(shí)在是一場(chǎng)大爭(zhēng)論。
原則 5:分隔
果您的訪問(wèn)權(quán)結(jié)構(gòu)不是“完全訪問(wèn)或根本不準(zhǔn)訪問(wèn)”,那么最小特權(quán)原則會(huì)非常有效。讓我們假設(shè)您在度假,而你需要一位寵物看管人。您希望看管人只能進(jìn)出您的車庫(kù)(您不在時(shí)將寵物留在那里)但是如果您的車庫(kù)沒(méi)有一把單獨(dú)的鎖,那么您別無(wú)選擇而只能讓看管人進(jìn)出整幢房子。
分隔背后的基本思想是如果我們將系統(tǒng)分成盡可能多的獨(dú)立單元,那么我們可以將對(duì)系統(tǒng)可能造成損害的量降到最低。當(dāng)將潛水艇構(gòu)造成擁有許多不同的船艙,每個(gè)船艙都是獨(dú)立密封,就應(yīng)用了同樣原則;如果船體裂開(kāi)了一個(gè)口子而導(dǎo)致一個(gè)船艙中充滿了水,其它船艙不受影響。船只的其余部分可以保持其完整性,人們就可以逃往潛水艇未進(jìn)水的部分而幸免于難。
分隔原則的另一個(gè)常見(jiàn)示例是監(jiān)獄,那里大批罪犯集中在一起的能力降到了最低。囚犯?jìng)儾皇蔷幼≡跔I(yíng)房中,而是在單人或雙人牢房里。即使他們聚集在一起 ― 假定,在食堂里 ― 也可以加強(qiáng)其它安全性措施來(lái)協(xié)助控制人員大量增加帶來(lái)的風(fēng)險(xiǎn)。
在計(jì)算機(jī)世界里,要舉出糟糕分隔的示例比找出合理分隔容易得多。怎樣才能不分隔的經(jīng)典示例是標(biāo)準(zhǔn) UNIX 特權(quán)模型,其中安全性是關(guān)鍵的操作是以“完全訪問(wèn)或根本不準(zhǔn)訪問(wèn)”為基礎(chǔ)的。如果您擁有 root 特權(quán),那么您基本上可以執(zhí)行您想要的任何操作。如果您沒(méi)有 root 訪問(wèn)權(quán),那么就會(huì)受到限制。例如,您在沒(méi)有 root 訪問(wèn)權(quán)時(shí)不能綁定到 1024 以下的端口。同樣,您不能直接訪問(wèn)許多操作系統(tǒng)資源 ― 例如,您必須通過(guò)一個(gè)設(shè)備驅(qū)動(dòng)程序?qū)懘疟P(pán);您不能直接處理它。
通常,如果攻擊者利用了您代碼中的緩沖區(qū)溢出,那人就可以對(duì)磁盤(pán)進(jìn)行原始寫(xiě)并胡亂修改內(nèi)核所在內(nèi)存中的任何數(shù)據(jù)。沒(méi)有保護(hù)機(jī)制能阻止他這樣做。因此,您不能直接支持您本地磁盤(pán)上永遠(yuǎn)不能被擦去的日志文件,這意味著直到攻擊者闖入時(shí),您才不能保持精確的審計(jì)信息。不管驅(qū)動(dòng)程序?qū)Φ讓釉O(shè)備的訪問(wèn)協(xié)調(diào)得多么好,攻擊者總能夠避開(kāi)您安裝的任何驅(qū)動(dòng)程序。
在大多數(shù)平臺(tái)上,您不能只保護(hù)操作系統(tǒng)的一部分而不管其它部分。如果一部分不安全,那么整個(gè)系統(tǒng)都不安全。有幾個(gè)操作系統(tǒng)(諸如 Trusted Solaris)確實(shí)做了分隔。在這樣的情況中,操作系統(tǒng)功能被分解成一組角色。角色映射到系統(tǒng)中需要提供特殊功能的實(shí)體上。一個(gè)角色可能是 LogWriter 角色,它會(huì)映射到需要保存安全日志的任何客戶機(jī)上。這個(gè)角色與一組特權(quán)相關(guān)聯(lián)。例如,LogWriter 擁有附加到它自己的日志文件的權(quán)限,但決不可以從任何日志文件上進(jìn)行擦除??赡苤挥幸粋€(gè)特殊的實(shí)用程序獲得對(duì) LogManager 角色的訪問(wèn),它就擁有對(duì)所有日志的完全訪問(wèn)權(quán)。標(biāo)準(zhǔn)程序沒(méi)有對(duì)這個(gè)角色的訪問(wèn)權(quán)。即使您破解了一個(gè)程序并在操作系統(tǒng)終止這個(gè)程序,您也不能胡亂修改日志文件,除非您碰巧還破解了日志管理程序。這種“可信的”操作系統(tǒng)并不是非常普遍,很大一部分是因?yàn)檫@種功能實(shí)現(xiàn)起來(lái)很困難。象在操作系統(tǒng)內(nèi)部處理內(nèi)存保護(hù)這樣的問(wèn)題給我們提出了挑戰(zhàn),這些挑戰(zhàn)是有解決方案的,但得出解決的結(jié)果并不容易。
分隔的使用必須適度,許多其它原則也是如此。如果您對(duì)每一個(gè)功能都進(jìn)行分隔,那么您的系統(tǒng)將很難管理。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛(ài)好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書(shū)、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過(guò)深研歷年考試出題規(guī)律與考試大綱,深挖核心知識(shí)與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評(píng)論 查看完整評(píng)論 | |