91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

梳理下SDL一些相對核心的理論基礎(chǔ)

哆啦安全 ? 來源:小道安全 ? 作者:小道安全 ? 2022-10-13 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

安全性在軟件開發(fā)過程中是一個極其重要和深刻的話題。當(dāng)安全性受到損害時,會發(fā)生非常糟糕的事情。我們在軟件開發(fā)生命周期的各個階段都必須記住這一點。

不同于一些其他非功能性要求,一般不能在之后才在系統(tǒng)中考慮到安全性。開發(fā)一個相對安全的項目離不開一個安全規(guī)則的指導(dǎo),一個好用的開發(fā)工具,一套安全的編碼規(guī)范。

下面就從開發(fā)安全規(guī)則、開發(fā)工具的安全利用,安全編碼這三方面進行分析。降低軟件中的漏洞,包括但不限于緩沖區(qū)溢出、邊界外的數(shù)組訪問、未初始化的內(nèi)存使用、類型混淆等安全漏洞。

安全開發(fā)規(guī)則

一個好的安全開發(fā)指導(dǎo)規(guī)則,能夠在開發(fā)軟件過程中挖掘出漏洞的。這個好的安全規(guī)則首選推薦微軟的SDL(安全開發(fā)生命周期)。下面就梳理下這個SDL的一些相對核心的理論基礎(chǔ)。

它主要側(cè)重于軟件開發(fā)的安全保證過程。SDL致力于減少軟件中漏洞的數(shù)量和嚴重性。

SDL的核心理念是將安全考慮集成在軟件開發(fā)的每一個階段:需求分析、設(shè)計、編碼、測試和維護。從需求、設(shè)計到發(fā)布產(chǎn)品的每一個階段每都增加了相應(yīng)的安全活動,以減少軟件中漏洞的數(shù)量并將安全缺陷降低到最小程度。

SDL基于三個核心概率:培訓(xùn)教育、持續(xù)過程改善和責(zé)任。

SDL的一個主要目標(biāo):安全和隱私。

SDL在開發(fā)過程的所有階段進行安全和隱私保護

3d3917cc-4a8f-11ed-a3b6-dac502259ad0.png

安全開發(fā)生命周期 (SDL)由一組支持安全保證和合規(guī)性要求的實踐組成。SDL 通過減少軟件中漏洞的數(shù)量和嚴重性,同時降低開發(fā)成本,幫助開發(fā)人員構(gòu)建更安全的軟件。

SDL詳細步驟

3d7310da-4a8f-11ed-a3b6-dac502259ad0.png

SDL安全設(shè)計核心原則主要包括:攻擊面最小化、基本隱私、權(quán)限最小化、默認安全、縱深防御、威脅建模。下面就這對這些原則展開做個簡單解析。

攻擊面最小化(Attack Surface Reduction):

指盡量減少暴露惡意用戶可能發(fā)現(xiàn)并試圖利用的攻擊面數(shù)量。軟件產(chǎn)品的受攻擊面是一個混合體,不僅包括代碼、接口、服務(wù),也包括對所有用戶提供服務(wù)的協(xié)議。尤其是那些未被驗證或者遠程的用戶都可以訪問到的協(xié)議,安全人員在攻擊面最小化時首先要對攻擊面進行分析,攻擊面分析就是枚舉所有訪問入庫、接口、協(xié)議一劑可執(zhí)行代碼的過程,從更高層次來說,攻擊面分析著重于如下4點:

1、降低默認執(zhí)行的代碼量

2、限制可訪問到代碼的人員范圍

3、限定可訪問到代碼的人員身份

4、降低代碼執(zhí)行所需權(quán)限

基本隱私(Basic Privacy):

指用戶在使用軟件時無可避免個人信息被收集、使用甚至分發(fā),企業(yè)則有責(zé)任和義務(wù)建立保護個人信息的保護措施,抵御敵對攻擊行為,確保用戶基本隱私的安全性。

權(quán)限最小化(Least Privilege):

指如果一個應(yīng)用程序或網(wǎng)站被攻擊、破壞,權(quán)限最小化機制能夠有效的將潛在損害最小化。常見的權(quán)限最小化實踐如:

1、普通管理員/系統(tǒng)管理員等角色管理

2、文件只讀權(quán)限/文件訪問權(quán)限等訪問控制

3、進程/服務(wù)以所需最小用戶權(quán)限運行

默認安全(Secure Defaults):

默認安全配置在客戶熟悉安全配置選項之前不僅有利于更好的幫助用戶掌握安全配置經(jīng)驗,同時也可以確保應(yīng)用程序初始狀態(tài)下處于較安全狀態(tài)。

縱深防御(Defense in Depth):

縱深防御包含兩層含義:首先,要在各個不同層面、不同方面實施安全方案,避免出現(xiàn)疏漏,不同安全方案之間需要相互配合,構(gòu)成一個整體;其次,要在正確的地方做正確的事情,即:在解決根本問題的地方實施針對性的安全方案。

威脅建模(Threat Modeling):

威脅建模是一種分析應(yīng)用程序威脅的過程和方法。這里的威脅是指惡意用戶可能會試圖利用以破壞系統(tǒng)。

工具安全

下面就以visual studio工具進行展開,利用工具上的幾個配置進行提高軟件安全性。使用這些工具和做法并不會使應(yīng)用程序免受攻擊,但能降低攻擊成功的可能性。

1、代碼分析功能

3d7ff6ce-4a8f-11ed-a3b6-dac502259ad0.png

此編譯器選項將激活報告潛在安全問題(比如緩沖區(qū)溢出、未初始化的內(nèi)存、null指針取消引用和內(nèi)存泄漏)的代碼分析。此選項默認已關(guān)閉。建議開啟這個開關(guān)。

2、/GS(緩沖區(qū)安全檢查)

3d8609e2-4a8f-11ed-a3b6-dac502259ad0.png

這個的安全檢查主要處理:函數(shù)調(diào)用的返回地址;函數(shù)的異常處理程序的地址;易受攻擊的函數(shù)參數(shù)。導(dǎo)致緩沖區(qū)溢出是黑客用來利用不強制實施緩沖區(qū)大小限制的代碼的技術(shù)。

指示編譯器將溢出檢測代碼插入到面臨被利用風(fēng)險的函數(shù)中。檢測到溢出時,則停止執(zhí)行。默認情況下,此選項處于啟用狀態(tài)。

傳遞到函數(shù)中的易受攻擊的參數(shù)。易受攻擊的參數(shù)是指針、C++ 引用、C 結(jié)構(gòu) (C++ POD 類型) 包含指針或 GS 緩沖區(qū)。

3、/DYNAMICBASE(使用地址空間布局隨機化)

3d8b7f9e-4a8f-11ed-a3b6-dac502259ad0.png

使用 Windows 的地址空間布局隨機化 (ASLR) 功能,指定是否生成可在加載時隨機重新設(shè)定基址的可執(zhí)行文件映像。

通過使用此鏈接器選項,可以生成一個在執(zhí)行開始時可在內(nèi)存的不同位置加載的可執(zhí)行映像。此選項還使內(nèi)存中的堆棧位置更加不可預(yù)測。

編碼安全

當(dāng)前軟件中都可能存在相同類別的內(nèi)存安全漏洞,也可能存在于推理且無序的執(zhí)行路徑中,包括但不限于緩沖區(qū)溢出、邊界外的數(shù)組訪問、未初始化的內(nèi)存使用、類型混淆等漏洞。

一個套規(guī)范的安全開發(fā)可以大大降低軟件漏洞的風(fēng)險,安全開發(fā)通常需要我們在編碼過程中做到

1、不要使用那些易受攻擊的API函數(shù);

2、要做好對輸入?yún)?shù)做校驗;

3、慎重使用強制類型轉(zhuǎn)換;

4、防止算術(shù)溢出和下溢;

5、異常捕獲是定時炸彈;

6、多用安全工具進行檢查代碼;

7、文件操作過程中要做好路徑和權(quán)限管控。

1、系統(tǒng)函數(shù)

系統(tǒng)函數(shù)的使用可以大大降低代碼的開發(fā)工作量,但使用不安全的系統(tǒng)函數(shù)那就得不償失了。

在開過過程中許多舊CRT函數(shù)具有持續(xù)更新、更安全的版本。如果存在安全函數(shù),則較舊的、安全性更低的版本將標(biāo)記為已棄用,并且新版本具有 _s(“安全”)后綴。

安全函數(shù)不會阻止或更正安全錯誤。相反,它們會在發(fā)生錯誤時捕獲錯誤。它們對錯誤情況執(zhí)行其他檢查。如果出現(xiàn)錯誤,則調(diào)用錯誤處理程序。

3d93c8f2-4a8f-11ed-a3b6-dac502259ad0.png

上圖中函數(shù)strcpy 無法判斷正在復(fù)制的字符串對于目標(biāo)緩沖區(qū)而言是否太大。其安全對應(yīng)項 strcpy_s 會將緩沖區(qū)大小作為參數(shù)。因此,可以確定是否會發(fā)生緩沖區(qū)溢出。如果你使用 strcpy_s 將 11 個字符復(fù)制到 10 個字符緩沖區(qū)中,則這是你方造成的錯誤;strcpy_s 無法更正錯誤。

2、SafeInt庫

SafeInt它是可以與 MSVC、GCC或 Clang 結(jié)合使用的可移植庫,有助于防止在應(yīng)用程序執(zhí)行數(shù)學(xué)運算時可能會出現(xiàn)的整數(shù)溢出而被利用。SafeInt庫包括 SafeInt 類、SafeIntException 類和幾個SafeInt 函數(shù)。

SafeInt 類可防止整數(shù)溢出和被零除攻擊??梢酝ㄟ^使用它處理不同類型的值之間的比較。它提供了兩種錯誤處理策略。默認策略是針對引發(fā) SafeInt 類異常的 SafeIntException 類,以報告無法完成數(shù)學(xué)運算的原因。第二個策略針對 SafeInt 類,用以停止程序的執(zhí)行。還可以定義自定義策略。

每個 SafeInt 函數(shù)各保護一個數(shù)學(xué)運算免于出現(xiàn)可被利用的錯誤。使用兩種不同的參數(shù),而不必將它們轉(zhuǎn)換為相同類型。若要保護多個數(shù)學(xué)運算,請使用 SafeInt 類。

3、信任邊界

信任邊界存在于應(yīng)用程序可能與信任度較低的上下文提供的數(shù)據(jù)進行交互的位置,例如系統(tǒng)上的另一個進程,或者內(nèi)核模式設(shè)備驅(qū)動程序中的非管理用戶模式進程。

3df6ca6a-4a8f-11ed-a3b6-dac502259ad0.png

4、類型轉(zhuǎn)換

類型強制轉(zhuǎn)換使用盡可能用C++的風(fēng)格static_cast<>,dynamic_cast<>,它允許允許更多編譯器檢查,并且更為顯式,相對更安全。

3dff9942-4a8f-11ed-a3b6-dac502259ad0.png

5、接口應(yīng)用

無論是C還是C++的編程范式,從實用的角度,最終對面向接口編程,好的代碼接口具備下述特性:

1、Self-describing,即自描述性,設(shè)計清晰簡潔的API接口名稱,一眼就能知道是什么功能。

2、Clear hierarchy,即清晰的層級性,API的接口大類不能與小類相混淆。

3、Granularity sex,即粒度性,掌控好粒度性的API接口,不能太過于粗糙,盡量細分化,容易后續(xù)的擴展。

6、外部可控函數(shù)

盡量減少使用外部可控數(shù)據(jù)作為啟動函數(shù)的參數(shù)例如:system、WinExec、ShellExecute、CreateProcess、execv、ececvp ,popen;如果外部可控作為這些函數(shù)的參數(shù),就會有導(dǎo)致被注入的風(fēng)險。如果確實需要使用這些函數(shù),可以使用白名單機制驗證其參數(shù),確保這些函數(shù)的參數(shù)不受到外來數(shù)據(jù)的命令注入影響。

7、文件操作

對文件操作的時候可以幾個降低安全風(fēng)險

1、當(dāng)文件路徑來自外部數(shù)據(jù)時候,需要先將文件路徑規(guī)范化,這個沒處理攻擊者就會有機會通過惡意構(gòu)造文件路徑進行文件的越權(quán)訪問。

2、創(chuàng)建文件時候必須做好指定文件的訪問權(quán)限

int open( const char * pathname, int flags);

int open( const char * pathname, int flags, mode_t mode);

盡可能使用第二個模式。

小結(jié)

以上知識的梳理更多從基礎(chǔ)理論出發(fā),并且很多詳細細節(jié)還有待在后續(xù)實踐進行進一步的完善。

軟件安全和二進制漏洞是一個永恒的對抗話題,基于一套安全的開發(fā)規(guī)范,指導(dǎo)在開發(fā)安全生命周期內(nèi)進行推進軟件開發(fā)。并且加強開發(fā)中的安全意識的培養(yǎng),又助于降低減少軟件的漏洞的出現(xiàn)。




審核編輯:劉清

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

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51598
  • SDL
    SDL
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    7980
  • POD
    POD
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    6286

原文標(biāo)題:淺談軟件安全開發(fā)

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    微電網(wǎng)能量平衡理論核心原理與實現(xiàn)條件

    微電網(wǎng)作為包含源、儲、網(wǎng)、荷多單元的閉環(huán)能源系統(tǒng),其安全穩(wěn)定運行的核心前提是維持能量平衡。能量平衡理論貫穿微電網(wǎng)規(guī)劃、設(shè)計、運行全生命周期,直接決定系統(tǒng)供電可靠性、電能質(zhì)量與運行經(jīng)濟性,西格電力提供
    的頭像 發(fā)表于 02-25 14:03 ?662次閱讀
    微電網(wǎng)能量平衡<b class='flag-5'>理論</b>:<b class='flag-5'>核心</b>原理與實現(xiàn)條件

    【「龍芯之光 自主可控處理器設(shè)計解析」閱讀體驗】+可測試性設(shè)計章節(jié)閱讀與自己的一些感想

    作為嵌入式底層開發(fā),對第四章可測試性的內(nèi)容比較感興趣,因為嵌入式底層開發(fā)如何測試是個很重要的內(nèi)容,一些芯片的可測試性設(shè)計做得很好,就更方便調(diào)試與查找問題有開發(fā)。 所以就來閱讀本章,分享下書中內(nèi)容
    發(fā)表于 01-15 23:30

    爬壁機器人磁鐵的一些常見問題

    爬壁機器人近幾年比較火,它是類能夠在垂直墻面、天花板、傾斜表面上移動和作業(yè)的特種機器人,今天我們不聊其它,只聊下關(guān)于磁吸附應(yīng)用中的磁鐵,以下是小編整理的關(guān)于爬壁機器人中磁鐵的一些常見問題。
    的頭像 發(fā)表于 01-09 10:06 ?264次閱讀
    爬壁機器人磁鐵的<b class='flag-5'>一些</b>常見問題

    關(guān)于六類網(wǎng)線一些問題的解答

    今天我們就圍繞網(wǎng)友一些常見的關(guān)于六類網(wǎng)線的問題進行一下匯總式解答: 問 六類網(wǎng)線可以當(dāng)電源用嗎? 答 六類網(wǎng)線并不是設(shè)計用于傳輸電力的電纜,因此般不建議將其用于電源傳輸。 盡管六類網(wǎng)線的線芯可以
    的頭像 發(fā)表于 12-09 11:13 ?558次閱讀

    貼片電容精度J±5%的一些詳細知識

    貼片電容精度J±5%表示電容的實際值與標(biāo)稱值之間的偏差范圍在±5%以內(nèi) ,以下是關(guān)于貼片電容精度J±5%的一些詳細知識: 、精度等級含義 J±5% :字母“J”在貼片電容的標(biāo)識中通常表示標(biāo)稱精度
    的頭像 發(fā)表于 11-20 14:38 ?648次閱讀
    貼片電容精度J±5%的<b class='flag-5'>一些</b>詳細知識

    E203 代碼結(jié)構(gòu)梳理

    、隊伍介紹 本篇為蜂鳥E203系列分享第五篇,本篇介紹的內(nèi)容是E203 代碼結(jié)構(gòu)梳理。 二、層次圖 三、模塊具體功能
    發(fā)表于 10-30 06:56

    當(dāng)不同的數(shù)據(jù)放在同個Flash頁面上時,請問如何在不影響其他數(shù)據(jù)的情況更改一些單獨的數(shù)據(jù)?

    當(dāng)不同的數(shù)據(jù)放在同個Flash頁面上時,如何在不影響其他數(shù)據(jù)的情況更改一些單獨的數(shù)據(jù)?
    發(fā)表于 08-22 06:25

    信號完整性(SI)/ 電源完整性(PI)工程師的核心技能樹體系

    信號完整性(SI)和電源完整性(PI)工程師在高速電子設(shè)計領(lǐng)域扮演著關(guān)鍵角色,其核心技能樹體系需覆蓋從理論基礎(chǔ)到工程實踐的全流程。以下是該崗位的核心技能框架,結(jié)合技術(shù)深度與應(yīng)用場景進行系統(tǒng)化
    的頭像 發(fā)表于 06-05 10:11 ?4111次閱讀

    MySQL簡介與理論基礎(chǔ)

    MySQL是世界上最流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之,廣泛應(yīng)用于網(wǎng)站、應(yīng)用程序和企業(yè)級系統(tǒng)。它采用客戶端/服務(wù)器架構(gòu),支持多用戶環(huán)境,并基于SQL(結(jié)構(gòu)化查詢語言)標(biāo)準。
    的頭像 發(fā)表于 05-21 10:43 ?730次閱讀

    Debian和Ubuntu哪個好一些?

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?1134次閱讀

    如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程?

    下有沒有關(guān)于如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程? 問題2: 關(guān)于mpy的image庫在哪里能了解學(xué)習(xí)內(nèi)部代碼,只了解一些python,想知道怎么從c轉(zhuǎn)換成mpy能調(diào)用的,自己寫的c也能轉(zhuǎn)成py調(diào)用
    發(fā)表于 04-29 08:16

    電機理論基礎(chǔ)

    純分享帖,需要者可點擊附件獲取完整資料~~~ 【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第時間告知,刪除內(nèi)容!
    發(fā)表于 04-17 23:01

    樹莓派在自動化控制項目中的一些潛在應(yīng)用

    自動化控制項目中的一些潛在應(yīng)用。之前,我們已經(jīng)為Arduino平臺探討了相同的話題。我們確定Arduino是個出色的教育工具,但由于一些限制,它無法在工業(yè)環(huán)境中完全
    的頭像 發(fā)表于 03-25 09:45 ?614次閱讀
    樹莓派在自動化控制項目中的<b class='flag-5'>一些</b>潛在應(yīng)用

    收藏的一些庫存,直流無刷技術(shù)+源碼+論文(建議打包)

    這也是我網(wǎng)絡(luò)上淘過來收藏的一些資料,免費跟大家起分享一下,建議下載哦,收藏不易
    發(fā)表于 03-17 20:17

    電源完整性理論基礎(chǔ)

    隨著 PCB 設(shè)計復(fù)雜度的逐步提高,對于信號完整性的分析除了反射,串?dāng)_以及 EMI 之外,穩(wěn)定可靠的電源供應(yīng)也成為設(shè)計者們重點研究的方向之。尤其當(dāng)開關(guān)器件數(shù)目不斷增加,核心電壓不斷減小的時候,電源
    發(fā)表于 03-10 17:15