CISSP複習筆記-第10章 軟件開發安全

CISSP複習筆記-第10章 軟件開發安全

10.4 軟件開發生命週期

  • 軟件開發生命週期的幾個階段
    1. 項目啓動
    2. 功能設計分析和規劃
    3. 系統規範設計
    4. 軟件開發
    5. 測試
    6. 安全/實現
    7. 操作/維護
    8. 處理

10.4.2 需求收集階段

  • 安全方面,這個階段應該完成下列工作
    • 安全需求
    • 安全風險評估
    • 隱私風險評估
    • 風險級別驗收

10.4.3 設計階段

  • 從安全角度講,下列事項也應該在這個階段完成
    • 攻擊面分析
    • 威脅建模

10.4.5 測試/驗證階段

  • 測試類型
    • 單元測試:個體組件位於一個受控的環境中,編程人員在這裏確證數據結構、邏輯和邊界條件
    • 集成測試:驗證組件是否按設計規範中概述的那樣協同工作
    • 驗收測試:確保代碼滿足客戶的需求
    • 迴歸測試:進行系統變更後重新測試,以確保功能性、性能和保護級別

10.4.6 發佈/維護階段

  • 驗證(verification):判斷產品是否準確體現和滿足了產品規範
  • 確證(validation):判斷產品是否爲所針對的實際問題提供了必要的解決方案

10.6 軟件開發模型

  • 邊做邊改模型:預先沒有真正的計劃,一般是在軟件發佈後被動地處理缺陷,形式主要爲打補丁和升級
  • 瀑布模型:是一種順序方法,它要求每個階段完成後下一個階段纔可以開始,很難整合變更,也不靈活
  • V模型:強調在各個階段開展驗證和確認,同時要求在項目全過程開展測試工作,而不能僅僅在項目結尾開展
  • 原型模型:爲了概念驗證目的創建樣品或代碼模型
  • 增量模型:可以在同一個軟件的整個開發階段並行多個開發週期,每個階段都能提供一個可用的軟件版本
  • 螺旋模型:它使用了迭代方法,強調每次迭代都要進行風險分析,通過使用靈活的演化方法可允許客戶反饋集成到開發中來
  • 快速應用開發(Rapid Application Development,RAD):爲了加速軟件開發過程,進行整合原型和迭代開發過程
  • 敏捷模型:它採用了迭代和增量開發過程來鼓勵團隊協作,用靈活性和適應性代替了嚴格的過程結構

10.7 能力成熟度模型

  • 理論前提:軟件產品的質量與軟件開發和維護過程的執行質量直接相關
  • 能力成熟度模型(Capability Maturity Model,CMM):描述了軟件開發流程的基本規程、原則和實踐
  • 軟件開發公司的產品開發過程由第三方公司認證
  • 成熟度級別
    • 初始(initial):開發過程很隨意,甚至非常混亂
    • 可重複(repeatable):正式的管理結構、變更控制和質量保證
    • 定義(defined):有正式流程,其中描述和定義了在不同項目中的過程
    • 管理(managed):公司有一個正式的過程,可以收集和分析定性數據
    • 優化(optimizing):公司對持續改善過程有了預算和整體計劃

10.9 編程語言和概念

  • 機器語言(machine language):計算機和處理器可以理解的語言
  • 彙編語言(assembly language):低級編程語言,機器級別指令的符號表示
  • 高級語言(high-level language):使用抽象描述把多個彙編語言指令集歸爲一個高級語句
  • 非常高級語言(very high-level language):同等功能代碼量比第三代少10倍,允許在特定環境中直接編程
  • 自然語言:人工智能

10.9.1 彙編程序、編譯器和解釋器

  • 彙編程序(assembler):將彙編語言源代碼翻譯成機器代碼
  • 編譯器(compiler):把高級語言語句轉換成所需要的機器可以理解的形式,從而使得特定處理器能夠理解
  • 工具解釋器(interpreter):把高級代碼轉換成機器代碼

10.9.2 面向對象概念

  • 內聚(cohesion):反映某個模塊能夠執行多少種不同類型任務的術語
  • 耦合(coupling):表示一個模塊完成其任務需要進行多少交互

10.10 分佈式計算

10.10.1 分佈式計算環境

  • 分佈式計算環境(Distributed Computing Environment,DCE)
    • 開放軟件基金會(Open Software Foundation,OSF)開發
    • 使用通用唯一標識符(Universal Unique Identifier,UUID)
    • 在網絡層之上建立軟件層,併爲軟件層上的應用程序提供服務
  • 分佈式組件對象模型(Distributed Component Object Model)
    • 微軟開發
    • 使用全球唯一標識符(Globally Unique Identifier,GUID)
    • 與DCE提供大量相同的特性

10.11 移動代碼

  • Java applet:編程人員已經找出方法編寫能夠訪問用戶硬盤和系統資源的applet代碼,而這些資源本來應該受Java安全機制保護

10.13 數據庫管理

10.13.2 數據庫模型

  • 數據庫模型
    • 關係數據庫模型(relational database model):使用屬性(attribute,列)和元組(tuple,行)來包含和組織信息;行數又稱cardinality,列數又稱degree
    • 層次數據庫模型(hierarchical database model):組合了在邏輯樹結構中相關聯的記錄和字段,每個元素只有一個父節點,最常用的層次模型實現爲LDAP
    • 網絡數據庫模型(network database model):每個元素可以有多個父節點
    • 面向對象數據庫模型(object-oriented database):可以設計爲管理多種不同類型的數據(如圖像、語音、文檔和視頻)
  • 面向對象的數據庫管理系統(Object-oriented Database Management System,ODBMS):比關係數據庫更具有動態性
  • 對象-關係數據庫管理系統(Object-Relational Database Management System,ORDBMS):具有以面向對象編程語言編寫的軟件前端的關係數據庫,這種前端軟件允許提出請求的應用程序和數據庫中的數據使用業務邏輯過程

10.13.4 關係數據庫組件

  • 模式(schema):用由數據庫管理系統支持的正式語言描述的數據庫結構
  • 數據字典:數據元素定義、模式對象、引用鍵的集中式集合,可以包含列的默認值、完整性信息、用戶的姓名、用戶的權限和角色以及審計信息
  • 數據定義語言(Data Definition Language,DDL):定義模式
  • 數據操作語言(Data Manipulation Language,DML):檢查數據和定義如何操作數據庫內數據
  • 數據控制語言(Data Control Language,DCL):定義數據庫內部組織
  • 查詢語言(Query Language,QL):定義用戶能夠訪問數據庫內數據的查詢
  • 主鍵(primary key):一條記錄的唯一標識符
  • 外鍵(foreign key):一個表中的某個屬性值與另一個表中的主鍵相匹配,並且兩者之間建立了某種關係

10.13.5 完整性

  • 併發(concurrency):不同用戶和/或不同應用程序同時訪問
  • 語義完整性(semantic integrity):保證機構化規則和語義規則得到遵守,例如數據類型、邏輯值、唯一性約束等
  • 參考完整性(referential integrity):所有的外鍵都參考現有的主鍵
  • 實體完整性(entity integrity):元組由主鍵值唯一確定

10.13.6 數據庫安全問題

  • 聚合(aggregation):用戶不具有訪問特定信息的許可或權限,但是卻具有訪問這些信息的組成部分的權限
  • 推理(inference):通過聚合瞭解到的部分而演繹(deduce)全部信息
  • 內容相關訪問控制(content-dependent access control):基於數據的敏感度
  • 上下文相關訪問控制(context-dependent access control):軟件根據請求的狀態和順序來“瞭解”應當允許哪些動作
  • 推理攻擊防範措施:
    • 單元抑制(cell suppression):一種用於隱藏特定單元的技術
    • 分割(partitioning):將數據庫分成不同的部分,這可以使未授權用戶很難訪問到能夠用於推理攻擊的相關數據
    • 噪聲和擾動(noise and perturbation):在數據庫中插入僞造信息,誤導和迷惑攻擊者
    • 如果數據庫在規劃和開發過程中沒有將安全集成進來,作爲替代需要開發一個可信前端

1. 數據庫視圖

  • 由join、project、select操作生成
  • 數據庫可以利用DAC和MAC顯示不同視圖

2. 多實例(polyinstantiation)

  • 建立了具有相同的主鍵的多個元組和有安全級別定義的實例之間的關係
  • 通過建立另一組數據迷惑低級別用戶,而不是僅僅限制信息的訪問

3. 聯機事務處理(Online Transaction Processing,OLTP)

  • 檢測問題以及在問題發生時立即進行適當處理的機制,主要目標:確保事務處理正確發生或者不發生
    • 進程停止運作:試圖重啓該進程
    • 進程不能重新啓動:對應的事務處理將會回滾
    • 錯誤/無效的和成功的事務處理、事務處理前和處理後,都將寫入日誌
    • 分佈式數據庫需要通過ACID測試
    • 原子性(atomicity):將事務處理分成多個工作單元,並且確保所有修改都生效或者沒有一個修改生效;要麼所有修改都提交,要麼數據庫回滾
    • 一致性(consistency):事務處理必須遵守爲特定數據庫制定的完整性策略,並且確保在不同數據庫中的所有數據的一致性
    • 隔離性(isolation):事務處理完全隔離執行直至完成,同時事務處理之間互不影響;在事務處理完成之前,修改的結果不會生效
    • 持久性(durability) :一旦事務處理在所有的系統上都被驗證爲是正確的,它就會被提交,並且數據庫無法回滾

10.13.7 數據倉庫(data warehouse)與數據挖掘(data mining)

  • 數據挖掘也稱爲數據庫知識發現(Knowledge Discovery in Database,KDD),用於發現模式的3種方法:
    • 分類:根據共同的相似性對數據分組
    • 可能性:標識數據之間的相互依賴關係,並將可能性應用於他們的關係
    • 統計:標識數據元素之間的關係,並使用規則發現

10.14 專家系統(expert system)和知識性系統(knowledge-based system)

  • 基於規則的編程(rule-based programming)是開發專家系統的通用方法,規則基於if-then邏輯單元,專家系統尋找模式的方法稱爲模式匹配(pattern matching)
  • 推理機(inference engine)可以自動匹配事實和模式,並決定哪一條規則可用
  • 知識庫包含於特定問題或者領域的相關數據
  • 通常被用於IDS自動檢查安全日誌

10.16 惡意軟件

10.16.1 病毒

  • 可以感染應用程序的一個小程序或者一串代碼
  • 主要功能是複製,病毒不能進行自我複製,需要藉助一個宿主應用程序
  • 利用受害人地址簿自我發送的病毒:ILOVEYOU、Melissa、Naked Wife
  • 宏病毒(macro virus):使用Word Basic、Visual Basic、VBScript編寫的與平臺無關的病毒,通常應用在Microsoft Office產品中
  • 引導區病毒(boot sector virus):可以刪除引導區內的數據或者以新的信息重寫引導區

10.16.2 蠕蟲

  • 不需要宿主程序就進行自我複製,例如Stuxnet

10.16.3 rootkit

  • 一組被放置在受感染系統中的工具,以備將來使用

10.16.6 邏輯炸彈(logic bomb)

  • 當特定事件發生時,邏輯炸彈會執行某個程序或者一段代碼,例如刪除整個數據庫或所有數字證據

10.16.7 特洛伊木馬(Trojan horse)

  • 僞裝成另一個程序的程序,背後進行惡意活動,包括破壞用戶文件、將用戶密碼或文件發送給攻擊者、向其他計算機發起攻擊
發佈了72 篇原創文章 · 獲贊 34 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章