在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

梳理下SDL一些相對核心的理論基礎

哆啦安全 ? 來源:小道安全 ? 作者:小道安全 ? 2022-10-13 09:15 ? 次閱讀

背景

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

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

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

安全開發規則

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

它主要側重于軟件開發的安全保證過程。SDL致力于減少軟件中漏洞的數量和嚴重性。

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

SDL基于三個核心概率:培訓教育、持續過程改善和責任。

SDL的一個主要目標:安全和隱私。

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

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

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

SDL詳細步驟

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

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

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

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

1、降低默認執行的代碼量

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

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

4、降低代碼執行所需權限

基本隱私(Basic Privacy):

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

權限最小化(Least Privilege):

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

1、普通管理員/系統管理員等角色管理

2、文件只讀權限/文件訪問權限等訪問控制

3、進程/服務以所需最小用戶權限運行

默認安全(Secure Defaults):

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

縱深防御(Defense in Depth):

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

威脅建模(Threat Modeling):

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

工具安全

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

1、代碼分析功能

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

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

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

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

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

指示編譯器將溢出檢測代碼插入到面臨被利用風險的函數中。檢測到溢出時,則停止執行。默認情況下,此選項處于啟用狀態。

傳遞到函數中的易受攻擊的參數。易受攻擊的參數是指針、C++ 引用、C 結構 (C++ POD 類型) 包含指針或 GS 緩沖區。

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

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

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

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

編碼安全

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

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

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

2、要做好對輸入參數做校驗;

3、慎重使用強制類型轉換;

4、防止算術溢出和下溢;

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

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

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

1、系統函數

系統函數的使用可以大大降低代碼的開發工作量,但使用不安全的系統函數那就得不償失了。

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

安全函數不會阻止或更正安全錯誤。相反,它們會在發生錯誤時捕獲錯誤。它們對錯誤情況執行其他檢查。如果出現錯誤,則調用錯誤處理程序。

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

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

2、SafeInt庫

SafeInt它是可以與 MSVC、GCC或 Clang 結合使用的可移植庫,有助于防止在應用程序執行數學運算時可能會出現的整數溢出而被利用。SafeInt庫包括 SafeInt 類、SafeIntException 類和幾個SafeInt 函數。

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

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

3、信任邊界

信任邊界存在于應用程序可能與信任度較低的上下文提供的數據進行交互的位置,例如系統上的另一個進程,或者內核模式設備驅動程序中的非管理用戶模式進程。

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

4、類型轉換

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

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

5、接口應用

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

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

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

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

6、外部可控函數

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

7、文件操作

對文件操作的時候可以幾個降低安全風險

1、當文件路徑來自外部數據時候,需要先將文件路徑規范化,這個沒處理攻擊者就會有機會通過惡意構造文件路徑進行文件的越權訪問。

2、創建文件時候必須做好指定文件的訪問權限

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

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

盡可能使用第二個模式。

小結

以上知識的梳理更多從基礎理論出發,并且很多詳細細節還有待在后續實踐進行進一步的完善。

軟件安全和二進制漏洞是一個永恒的對抗話題,基于一套安全的開發規范,指導在開發安全生命周期內進行推進軟件開發。并且加強開發中的安全意識的培養,又助于降低減少軟件的漏洞的出現。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編譯器
    +關注

    關注

    1

    文章

    1637

    瀏覽量

    49196
  • SDL
    SDL
    +關注

    關注

    0

    文章

    18

    瀏覽量

    7411
  • POD
    POD
    +關注

    關注

    0

    文章

    18

    瀏覽量

    6032

原文標題:淺談軟件安全開發

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

收藏 人收藏

    評論

    相關推薦

    不同頻率相對介電常數變化

    相對介電常數是描述介質對電場的響應能力的物理量,通常隨頻率的變化而發生變化。以下是不同頻率下相對介電常數變化的分析: 、低頻區域 在低頻區域,相對介電常數通常與頻率的關系呈現以下特點
    的頭像 發表于 01-10 10:12 ?152次閱讀

    一些常見的動態電路

    無論是模電還是數電,理論知識相對來說還是比較枯燥,各種電路原理理解清楚不算容易,換種生動形象的方式或許會增加一些趣味性,也更容易理解這些知識。下面整理了一些常見的電路,以動態圖形的方
    的頭像 發表于 11-16 09:26 ?421次閱讀
    <b class='flag-5'>一些</b>常見的動態電路

    分享一些常見的電路

    理解模電和數電的電路原理對于初學者來說可能比較困難,但通過一些生動的教學方法和資源,可以有效地提高學習興趣和理解能力。 下面整理了一些常見的電路,以動態圖形的方式展示。 整流電路 單相橋式整流
    的頭像 發表于 11-13 09:28 ?364次閱讀
    分享<b class='flag-5'>一些</b>常見的電路

    擴散模型的理論基礎

    擴散模型的迅速崛起是過去幾年機器學習領域最大的發展之。在這本簡單易懂的指南中,學習你需要知道的關于擴散模型的切。
    的頭像 發表于 10-28 09:30 ?572次閱讀
    擴散模型的<b class='flag-5'>理論基礎</b>

    LED驅動器應用的一些指南和技巧

    電子發燒友網站提供《LED驅動器應用的一些指南和技巧.pdf》資料免費下載
    發表于 09-25 11:35 ?0次下載
    LED驅動器應用的<b class='flag-5'>一些</b>指南和技巧

    傳輸線的理論基礎

    電子發燒友網站提供《傳輸線的理論基礎.pdf》資料免費下載
    發表于 08-12 09:32 ?0次下載

    現代控制理論和自動控制原理的區別

    現代控制理論和自動控制原理是控制工程領域的兩個重要概念,它們在很多方面有相似之處,但也存在一些關鍵的區別。 、定義 自動控制原理 自動控制原理是研究自動控制系統的基本原理和方法的學科。它主要研究
    的頭像 發表于 07-29 10:33 ?2680次閱讀

    咨詢一些關于LED燈具的問題

    各位大佬,咨詢一些關于LED燈具的問題 120W的吸頂燈,用的非隔離式電源,用不到1年,燈具就會閃爍、頻閃或不亮,主要是什么原因造成的?是不是驅動芯片太差?
    發表于 07-02 22:33

    邊緣光線理論基礎

    邊緣光線理論在實際的二次光學設計中應用十分廣泛,由于實際光源不可視為點光源,多為擴展光源。通過對光線的控制,中心光線可以控制目標光斑的最大照度值,通過邊緣光線來設計光學系統的照明范圍。
    發表于 04-11 09:54 ?987次閱讀
    邊緣光線<b class='flag-5'>理論基礎</b>

    細談SolidWorks教育版的一些基礎知識

    SolidWorks教育版是款廣泛應用于工程設計和教育領域的三維建模軟件。它具備直觀易用的操作界面和強大的設計功能,為學生提供了個學習和實踐的平臺。在本文中,我們將詳細探討SolidWorks教育版的一些基礎知識,幫助初學者
    的頭像 發表于 04-01 14:35 ?360次閱讀

    一些有關通信電路的資料?

    有關嵌入式之間DSP、ARM、FPGA三者之間和這三款芯片和外部電路之間通信的一些資料,比如說芯片之間的并行通信和芯片和外部電路之間的串行通信,MODBUS、DP、CAN等,一些一些常用的通信協議的
    發表于 03-03 18:53

    晶振電路中電容電阻的一些基本原理和作用解析

    晶振電路中的電容和電阻是調整和維持晶振振蕩穩定性的關鍵元件。KOAN凱擎小妹帶大家了解一下晶振電路中電容電阻的一些基本原理和作用。
    的頭像 發表于 02-20 16:22 ?1830次閱讀
    晶振電路中電容電阻的<b class='flag-5'>一些</b>基本原理和作用解析

    一些無功補償裝置SVG的資料

    一些SVG電路原理和功能碼相關的技術說明書,想了解一些SVG的工作原理和工作過程
    發表于 02-03 10:13

    SDL的示例EMMC無法編譯是怎么回事?

    我想要編譯 SDL 的 tviibh8msrcexamplessd_hostemmc 來進行參考 不過我復制 main_cm7_0.c 進行編譯后,發現有些未定義的錯誤 error
    發表于 02-01 07:55

    CANFD SDL無法被接收到的原因?

    我使用了 SDL 示例代碼 T2G_Sample_Driver_Library_7.8.0tviibh8msrcexamplescanfdCANFDmain_cm0plus.c 但是收不到
    發表于 02-01 07:27
    主站蜘蛛池模板: 天天爽夜夜爽| 一级做a免费视频| 欧美成人3d动漫在线播放网站| 日日噜噜噜噜人人爽亚洲精品| 五月婷婷之综合激情| 桃色婷婷| 欧美福利视频网| 黄色大片网| 91tm视频| 日日摸夜夜爽| 波多野结衣福利| 黄h视频在线观看视频| 一二三区在线视频| 最新精品| 色噜噜色偷偷| 久久久噜噜噜| 11111日本网站| 久久久久国产| mmmxxx69日本| aⅴ一区二区三区| 色四月婷婷| 黄色一级片视频| 亚洲国产精| 福利视频午夜| 男女交性视频播放 视频 视频| 亚洲丁香| 玖玖爱在线播放| 亚洲九九香蕉| 69老司机亚洲精品一区| 国产亚洲一区二区三区在线| 色秀网站| 国产va免费精品高清在线观看| 欧美资源在线| 日本番囗| 俺去啦最新官网| 欧美三级午夜伦理片| 黄视频国产| 亚洲美国avcom| 久青草视频在线| 天天爽夜夜爽人人爽一区二区| 1024手机看片国产|