心智圖資源庫 CISSP-8-應用安全開發
CISSP-資訊系統安全專業認證之應用安全開發心智圖,主要包括應用開發學習目標、系統開發安全、軟體開發模型、程式設計的語言和概念、典型的應用系統、評估軟體安全的有效性。
編輯於2021-11-10 12:06:10Microbiologia medica, Infezioni batteriche e immunità riassume e organizza i punti di conoscenza per aiutare gli studenti a comprendere e ricordare. Studia in modo più efficiente!
La teoria cinetica dei gas rivela la natura microscopica dei fenomeni termici macroscopici e le leggi dei gas trovando la relazione tra quantità macroscopiche e quantità microscopiche. Dal punto di vista del movimento molecolare, vengono utilizzati metodi statistici per studiare le proprietà macroscopiche e modificare i modelli di movimento termico delle molecole di gas.
Este é um mapa mental sobre uma breve história do tempo. "Uma Breve História do Tempo" é um trabalho científico popular com influência de longo alcance. Ele não apenas introduz os conceitos básicos da cosmologia e da relatividade, mas também discute os buracos negros e a expansão. Do universo. questões científicas de ponta, como inflação e teoria das cordas.
Microbiologia medica, Infezioni batteriche e immunità riassume e organizza i punti di conoscenza per aiutare gli studenti a comprendere e ricordare. Studia in modo più efficiente!
La teoria cinetica dei gas rivela la natura microscopica dei fenomeni termici macroscopici e le leggi dei gas trovando la relazione tra quantità macroscopiche e quantità microscopiche. Dal punto di vista del movimento molecolare, vengono utilizzati metodi statistici per studiare le proprietà macroscopiche e modificare i modelli di movimento termico delle molecole di gas.
Este é um mapa mental sobre uma breve história do tempo. "Uma Breve História do Tempo" é um trabalho científico popular com influência de longo alcance. Ele não apenas introduz os conceitos básicos da cosmologia e da relatividade, mas também discute os buracos negros e a expansão. Do universo. questões científicas de ponta, como inflação e teoria das cordas.
應用程式安全開發
應用開發學習目標
軟體開發生命週期安全
軟體開發生命週期的方法
成熟度模型
運作和維護
變更管理
綜合產品團隊
開發環境中的安全控制
軟體環境的安全(程式語言、函式庫、工具箱、綜合開發環境、 運行時間);
原始碼級的安全弱點和漏洞
配置管理作為安全編碼的重要組成
應用程式介面的安全
軟體安全的效果
審計和日誌的變更
風險分析和緩解 (糾正性措施、測試和驗證、回歸測試)
用戶接受測試
應用程式開發關注點
架構模式
三層架構
使用者
前端
複雜中介軟體
資料倉儲
錯誤追蹤和安全功能
客戶端/伺服器
客戶端:用戶接口,本地資料庫操作、通訊機制
伺服器:執行和處理資料請求,回傳結果
瀏覽器/伺服器
環境控制V應用控制
多種控製手段的平衡
瞭解環境控制與應用控制的界限
安全性V功能性
軟體功能和安全手段的平衡
功能需求、安全需求與安全機制的平衡
安全性V用戶體驗
通常成反比
安全功能V配置安全
預設安裝無法保證安全性
配置安全未啟用(應該預設拒絕存取)
未遵循最小安裝原則
後期補丁安裝
系統開發安全
SDLC
專案啟動
明確需求,確定產品的基本安全目標
風險分析評估,評估威脅和脆弱性, 估計不同安全對策的成本/效益比
風險管理
風險分析
需求分析
安全需求
系統或應用程式的功能需求
標準和指導原則
出口限制
數據的敏感度級別
相關的安全策略
成本/效益分析結果
達到目標所需的保護級別
專案開發和需求管理團隊對現行以及可能的未來功能需求進行複雜的分析以確保新系統符合終端使用者要求
專案組員也會審查專案初始階段輸出的文檔,並根據需求加以修正和更新。
相對較小的專案而言,以上流程往往包含在專案初始階段。
安全需求也應該對應形成。 (安全需求是在需求分析階段確定, 安全人員在需求階段就要參與)
系統設計
軟體開發作為系統設計的一部分
硬體不同與軟體
一般在系統設計時 決定使用軟體實施的功能。
而軟體的驗證必須考慮所有為系統而設計的背景
考慮規格說明
軟體和硬體的不同
軟體是可以有分支的,軟體是基於不同的輸入能執行不同的指令,所以軟體是複雜的;
軟體不是實體的也就不會磨損;
軟體很容易和快速的改變;
軟體的開發流程應充分規劃、控制以及進行記錄,用於檢測和矯正由於軟體變更所帶來的非預期結果
.軟體組件沒有像硬體一樣經常進行標準化以及可替換的。
用於描述使用者需求和系統內部行為的工具
包括系統與軟體設計相關的所有活動。
設計系統架構,系統的輸出和系統接口
建立資料輸入,資料流和資料輸出需求,以及一般基於公司的安全架構設計軟體安全功能。
設計
數據設計
抽取數據設計和資訊模型數據,轉換為數據結構
體系結構設計
定義了主要結構和應用程式元件之間的關係
流程設計
將結構化組件轉換為描述性過程
安全設計方法
威脅建模(STRIDE)
攻擊面最小化分析
淨化輸入輸出
需要考慮的問題
後續階段的工作分解結構(WBS)
產品的細節和實現產品的環境
產品的模組化合重用問題
軟體開發及實施
主要工作
原始碼已經產生、測試場景和測試案例也相應開發出來
開始實施單元和整合測試
程序和系統也開始文檔化為了維護然後向驗收性測試和產品轉化
測試類型
單元測試
驗證資料結構、邏輯和邊界條件
整合測試
驗證組件是否依照設計規格中協同工作
系統測試
功能/性能
驗收測試
確保程式碼滿足客戶的需求
回歸測試
進行系統變更後會從新測試,以 確保功能性、效能和保護級別
功能測試
性能測試
負載測試
壓力測試
模糊測試(Fuzzing testing)
發送複雜/隨機的資料給軟體來造成軟體的錯誤,主要用於識別快取溢出、DOS、注入、驗證錯誤以及其他可能導致軟體死機、崩潰或發生各種錯誤。
脆弱性掃描(Vulnerability scanning)
透過自動化工具檢查程式的主要錯誤,如強類型語言的錯誤、開發和配置錯誤、交易序列錯誤( transaction sequence faults )、映射出發條件( mapping trigger conditions. )等,通常在掃描完後需要手動進一步的調查。
人工測試
透過人員的經驗和直覺來分析程序,通常使用電腦技術來判斷,測試人員能定位設計錯誤,如邏輯錯誤。包括滲透測試。
動態分析(Dynamic analysis)
動態分析是及時的分析正在運行的程序, 一般是在靜態分析之後,程序的基本問題都被解決完後執行。
環境分離,職責分離
驗證 (verification)
確保滿足了產品規格(specfication)
確認 (validation)
確保專案的主要目標得到滿足
著重於如何使用和操作開發好的系統或應用程式
認證 (Certification)
對一個IT系統的技術和非技術安全特性以及其 防護措施安全評價,衡量特定設計與實施滿足 一套規定的安全需求的程度,為認可過程提供支援。
一個檢查和評估安全控制的過程
外部獨立的檢查機構執行
確認對安全策略和標準的合規
鑑定或認可 (Accreditation)
權威機構正式聲明,某個IT系統已經獲得批准,能 夠運行於特定的安全模式,該安全模式採用了滿足可接受風險等級的一套規定的安全措施
管理層對系統認可
對風險的明確接受
遷移與修正
此階段,系統從驗收階段轉換到真實生產環境。
此階段活動包括獲得安全認可 (security accreditation);
根據計劃培訓使用者;
實施系統,包括含安裝和資料轉換;
如有必要,請執行並行操作。
運作/維護
正確配置安全環境
持續進行脆弱性測試,監控系統活動和稽核事件 (在維護階段發現發現了漏洞,採取的行動是報告)
如果發生重大變更執行風險評估, 並執行認證和鑑定過程(re-certification, re-accreditation)
處置 (disposal)
根據資料敏感程度,銷毀資料。
銷毀方法
物理破壞
消磁
覆寫
SELC 系統工程生命週期 (Systems Engineering Life Cycle)
需求分析,設計,實施,驗證,運營 Requirements analysis, Design, Implementation, Verification, Operation
變更和配置管理
能力成熟度模型 (CMM)
初始(Ad hoc)
可重複(Repeatable)
已定義(Defined 已定義)
已管理(Managed 已管理,衡量指標)
優化(Optimizing,持續改進)
能力成熟度模型集成 (CMMI)
1,3,5 相同,2.已管理,4.量化已管理
綜合產品團隊
Integrated Product and Process Development (IPPD)整合產品和流程開發
透過使用多科目團隊同時整合所有必要獲取活動來優化設計、製造和支援流程的管理技術
IPPD從產品概念到生產,包括現場支持,促進滿足成本和績效目標
IPPD的關鍵原則是整合產品團隊(IPTs)的多學科協作模式
IPT
來自所有各職能科目的代表與Team Leader 一起工作來構建成功和平衡的程序,識別並解決問題,妥善並及時的決策
小組成員不一定貢獻100%的時間在專案上,一個成員可以在多個IPT團隊。
IPTs的目的是製定團隊決策基於所有團隊的即時輸入(e.g.,專案管理、工程、製造、測試、邏輯、財務管理、採購和合約管理)也包括客戶和供應商
ITPs的團隊成員由專案經理級組成,包括來自企業和系統/子系統承包商的成員
典型IPT處於專案集級,例如,可能由以下功能學科組成:設計工程、製造、系統的工程,測試和評估,分包、品質保證、培訓、財務、可靠性、維修性、保障性、採購、合約管理、供應商和客戶。
DevOps
概念
原則
對類似成產系統進行開發和測試
以可重複、可靠流程進行部署
監控和驗證營運品質
擴大回饋迴路
軟體開發模型
瀑布模型(waterfall)
制定計畫、需求分析、軟體設計、程式編寫、軟體測試、運作維護
螺旋模型
結構化程式開發
迭代開發
原型模型
拋棄
改進
快速原型法
探索模型
聯合分析開發
快速應用開發(RAD)
重複使用模型
淨室
元件型開發
敏捷開發
極限編程XP
Scrum
Lean
敏捷宣言4句話
個體與互動 高於 流程與工具 工作的軟體 高於 詳盡的文檔 客戶合作 高於 合約談判 響應變化 高於 遵循計劃
程式設計的語言和概念
結構化程式設計
自頂向下的分析設計; 自底向上的逐步實施
面向使用者的觀點,嚴格區分工作階段
缺點:開發週期長、開發過程繁瑣且複雜 審計較困難,使用者溝通不直觀
物件導向程式設計
採用類別和物件兩部分組成
類別 (Class)
類別(Class)定義了一件事的抽象特點
類別定義了事物的屬性和它可以做到的(它的行為)
一個類別的方法和屬性被稱為“成員”
物件 (Object)
物件(Object)是類別的實例。
系統給物件分配記憶體空間,而不會給類別分配記憶體空間; 類別是抽象的,系統不可能給抽象的東西分配空間,物件是具體的
物件=屬性 方法
屬性:
描述了物件的結構和狀態特徵
方法:
物件能夠執行的功能或流程
物件間通訊的方法:訊息傳遞
多態性 (polymorphism)
封裝最簡單的理解就是包裝,指隱藏物件的屬性和實作細節, 僅僅對外公開接口,即對象的內部狀態對外界是透明的。
封裝性 (Encapsulation)
意味著將物件資訊隱藏
公有會員
私有成員
繼承 (inheritance)
是一種由已存在的類別創建一個或多個子類型的機制.
軟體體系結構
資料結構
對資料元素之間邏輯關係的表示
標量
鍊錶
層次樹
內聚和耦合 (高內聚,低耦合)
內聚
反應某個模組能夠執行多少種不同類型的任務
內聚越高,就越容易對其進行更新和修改, 而不會影響到與其它互動的其他模組
耦合
一個模組執行任務時需要進行多少交互
低耦合更容易重複使用,修改時也不會影響其他模組
分散式運算
通用物件請求代理體系結構 (CORBA)
微軟COM/DCOM模型
EJB
API
API是IoT(Internet of Things)的連接器,讓設備互相連接
Representational State Transfer (REST) API
REST 安全專家使用建議
REST API的三種安全性路徑
典型的應用系統
Web安全
資訊收集 (Information gathering)
管理介面 (Administrative interfaces)
鑑別和存取控制 (Authentication and access control)
輸入驗證 (Input validation)
因應
快取溢出攻擊
XSS跨站腳本攻擊
SQL注入攻擊
參數驗證 (Parameter validation)
會話管理 (Session management)
資料庫管理
資料庫管理系統 (DBMS)
管理和控制資料存取的程序集
以一定的格式組織並儲存資料、 記錄文件,允許使用者存取、管理和更新
焦點:資料採集、儲存、恢復
最關注完整性,其次是可用性,最後是保密性
元資料(metadata)
本質:有關數據的數據
有關資料來源定義,目標定義,轉換規則等相關的關鍵資料。
特點:
數據一致性
操作必須遵守每個資料庫的完整性策略, 完成交易數據保持一致
數據共享
同一時刻可以有多個使用者存取資料庫, 借助並發控制
資料恢復
若發生錯誤或系統崩潰,系統可以恢復。 檢查在崩潰時候正處理的交易或回滾, 或向前已完成一次交易,維護資料的一致性
檢查點是一種常見的恢復技術
安全控制
提供各種安全控制,以限制用戶訪問
資料庫語言
資料定義語言(DDL), 例如:CREATE、DROP、ALTER等語句。
資料操作語言(DML), 例如:SELECT(查詢)、INSERT(插入)、 UPDATE(修改)、DELETE(刪除)語句。
資料控制語言(DCL), 例如:GRANT、REVOKE等語句。
事務控制語句(TCL), 例如:COMMIT、ROLLBACK等語句。
確保有效途徑或流程
壓縮:研所資料並節省儲存空間及I/O的能力
重組:回收不用的空間
重構:新增和改變記錄、資料、存取控制、 磁碟配置、處理方法的能力
資料庫模型
層次資料庫模型
邏輯樹結構,由在邏輯樹結構中相關聯的記錄和欄位組成
樹狀結構包含許多分支,每個分支又具有許多葉子或資料字段
訪問需要明確路徑, 不適合經常更改,適合經常性查詢
範例:輕量級目錄存取協定LDAP、登錄機碼結構
網狀資料庫模型
用有向圖表示實體類型及實體間聯繫。 類似網狀的冗餘結構,非嚴格樹狀結構
每個資料元素擁有多個父節點和子節點
與層次模型相比檢索速度更快
關係資料庫模型
特點:屬性/欄位(列)和元組/記錄(行)
笛卡兒積的組合
主鍵和外鍵
主鍵能唯一識別一筆記錄
外鍵:如果一個表中的某個屬性值與另一個表中的主鍵相符, 並且建立了某種關係,那麼這個屬性就視為外鍵
基本組件:
資料定義語言(DDL)
定義資料庫的架構(Structure)和資料架構(Schema)
結構:說明表格的大小、鍵的位置、視圖和資料元素關係
架構:描述資料庫儲存和操作的資料類型及其屬性
定義資料庫的機構、存取操作和完整性過程
資料操作語言(DML)
使用者操作命令
資料控制語言(DCL)
建立使用者存取和授權對象
查詢語言(QL)
對資料庫提出查詢請求
報表產生器
使用者定義方式的資料流程輸出
(RDBMS) 關係完整性
實體完整性 (Entity integrity)
每一筆記錄由主鍵值唯一決定
語意完整性 (Semantic integrity)
保證結構化規則和語意規則得到遵守, 防止語意不正確的資料進入資料庫。 可以透過規則約束的規則來實現
(參照)引用完整性 (Referential integrity)
任何資料庫記錄都不能引用一個不存在的主鍵, 如果一個包含有主鍵的記錄被刪除了, 所有被引用的記錄都必須刪除掉。 (外鍵)
資料字典:
是一種描述資料元素及其關係的中心庫, 可儲存資料用法、資料關係、資料來源和資料格式等關鍵訊息
資料字典是一個控制資料庫資料的集中管理部分, 描述了資料元素和資料庫間的交叉引用
描述資料元素定義、模式物件和引用鍵的集合
模式物件包括表格、檢視、索引、流程、函數和觸發器
資料管理軟體讀取資料字典,確定模是否存在,並檢查特定 使用者進程的存取權限,也定義了對每個使用者的視圖權限設置
需要增加新記錄、表格、檢視或模式時,更新資料字典
物件導向資料庫模型
將物件導向程式設計中的物件資料模型與DBMS結合在一起, 可儲存影像、語音、視訊等資料。
物件導向的資料庫使用類別來定義其物件的屬性和過程
物件-關聯式資料庫模型
資料庫程式設計介面
開放資料庫互連,ODBC
物件連接和嵌入資料庫,OLEDB
ActiveX資料對象,ADO
Java資料庫互連,JDBC
資料庫漏洞和威脅
完整性 (integrity)
復原
終止目前事務,取消更改,恢復前一狀態
提交
提交,終止目前事務,執行使用者進行的修改, 如果無法執行成功則回滾
保存點/檢查點 (check point)
如果偵測到錯誤,使用者可以返回相應的位置。
應對並發操作的威脅使用鎖定機制
聚合 (Aggregation)
有些資訊片段分開時並不敏感,但放在一起就敏感。
解決方法
嚴格控制聚合函數的訪問
禁止使用者直接存取數據,可以透過視圖方式
推理 (Inference)
聚合想要達到的結果
推理得不到顯示可用的信息
解決方法:
存取控制
基於內容相關的存取控制
基於上下文相關的存取控制
單元抑制 (Cell suppression)
用於隱藏特定單元的技術
資料庫分割 (database partition)
將資料庫分成不同的部分
噪音和擾動 (noise and perturbation)
在資料庫中插入偽造資訊的技術
資料庫視圖
多實例 (MRDBMS)
建立具有相同主鍵的多個元組和 由安全等級定義的實例之間的關係
死鎖 (DeadLocking)
其他威脅
資料庫
線上事務處理,OLTP
ACID原則
原子性(Atomicity)
要么所有修改都提交,要么資料庫回滾
一致性(Consistency)
遵循資料庫完整性, 保證不同資料庫中資料的一致性
隔離性(Isolation)
交易之間互不影響
持久性(Durability)
一旦提交無法進行回滾
線上分析處理,OLAP
OLAP是資料倉儲系統的主要應用
適用於決策人員和高階主管
資料倉儲與資料探勘
為了實現資訊檢索和資料分析, 將多個資料庫或資料來源組合成一個大的資料庫
資料探勘
分類:根據共同的相似性對資料分組
可能性:標識資料之間的相互依賴關係, 並將可能性應用與他們之間的關係
專家系統
基於規則的編程
規則基於if-then邏輯單元
組成
推理機
推理機提供使用者介面、外部文件、計劃和程序存取能力
知識庫
知識庫包含特定問題或領域相關的數據
專家系統通常被 IDS 用於自動審查安全日誌
人工神經網絡
基於人腦神經結構的電子模型
大腦以模式的形式儲存訊息
當學習到某個事物並經常使用時, 到資訊儲存單元的連接路徑就會加強
神經網路被設定位擁有決策和學習能力, 透過大量的試探和錯誤決策過程改善其功能
威脅
緩衝區溢位 (Buffer Overflow)
隱蔽通道 Convert Channel
計時(timing)
儲存(storage)
記憶體重用/物件重用 (Memory reuse/Object reuse )
社會工程學
Trapdoor/Backdoor (陷門/後門)
欺騙攻擊 (spoofing attack)
web安全
故意破壞
用修改過的圖片和標題取代核發圖片和標題
認知與現實
金融詐欺
虛擬環境下的服務和交易的欺騙
特權訪問
限制特權使用者的訪問
盜竊交易訊息
盜竊智慧財產權
拒絕服務攻擊
特定安全
資訊收集
管理介面
身份驗證與存取控制
配置管理
輸入確認
參數確認
會話管理
SAML
SAML 安全斷言語言(Security Assertion Markup Language), 是一個基於XML的協定。 是一個聯合身分標準。 用於在不同安全域傳送身份驗證和授權訊息,可用於實現單一登入。 類似於Kerberos依賴KDC,SAML依賴IDP(Identity provider)。 SAML有一項功能叫策略執行(policy enforcement)。
OAuth2.0
OAuth(開放授權)是一個開放標準, 允許用戶讓第三方應用程式存取該用戶在某一網站上儲存的私密的資源(如照片,視頻,聯絡人列表), 而無需將使用者名稱和密碼提供給第三方應用程式。
原先的OAuth,會發行一個 有效期非常長的token(典型的是一年有效期或者無有效期限制),在OAuth 2.0中,server將發行一個短有效期的access token和長生命期的refresh token。這將允許客戶端無需用戶再次操作而獲取新的access token,並且也限制了access token的有效期
行動程式碼
java applet
java語言由字節碼構成,java虛擬機 將其轉換成機器能夠辨識的機器碼。
applet運作在沙箱 (沙箱有助於實現最小授權, 是應對惡意程式碼攻擊的有效手段 替代防毒軟體)
ActiveX控件
惡意程式碼
病毒
特點:繁殖和破壞,需要宿主
巨集病毒
引導區病毒
可以刪除引導區的資料或重新引導區
壓縮病毒
自身附加在可執行程式上,並使用使用者的權限進行壓縮
隱蔽性病毒
隱藏他對文件盒引導記錄所做的修改
變形病毒
製作變化的,但仍然可用的自身副本
透過雜訊或偽造指令,變異引擎和隨機數 生成器來改變指令順序,逃避偵測
分離病毒
同時感染硬碟引導區和執行檔
自亂病毒
透過打亂自身程式碼來逃避防毒軟體偵測
腳本病毒
隧道病毒
將自己安裝在防毒程式下,防毒軟體 偵測病毒時,七攔截這個調用
蠕蟲
可以不需要宿主自我複製
透過郵件、web站點下載等傳播
殭屍網路
殭屍程式是一種惡意軟體,是一段潛伏 的程式碼
特洛伊木馬
一種偽裝成另外一個程序的程序
rootkit
邏輯炸彈
特定事件發生時,邏輯炸彈被執行
防毒軟體
特徵性檢測法 (signature)
啟發式偵測 (heuristic) 偵測到異常行為
可疑性計數器
有的防毒軟體可疑創建一個沙盒, 動態分析可疑程式碼
分類:
審查一段程式碼有關的資訊稱為靜態分析法
允許一部分程式碼在虛擬機器中運作則稱為動態分析法
免疫程序
針對某種病毒,使其認為已被感染。
行為阻止器
防毒程式
透過行政、物理和技術方法來防止病毒
垃圾郵件偵測
貝葉斯過濾
拒絕服務攻擊 (DOS) (看起來是正常的活動)
特點
消耗受害者的網路頻寬
消耗受害者的資源
分類
smurf攻擊
利用ICMP協議的缺陷
fraggle攻擊
利用UDP協定的缺陷
smurf和farggle是兩種利用協議缺陷和 使用放大網路發動DoS的例子
SYN洪氾攻擊
利用TCP連線的三次握手
超過了連接隊列的上限
淚滴攻擊
利用發送很小的分片包來利用這個設計缺陷
分散式阻斷服務攻擊 (DDOS)
下水道(sinkhole)路由是應對DDOS的方法之一
評估軟體安全的有效性
認證和認可
作用
透過最佳實務管理、操作的和技術的安全控制措施的應用將資訊安全能力植入到聯邦資訊系統中
透過不斷強化監控流程維持資訊系統的安全狀態意識
提供高階領導推進決策的重要訊息,包括關於組織維運風險的接受,以及資產、個人、其他組織或國家由資訊系統使用和維運所引起的風險;
變更的審計和日誌
資訊審計作用
審計程序輔助檢測任何異常活動
審計層級和審計類型依賴於安裝軟體的審計要求以及系統處理或儲存資料的敏感度
系統資源可用時應受到保護
日誌審計的作用
建立基線的必要性
不同伺服器和系統的績效
應用的功能與維運問題
有效的入侵偵測
取證分析
符合各種法律法規
資訊的完整性
應用程式對比或協調所處理的與所期望處理的
對照總計
檢查序號
資訊的準確度 (應用控制)
檢查輸入的精確性: 應在適當的應用程式中整合資料驗證和校驗檢查
字元檢查(Character checks): 比較輸入字元和期望字元類型,如數字或字母
範圍檢查(Range checks): 驗證輸入資料比較預訂的上限與下限
關係檢查(Relationship checks): 比較輸入資料與主記錄檔案中的資料
合理性檢查 (Reasonableness checks): 對比輸入資料與所期望的標準,其他形式的完整性檢查
交易限制(Transaction limits): 檢查輸入資料比較制定交易中管理設定限制
風險分析和緩解
風險管理
風險管理是持續的過程,跨越整個專案的生命週期
風險管理流程包括風險的規劃、識別、分析、監控和控制
風險的識別開始於專案啟動之前,風險的數量隨著專案不斷成熟而逐漸增多
風險記錄過程包括風險緩解和持續性計劃
風險降低步驟能夠降低事件發生的可能性,風險緩減會產生費用,需要進行成本效益分析;
持續性計劃或在事件發生之時或之前採取的一系列活動,計劃可以是在風險發生之前先發製人活動或是在風險發生之後活動
風險分析和降低策略
整合到SDLC流程以及組織的變更管理流程中
使用標準化的風險評估方法以及將風險回報給利害關係人
追蹤和管理在評估、變更管理和持續性監控所發現的弱點
糾正性行為-補丁管理
基礎設定
研究
MD5比較指紋和數位簽名
文件完整性檢查
評估和測試
測試環境中測試補丁
緩解(“回滾”)
部署(“首次展示”)
現在不太關鍵的系統上部署
的確證、報告和日誌記錄
補丁更新日誌,記錄存檔
測試和驗證
實施風險控制措施需要進行測試
安全評估人員或其他獨立實體驗證和確認所需驗證的漏洞
在大型組織
獨立的驗證和確認(independent verification and validation (IV&V))團隊來決定安全問題和漏洞是否已解決
開發和系統所有者不能在沒有獨立實體同意的情況下授權宣告風險已被消減
程式碼簽名(Code signing)
程式碼簽章(Code signing)被用來保證程式碼的完整性的技術,確定誰開發那段程式碼,並確定開發者打算將這段程式碼用於何處
代碼簽名證書和數位證書可幫助用戶免於下載洩密文件或應用程式
當程式碼被簽名可以確定程式碼的可靠性並檢測帶是否被開髮展之外的人所修改
代碼簽名用於
確保程式碼片段不被修改
識別程式碼來源(開發著或簽署者)
確定程式碼是否值得為特定目標的信任
程式碼簽名包含三個部分
印章、數位憑證和唯一標示符
程式碼簽名不能做的事情
不能保證程式碼片段免於安全漏洞
不能保證在執行過程中APP不會載入不安全或更改的程式碼(如不可行的外掛程式)
不是數位版權管理(DRM)或拷貝保護技術
回歸和接受測試 Regression and Acceptance Testing
測試注意事項
迅速的測試Bug
觀察修補的副作用
為每個Bug修補編寫回歸測試方案
如果兩個或多個測試相似,確定哪個較為低效並捨棄
識別測試方案並持續的將其傳遞和歸檔
專注於與功能問題而不是設計相關
確定資料的變更(無論大小)以及找到任何由此產生的破壞
追蹤在程式記憶體上變更的影響
回歸測試
最有效的方法是基於可以在新版本建立時每次都能執行的標準測試案例池所組成的測試庫
建立測試庫的困難在於確定包含什麼樣的測試案例
自動化測試和測試案例一樣涉及邊界條件以及時機都屬於測試庫
為了自動化測試的有效性,作為複雜測試方法論的一部分,當整合足夠的變數時是符合成本效益和效率
接受性測試 (驗收測試)
執行的正式測試來確定係統是否滿足其接受標準以及使得客戶能確定是否接受該系統
在敏捷開發中,可接受性測試/標準通常由業務客戶建立以及業務領域的語言所描述
SwA(software assurance)的階段 (確保開發或購買的軟體達到安全要求 SAMM Software Assurance Maturity Model SAMM is a framework used to design software that is secure and tailored to an organization’s specific risks.)
計劃階段
取得軟體服務或產品所確定的需求,識別潛在替代軟體的方法,識別替代的風險
開發需求被納入工作說明書中
建立獲取策略並包含識別與各種軟體獲取策略相關的風險
發展評價標準和評價計劃
招標階段
建立/發布具有工作說明、邀約人說明、條款和條件、資格預審以及認證的請求書或招標書(RFP),
評估供應商回應建議書(RFP)或招標文件 (ITT) 所提交的方案
完成合約協商包含條款和條件的變更
監督和接受階段
這個階段主要是監控供應商工作以及接受合約所約定的最終服務或產品交付
建立並同意合約工作日程
實施變更控製程序
評審和接受軟體交付
後續(follow-on)階段
維持(包含風險管理、保障用例管理以及變更管理)
處置和下線
在後續階段,軟體風險必須透過持續保證用例分析管理並且被調整以降低風險
安全專家必須確保在企業中具有詳實記錄的SwA策略以及流程
意外錯誤導致錯誤的維
故意插入惡意程式碼
盜竊重要或敏感的訊息
盜竊個人資訊
變更產品,插入代理或破壞訊息