0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在開發(fā)生命周期的早期降低安全風(fēng)險

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:JANE GOH ? 2022-11-10 16:43 ? 次閱讀

通過限制代碼中原語的數(shù)量,開發(fā)人員可以使黑客利用軟件的過程更加困難,從而增加利用成本并降低其可能性。

軟件對軍隊的野戰(zhàn)防御和作戰(zhàn)支援能力越來越重要。軍事和航空航天系統(tǒng)中的嵌入式軟件必須既可靠又安全,因為安全漏洞可能與行業(yè)開發(fā)的許多控制措施來防止的功能缺陷一樣危險。

許多用于解決功能或質(zhì)量缺陷的相同技術(shù)也可以減少安全漏洞。在軟件開發(fā)方面,安全缺陷應(yīng)被視為軟件缺陷,并作為開發(fā)過程的一部分進(jìn)行管理。事實上,安全和質(zhì)量之間的區(qū)別有時可能是微妙的。今天表現(xiàn)為系統(tǒng)故障的缺陷明天可能會被攻擊者利用。

缺陷本質(zhì)上是潛在的利用原語1,黑客可以創(chuàng)造性地將其串在一起進(jìn)行攻擊。開發(fā)人員可以通過消除盡可能多的原語來使攻擊者利用軟件的過程更加困難。下面的示例演示如何將多個基元鏈接在一起以實現(xiàn)遠(yuǎn)程代碼執(zhí)行。

多基元攻擊示例

假設(shè)駐留在遠(yuǎn)程上的代碼中存在安全漏洞。雖然確定根本原因足以修復(fù)缺陷,但成功利用該漏洞取決于多個預(yù)先存在的條件。對于此示例的上下文,我們假設(shè)攻擊者嘗試實現(xiàn)遠(yuǎn)程代碼執(zhí)行 (RCE),從而在遠(yuǎn)程計算機(jī)上運行攻擊者選擇的代碼。雖然觸發(fā)安全漏洞是實現(xiàn)RCE所必需的,但它實際上需要許多小步驟,我們稱之為利用原語。通過將這些原語鏈接在一起,攻擊者可以創(chuàng)建一個可靠工作并在漏洞利用結(jié)束后保持穩(wěn)定性的漏洞利用。

在我們的示例中,攻擊者使用(但不限于)四個唯一的基元。使用的第一個原語是軟泄漏2,它利用合法的程序功能來操作目標(biāo)應(yīng)用程序中的內(nèi)存,而不會對穩(wěn)定性或安全產(chǎn)生影響。這些基元恰好是最常見的,因為它們依賴于預(yù)期的有效程序功能。例如,根據(jù)設(shè)計,服務(wù)器將接受來自客戶端的請求。該客戶端發(fā)送在會話終止發(fā)生之前一直保留的信息。漏洞利用編寫者可以通過確定這些請求和會話的工作原理,根據(jù)特定應(yīng)用程序的功能對其內(nèi)存布局做出某些假設(shè)。

下一個使用的基元是硬泄漏2。硬泄漏或資源泄漏對于大多數(shù) C/C++ 程序員來說非常熟悉。當(dāng)程序員忘記釋放在運行時動態(tài)獲取的內(nèi)存時,就會發(fā)生泄漏。雖然大多數(shù)程序員認(rèn)為這是一個質(zhì)量問題,在最壞的情況下會導(dǎo)致大量內(nèi)存消耗,但許多開發(fā)藝術(shù)家認(rèn)為這是確保漏洞利用穩(wěn)定性的機(jī)會。攻擊者可以通過永久獲取內(nèi)存來確保內(nèi)存的某些部分在進(jìn)程的整個生存期內(nèi)永遠(yuǎn)不會被使用。

使用的第三個基元是整數(shù)溢出。如果數(shù)學(xué)運算嘗試存儲大于整數(shù)可以容納的數(shù)字,則多余的數(shù)字將丟失。多余數(shù)據(jù)的丟失有時稱為整數(shù)換行。例如,無符號 32 位整數(shù)可以保存最大正值。通過將 1 加到該最大正值,整數(shù)將在零 (UINT_MAX + 1 == 0) 處再次開始計數(shù)。一個真實的例子是汽車在行駛 100 萬英里后翻車并從零重新開始里程計數(shù)的里程表。攻擊者可以通過在分配例程中使用此溢出整數(shù)來分配比預(yù)期更少的內(nèi)存。

最后,最后一個使用的基元是緩沖區(qū)溢出。這是 C/C++ 程序中最常見的具有安全影響的缺陷類型。當(dāng)程序?qū)懭氤^緩沖區(qū)末尾時,會導(dǎo)致緩沖區(qū)溢出,從而導(dǎo)致相鄰內(nèi)存內(nèi)容損壞。在某些情況下,這可能會導(dǎo)致覆蓋堆棧或堆的內(nèi)容,從而允許攻擊者破壞系統(tǒng)的正常運行,并最終接管程序的控制流。

RCE 中的原始用法

現(xiàn)在,基元類型已經(jīng)介紹完畢,讓我們討論示例中的攻擊者如何利用它們來實現(xiàn)遠(yuǎn)程代碼執(zhí)行。首先,通過使用現(xiàn)有的程序功能,攻擊者發(fā)送有效的請求,導(dǎo)致根據(jù)其輸入的大小分配許多內(nèi)存塊。這似乎無害,但對于實現(xiàn)堆確定性至關(guān)重要:將應(yīng)用程序的內(nèi)存布局操作到已知的理想狀態(tài),這在利用基于堆的緩沖區(qū)溢出時是強制性的。接下來,漏洞利用作者知道一些內(nèi)存一旦分配,就永遠(yuǎn)不應(yīng)該再釋放。通過利用應(yīng)用程序中的硬泄漏,可以實現(xiàn)在進(jìn)程的整個生命周期中保持內(nèi)存的目標(biāo),從而提高開發(fā)后的穩(wěn)定性。

觸發(fā)了導(dǎo)致未充分分配的堆緩沖區(qū)溢出的整數(shù)溢出。這會導(dǎo)致分配緩沖區(qū)的實際大小與其包含的預(yù)期數(shù)據(jù)元素數(shù)不匹配。然后,攻擊者可以利用緩沖區(qū)溢出來覆蓋相鄰內(nèi)存的內(nèi)容。例如,假設(shè)無法確定一張規(guī)則紙的最后一行。如果你按順序繼續(xù)寫句子,你最終會在桌子上寫字,并可能寫下那件漂亮的新襯衫。通過覆蓋相鄰內(nèi)存,攻擊者可以用他控制的數(shù)據(jù)覆蓋重要信息。

無論嚴(yán)重性如何,將基元鏈接在一起的能力都可以更好地控制利用和開發(fā)后功能。如果我們的攻擊者沒有能力在應(yīng)用程序中創(chuàng)建硬泄漏,他將不得不找出一種不同的方法來確保他的內(nèi)存在會話超時時不會被釋放,或者他至少會意識到最終的程序崩潰是不可避免的。如果整數(shù)溢出不存在,我們的攻擊者根本沒有機(jī)會利用。

利用原語和安全漏洞之間的聯(lián)系可以是直接或間接的。某些類型的基元(如緩沖區(qū)溢出)可能導(dǎo)致許多不同類型的漏洞,具體取決于攻擊者的技能、創(chuàng)造力和決心。然而,顯而易見的是,擁有更多可用的原語使攻擊者更容易利用更嚴(yán)重的漏洞并開發(fā)破壞性漏洞。因此,在開發(fā)過程的早期查找和消除大量利用原語可以極大地幫助減少應(yīng)用程序服務(wù)期間的安全漏洞暴露和維護(hù)成本。

保護(hù)代碼開發(fā)的實用方法

開發(fā)可靠且安全的軟件是 IT 團(tuán)隊面臨的一項艱巨挑戰(zhàn),因為將安全測試盡早集成到開發(fā)生命周期中的計劃尚未得到廣泛采用。這并不是說開發(fā)人員不想開發(fā)安全的產(chǎn)品,而是他們專注于提供新的特性和功能,并且經(jīng)常面臨滿足發(fā)布截止日期的巨大壓力。除了缺乏投資加強安全性的經(jīng)濟(jì)激勵外,開發(fā)人員傳統(tǒng)上沒有接受過安全專家的培訓(xùn)。計算機(jī)科學(xué)課程的重點是培養(yǎng)具有成為優(yōu)秀應(yīng)用程序開發(fā)人員基礎(chǔ)的程序員,但不一定是安全專家。因此,今天的開發(fā)人員基本上沒有意識到他們可以在代碼中引入安全問題的無數(shù)種方式,并且在發(fā)現(xiàn)安全問題時也沒有資金來修復(fù)它們。

開發(fā)測試解決方案需要從開發(fā)人員的角度進(jìn)行設(shè)計。這意味著要解決使開發(fā)人員回避傳統(tǒng)安全評估工具的主要問題:缺乏可用性和高誤報率。尋求將安全測試集成到其流程中的開發(fā)經(jīng)理應(yīng)尋找能夠提供以下功能的自動化開發(fā)測試工具:

清晰解釋缺陷,噪音?。洪_發(fā)人員根本沒有時間浪費時間試圖篩選嘈雜的結(jié)果,或重現(xiàn)實際上不存在的虛幻缺陷。他們需要易于理解且誤報盡可能少的缺陷。

在編寫代碼時及早并經(jīng)常檢測缺陷:確定缺陷的確切原因需要付出大量努力,修復(fù)缺陷可能涉及大量的體系結(jié)構(gòu)更改。盡早發(fā)現(xiàn)關(guān)鍵缺陷使開發(fā)團(tuán)隊能夠預(yù)測工作負(fù)載和對發(fā)布計劃的影響,從而降低整個項目的成本。

有關(guān)如何修復(fù)安全缺陷的可操作且正確的建議:作為安全評估的一部分提供的缺陷修正建議通常不會針對軟件包中使用的相關(guān)框架、語言或庫進(jìn)行自定義。開發(fā)人員很難將通用建議轉(zhuǎn)化為有效的修復(fù)程序,這通常會導(dǎo)致應(yīng)用錯誤或不完整的修復(fù)程序,從而導(dǎo)致客戶流失和返工。

缺陷是軟件開發(fā)不可避免的事實。雖然可能無法完全防止在代碼開發(fā)過程中引入漏洞,但現(xiàn)在存在的技術(shù)和流程可以幫助開發(fā)人員盡可能快速有效地查找和修復(fù)這些缺陷。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8963

    瀏覽量

    85087
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2102

    瀏覽量

    73453
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68236
收藏 人收藏

    評論

    相關(guān)推薦

    如何確保車規(guī)級芯片全生命周期安全

    為保障質(zhì)量、安全性和可靠性,汽車行業(yè)始終如一地貫徹著嚴(yán)苛的標(biāo)準(zhǔn)。然而,這種對汽車安全性和可靠性的堅定追求,也催生了對預(yù)測性維護(hù)的迫切需要,即在芯片生命周期管理(SLM)中,使用先進(jìn)的監(jiān)測和分析技術(shù)來預(yù)測和預(yù)防半導(dǎo)體組件的故障。
    的頭像 發(fā)表于 08-12 10:47 ?354次閱讀
    如何確保車規(guī)級芯片全<b class='flag-5'>生命周期</b>的<b class='flag-5'>安全</b>

    半導(dǎo)體產(chǎn)業(yè)背后的“守護(hù)者”:全生命周期測試設(shè)備解析

    半導(dǎo)體產(chǎn)業(yè)作為現(xiàn)代電子工業(yè)的核心,其產(chǎn)品的全生命周期測試對于確保產(chǎn)品質(zhì)量、提高生產(chǎn)效率和降低成本具有重要意義。半導(dǎo)體全生命周期測試設(shè)備涵蓋了從原材料檢測到最終產(chǎn)品測試的一系列設(shè)備,本文將對這些設(shè)備進(jìn)行詳細(xì)介紹。
    的頭像 發(fā)表于 08-10 10:05 ?315次閱讀
    半導(dǎo)體產(chǎn)業(yè)背后的“守護(hù)者”:全<b class='flag-5'>生命周期</b>測試設(shè)備解析

    半導(dǎo)體全生命周期測試:哪些設(shè)備默默守護(hù)你的電子產(chǎn)品?

    半導(dǎo)體產(chǎn)業(yè)作為現(xiàn)代電子工業(yè)的核心,其產(chǎn)品的全生命周期測試對于確保產(chǎn)品質(zhì)量、提高生產(chǎn)效率和降低成本具有重要意義。半導(dǎo)體全生命周期測試設(shè)備涵蓋了從原材料檢測到最終產(chǎn)品測試的一系列設(shè)備,本文將對這些設(shè)備進(jìn)行詳細(xì)介紹。
    的頭像 發(fā)表于 07-01 09:38 ?298次閱讀
    半導(dǎo)體全<b class='flag-5'>生命周期</b>測試:哪些設(shè)備<b class='flag-5'>在</b>默默守護(hù)你的電子產(chǎn)品?

    鴻蒙開發(fā)組件:DataAbility的生命周期

    應(yīng)用開發(fā)者可以根據(jù)業(yè)務(wù)場景實現(xiàn)data.js/data.ets中的生命周期相關(guān)接口。DataAbility生命周期接口說明見下表。
    的頭像 發(fā)表于 06-20 09:39 ?372次閱讀

    鴻蒙開發(fā):【PageAbility的生命周期

    PageAbility生命周期是PageAbility被調(diào)度到INACTIVE、ACTIVE、BACKGROUND等各個狀態(tài)的統(tǒng)稱。PageAbility生命周期流轉(zhuǎn)及狀態(tài)說明見如下圖1、表1所示。
    的頭像 發(fā)表于 06-17 10:05 ?651次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>:【PageAbility的<b class='flag-5'>生命周期</b>】

    設(shè)備全生命周期管理流程有哪些?

    采購與安裝階段設(shè)備全生命周期管理系統(tǒng)對設(shè)備需求進(jìn)行分析,記錄設(shè)備信息,確保設(shè)備正確安裝并達(dá)到預(yù)期性能。維護(hù)保養(yǎng)階段制定科學(xué)維護(hù)計劃,定期檢查和保養(yǎng)。性能優(yōu)化與升級階段通過分析數(shù)據(jù)發(fā)現(xiàn)問題,優(yōu)化設(shè)備性能。
    的頭像 發(fā)表于 06-13 15:21 ?601次閱讀
    設(shè)備全<b class='flag-5'>生命周期</b>管理流程有哪些?

    鴻蒙Ability Kit(程序框架服務(wù))【UIAbility組件生命周期】實例

    本文檔主要描述了應(yīng)用運行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發(fā)表于 05-31 15:03 ?1003次閱讀
    鴻蒙Ability Kit(程序框架服務(wù))【UIAbility組件<b class='flag-5'>生命周期</b>】實例

    如何保護(hù)電子元器件以延長生命周期

    電子電力領(lǐng)域,許多關(guān)鍵應(yīng)用要求設(shè)備必須運行很長一段時間,甚至幾十年。尤其是對于航空航天、國防、能源和醫(yī)療行業(yè)方面而言,為了保持設(shè)備正常運行,必須在其整個生命周期內(nèi)持續(xù)供應(yīng)組件。那么,如何保護(hù)電子
    的頭像 發(fā)表于 05-31 13:59 ?410次閱讀
    如何保護(hù)電子元器件以延長<b class='flag-5'>生命周期</b>

    鴻蒙Ability Kit(程序框架服務(wù))【UIAbility組件生命周期

    當(dāng)用戶打開、切換和返回到對應(yīng)應(yīng)用時,應(yīng)用中的UIAbility實例會在其生命周期的不同狀態(tài)之間轉(zhuǎn)換。UIAbility類提供了一系列回調(diào),通過這些回調(diào)可以知道當(dāng)前UIAbility實例的某個狀態(tài)發(fā)生改變,會經(jīng)過UIAbility實例的創(chuàng)建和銷毀,或者UIAbility實例
    的頭像 發(fā)表于 05-30 21:51 ?1382次閱讀
    鴻蒙Ability Kit(程序框架服務(wù))【UIAbility組件<b class='flag-5'>生命周期</b>】

    Traveo II B-H中的SECURE和SECURE_WITH_DEBUG生命周期階段有何不同?

    Traveo II B-H 中的 SECURE 和 SECURE_WITH_DEBUG 生命周期階段有何不同?
    發(fā)表于 05-21 07:07

    HarmonyOS開發(fā)案例:【UIAbility和自定義組件生命周期

    本文檔主要描述了應(yīng)用運行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發(fā)表于 05-10 15:31 ?1122次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>案例:【UIAbility和自定義組件<b class='flag-5'>生命周期</b>】

    什么是設(shè)備全生命周期管理系統(tǒng)?

    設(shè)備全生命周期管理系統(tǒng)是一款能夠?qū)υO(shè)備進(jìn)行全周期數(shù)字化管理的軟件平臺,它通過將設(shè)備信息電子化,使得設(shè)備的管理和監(jiān)督更加便捷。這個系統(tǒng)不僅涵蓋了設(shè)備的采購、使用、維修、報廢等各個階段,還能夠?qū)υO(shè)備
    的頭像 發(fā)表于 02-26 14:21 ?1069次閱讀
    什么是設(shè)備全<b class='flag-5'>生命周期</b>管理系統(tǒng)?

    半導(dǎo)體測試設(shè)備大盤點:全生命周期無死角檢測

    半導(dǎo)體產(chǎn)業(yè)作為現(xiàn)代電子工業(yè)的核心,其產(chǎn)品的全生命周期測試對于確保產(chǎn)品質(zhì)量、提高生產(chǎn)效率和降低成本具有重要意義。半導(dǎo)體全生命周期測試設(shè)備涵蓋了從原材料檢測到最終產(chǎn)品測試的一系列設(shè)備,本文將對這些設(shè)備進(jìn)行詳細(xì)介紹。
    的頭像 發(fā)表于 02-02 09:46 ?2284次閱讀
    半導(dǎo)體測試設(shè)備大盤點:全<b class='flag-5'>生命周期</b>無死角檢測

    IBM ELM—系統(tǒng)工程全生命周期管理平臺

    Engineering Lifecycle Management是IBM提供的工程全生命周期管理組合工具,幫助企業(yè)降低開發(fā)成本,應(yīng)對開發(fā)挑戰(zhàn)并更快地發(fā)展其流程和實踐。Engineeri
    的頭像 發(fā)表于 11-22 18:27 ?1143次閱讀
    IBM ELM—系統(tǒng)工程全<b class='flag-5'>生命周期</b>管理平臺

    云端電池(CBMS)-數(shù)據(jù)驅(qū)動的電池系統(tǒng)全生命周期服務(wù)

    背景介紹 隨著新能源汽車市場的迅猛發(fā)展,動力電池作為新能源汽車的核心動力部件之一,其重要性日益凸顯。但其設(shè)計研發(fā)、售后維護(hù)和回收利用等全生命周期的核心環(huán)節(jié)仍存在著諸多亟待解決的關(guān)鍵問題。
    的頭像 發(fā)表于 11-21 17:40 ?2420次閱讀
    云端電池(CBMS)-數(shù)據(jù)驅(qū)動的電池系統(tǒng)全<b class='flag-5'>生命周期</b>服務(wù)