国产精品9999,最新免费在线视频,国产3D黄色视频免费观看的网站,免费播放一区无码专区

歡迎來(lái)到山東捷君信息技術(shù)有限公司!
DETAILS詳情
當(dāng)前位置:首頁(yè) > 幫助中心 > 詳情

如何在軟件開發(fā)中避免出現(xiàn)漏洞

作者:山東捷君         上傳時(shí)間:2020-02-20

隨著數(shù)據(jù)泄露事件的頻繁發(fā)生,創(chuàng)建和維護(hù)安全的軟件產(chǎn)品對(duì)于每一個(gè)組織來(lái)說(shuō),都變得越來(lái)越重要了。盡管并非所有的攻擊都可以被預(yù)期或防范,但是我們至少可以通過(guò)消減軟件的漏洞,來(lái)避免攻擊的暴露面。

在本文中,您將了解一些最為常見的軟件漏洞,以及如何避免它們的方法。此外,您還會(huì)學(xué)習(xí)到如何采用一些通用的優(yōu)秀實(shí)踐,來(lái)確保軟件和數(shù)據(jù)的安全。

常見的軟件漏洞

2019年,MITRE.org的CWE(Common Weakness Enumeration,通用缺陷列表)推出了25項(xiàng)最危險(xiǎn)的軟件錯(cuò)誤列表。盡管攻擊者的手法五花八門,但實(shí)際上卻是萬(wàn)變不離其宗地組合了各種常見的攻擊方式。在此我們將重點(diǎn)討論其中的幾個(gè)常見軟件漏洞。

緩沖區(qū)溢出(Buffer Overflow)

當(dāng)您的程序試圖讀取或?qū)懭氤龇秶木彌_區(qū)時(shí),就會(huì)發(fā)生緩沖區(qū)溢出的錯(cuò)誤。其直接的危害是:可能導(dǎo)致數(shù)據(jù)覆蓋,或是在現(xiàn)有的代碼中附加不該出現(xiàn)的數(shù)據(jù)。因此,緩沖區(qū)溢出可以使得攻擊者通過(guò)執(zhí)行代碼,來(lái)更改程序流,進(jìn)而讀取某種敏感數(shù)據(jù),或造成系統(tǒng)的崩潰。

緩沖區(qū)溢出漏洞的典型示例包括:

接受各種長(zhǎng)度不受限制的輸入允許從無(wú)效的索引處對(duì)數(shù)組進(jìn)行讀取操作緩沖區(qū)溢出漏洞通常潛藏在軟、硬件體系架構(gòu)的設(shè)計(jì)、實(shí)施、以及操作階段。這些漏洞最常見于C、C ++和Assembly程序中。當(dāng)然,它也可能出現(xiàn)在缺乏對(duì)內(nèi)存管理提供支持的任何一種編程語(yǔ)言里。

針對(duì)緩沖區(qū)溢出漏洞的預(yù)防措施

如上文所述,我們應(yīng)當(dāng)盡量選擇諸如:Java或Perl等具有防范,或降低此類漏洞風(fēng)險(xiǎn)機(jī)制的語(yǔ)言。而在C#之類的編程語(yǔ)言中,我們千萬(wàn)不要禁用溢出保護(hù)的選項(xiàng)。即便如此,那些具有“免疫”功能的編程語(yǔ)言,也可能會(huì)在運(yùn)行環(huán)境中的易受攻擊的、原生代碼交互時(shí),產(chǎn)生不可預(yù)期的錯(cuò)誤。

為了防止緩沖區(qū)溢出漏洞被利用,您可以使用諸如Visual Studio或StackGuard之類的編譯器,來(lái)針對(duì)函數(shù)或擴(kuò)展名進(jìn)行輸入的限制。同時(shí),您還可以使用各種工具,在內(nèi)存中隨機(jī)地排列程序的不同組件,以使得地址更難以被識(shí)別與預(yù)測(cè),進(jìn)而使攻擊者難以利用到這些特定的組件。

另外,請(qǐng)創(chuàng)建代碼時(shí)確保正確地分配緩沖區(qū)空間,并使用各種方法和功能來(lái)限制輸入的大小。

不當(dāng)?shù)妮斎腧?yàn)證(Improper Input Validation)

如果我們不能夠在接收端對(duì)用戶的輸入采取驗(yàn)證,或驗(yàn)證不足,那么就會(huì)產(chǎn)生所謂的“輸入驗(yàn)證不當(dāng)”。而不當(dāng)?shù)尿?yàn)證則會(huì)使得攻擊者通過(guò)執(zhí)行惡意代碼,來(lái)更改程序流,訪問(wèn)敏感數(shù)據(jù),以及濫用現(xiàn)有的資源分配。

不當(dāng)驗(yàn)證的典型示例包括:

自認(rèn)為攻擊者無(wú)法訪問(wèn)到隱藏的表單字段僅驗(yàn)證輸入的字段的長(zhǎng)度,而不是具體內(nèi)容不當(dāng)?shù)尿?yàn)證同樣會(huì)潛藏在軟、硬件體系架構(gòu)的設(shè)計(jì)和實(shí)施階段。它可以發(fā)生在任何接受外部數(shù)據(jù)的編程語(yǔ)言或系統(tǒng)中。

不當(dāng)驗(yàn)證漏洞的預(yù)防措施

我們應(yīng)該對(duì)任何用戶采取“零信任(zero trust)”的原則,并假設(shè)所有的輸入都是可疑的,直到它們被證明是安全的為止。同時(shí),我們可以使用白名單機(jī)制,來(lái)確保輸入的內(nèi)容僅包含了可接受的格式與信息。

因此,在驗(yàn)證輸入時(shí),請(qǐng)?jiān)u估其長(zhǎng)度、類型、語(yǔ)法、以及邏輯上的符合性(即:輸入是否具有語(yǔ)義)。您可以使用多種工具來(lái)確保完成了充分的驗(yàn)證,例如:OWASP ESAPI Validation API和RegEx(RegularExpression,正則表達(dá)式)。這些工具可以幫助我們驗(yàn)證所有的輸入源,包括:環(huán)境變量、查詢、文件、數(shù)據(jù)庫(kù)、以及API調(diào)用。

此外,我們應(yīng)當(dāng)確保在客戶端和服務(wù)器端都執(zhí)行相應(yīng)的檢查。為了避免出現(xiàn)客戶端驗(yàn)證被繞過(guò)的情況,我們需要重點(diǎn)在服務(wù)器端捕獲各項(xiàng)輸入,以識(shí)別攻擊者的潛在操縱。同時(shí),在程序代碼進(jìn)行任何必要的組合或轉(zhuǎn)換后,也請(qǐng)您再次驗(yàn)證其輸入。

信息泄露(Information Exposure)

數(shù)據(jù)被有意或無(wú)意地提供給潛在攻擊者,被稱為信息泄露。除了泄露敏感的數(shù)據(jù)信息,向攻擊者提供可能被利用的軟、硬件環(huán)境信息也是一種泄露。

信息泄露的典型示例包括:

錯(cuò)誤地暴露文件或程序的完整路徑程序的錯(cuò)誤、異常消息中暴露了數(shù)據(jù)庫(kù)中用戶的相關(guān)信息信息泄露漏洞依然會(huì)潛藏在軟、硬件體系架構(gòu)的設(shè)計(jì)和實(shí)施階段。它跟編程語(yǔ)言無(wú)關(guān),更大程度上取決于編程的習(xí)慣。

信息泄露漏洞的預(yù)防措施

為防止信息的泄露,您應(yīng)當(dāng)在設(shè)計(jì)程序架構(gòu)時(shí),針對(duì)明確的信任邊界區(qū)域(,來(lái)保護(hù)敏感的信息;通過(guò)使用訪問(wèn)控制,來(lái)保護(hù)和限制“安全”區(qū)域與各個(gè)端點(diǎn)之間的連接。

為了最大程度地避免該漏洞,請(qǐng)?jiān)诔绦蛑序?yàn)證各類錯(cuò)誤的提示消息,以及用戶警告信息中是否包含有不必要暴露的內(nèi)容。同時(shí),您還應(yīng)該限制在URL和通信包的頭部(header)出現(xiàn)的敏感信息。例如:您可以隱藏完整的路徑名稱,以及API密鑰。

特權(quán)或認(rèn)證不當(dāng)(Improper Privileges or Authentication)

如果未能正確地分配,跟蹤,修改或驗(yàn)證用戶的相關(guān)權(quán)限和憑據(jù),那么就可能發(fā)生特權(quán)或身份驗(yàn)證不當(dāng)?shù)那闆r。此類漏洞可以讓攻擊者濫用特權(quán),執(zhí)行受限的任務(wù),以及訪問(wèn)受限的數(shù)據(jù)。

特權(quán)或身份驗(yàn)證不當(dāng)?shù)牡湫褪纠ǎ?/SPAN>

未及時(shí)回收臨時(shí)的提權(quán)僅通過(guò)黑名單、而不是白名單來(lái)限制特權(quán)允許較低的特權(quán)級(jí)別去影響較高的特權(quán)帳戶,例如:重置管理員的密碼限制登錄嘗試的次數(shù)或會(huì)話空閑時(shí)間特權(quán)或身份驗(yàn)證漏洞仍然可能發(fā)生在軟、硬件體系架構(gòu)的設(shè)計(jì)、實(shí)施、以及操作階段。它同樣不限于某一種編程語(yǔ)言。

特權(quán)或身份驗(yàn)證漏洞的預(yù)防措施

您應(yīng)當(dāng)將“最小特權(quán)原則”,應(yīng)用于與目標(biāo)軟件和系統(tǒng)交互的所有用戶和服務(wù)之中。只給真正需要某些資源和操作的用戶或服務(wù),完成所需任務(wù)的最少權(quán)限。我們需要通過(guò)在整個(gè)程序和環(huán)境中使用訪問(wèn)控制,來(lái)限制用戶和實(shí)體的權(quán)限。

如有可能,我們也可以將高級(jí)特權(quán)分給多個(gè)角色。通過(guò)分離,我們可以有效地削弱“高級(jí)用戶”,并降低攻擊者濫用其訪問(wèn)權(quán)限的能力。此外,您還可以運(yùn)用多因素身份驗(yàn)證的方法,來(lái)防止攻擊者繞過(guò)系統(tǒng)的檢查機(jī)制,輕松地獲得訪問(wèn)權(quán)限。

減少一般性漏洞的優(yōu)秀實(shí)踐

除了采取針對(duì)特定漏洞的措施之外,我們還應(yīng)該利用一些通用的措施,在總體上減少漏洞的暴露面。您可以從如下方面入手:

從威脅情報(bào)中學(xué)習(xí)

持續(xù)監(jiān)控和使用來(lái)自漏洞數(shù)據(jù)庫(kù)(vulnerability databases)和獨(dú)立監(jiān)督組(如:OWASP或NIST)的消息。這些資源可以在出現(xiàn)漏洞后,及時(shí)地為您提供該漏洞的相關(guān)信息,并能夠指導(dǎo)您如何解決或緩解當(dāng)前存在的問(wèn)題。據(jù)此,您可以根據(jù)實(shí)際情況,準(zhǔn)確地修補(bǔ)目標(biāo)系統(tǒng)及其組件。

謹(jǐn)慎地包含依賴性

請(qǐng)確保僅在需要時(shí)才去使用那些已經(jīng)過(guò)審核、且值得信任的庫(kù)和框架。某些不知名的工具會(huì)將其自身的漏洞傳遞到您的軟件中,并且會(huì)給攻擊者提供潛在的訪問(wèn)后門。而且,在使用選定的庫(kù)和框架時(shí),請(qǐng)確保您已經(jīng)充分了解了可用的功能,以及那些已知的漏洞與缺陷。

執(zhí)行漏洞評(píng)估

永遠(yuǎn)不要盲目地認(rèn)為自己的程序已經(jīng)“固若金湯”,請(qǐng)不斷通過(guò)靜態(tài)代碼和動(dòng)態(tài)運(yùn)行時(shí)(runtime)的測(cè)試,以確保各種遺留的漏洞能夠得到及時(shí)的評(píng)估。只有將自動(dòng)測(cè)試工具集成到現(xiàn)有開發(fā)環(huán)境中,您才能盡早地發(fā)現(xiàn)漏洞。據(jù)此,您可以確保自己不會(huì)因?yàn)闀r(shí)間的限制而跳過(guò)某些重要的測(cè)試,也不會(huì)因?yàn)槿藶榈腻e(cuò)誤而忽略掉應(yīng)有的測(cè)試。

總結(jié)

綜上所述,軟件漏洞可謂層出不窮,顯然無(wú)法趕盡殺絕。我們能做的只有通過(guò)了解漏洞的原理和防范的措施,來(lái)及時(shí)地調(diào)整自己的實(shí)現(xiàn)方式,并開展全面的測(cè)試,盡量在產(chǎn)品發(fā)布之前,盡可能多地發(fā)現(xiàn)并解決潛在的漏洞與問(wèn)題。希望本文在上面所介紹到的各種最常見漏洞,以及在軟件開發(fā)中推薦采用的實(shí)踐和方法,能夠幫助您減少攻擊者乘虛而入的機(jī)會(huì)。

聯(lián)系我們

  • 地址:濟(jì)南市高新區(qū)丁豪廣場(chǎng)6號(hào)樓705
  • 咨詢熱線:0531-66958699
  • 服務(wù)熱線:0531-66956760
  • 郵箱:jitservice@ijiejun.com
Copyright???2017-2026?-?m.jntyzc.com?All?Rights?Reserved?捷君信息技術(shù)有限公司?版權(quán)所有?魯ICP備17035670號(hào)??技術(shù)支持:永易搜科技
客服