軟件安全培訓課件_第1頁
軟件安全培訓課件_第2頁
軟件安全培訓課件_第3頁
軟件安全培訓課件_第4頁
軟件安全培訓課件_第5頁
已閱讀5頁,還剩73頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件開發安全性設計信息工程事業部袁洋 2013.05主講內容軟件安全的概念安全漏洞風險管理框架安全開發生命周期軟件安全的七個接觸點軟件安全的概念第一部分許多關鍵基礎設施取決于計算機安全關于軟件安全的相關報道軟件安全的概念出現軟件故障現象的原因是軟件存在漏洞。“任何軟件,不論它看起來是多么安全,其中都隱藏漏洞”。軟件安全的目的是盡可能消除軟件漏洞,確保軟件在惡意攻擊下仍然正常運行。報告給CERT/CC的與安全相關的軟件弱點軟件安全問題加劇的三個趨勢互聯性多數計算機與Internet相連多數軟件系統互聯于Internet可擴展性通過接受更新或者擴展件使系統升級復雜性代碼行數增加、網絡式、分布式Wi

2、ndows操作系統復雜性安全漏洞第二部分安全漏洞安全漏洞安全漏洞所有的軟件都存在潛伏的漏洞安全必須經過長時間實際運行證明軟件安全漏洞可分為兩大類:設計漏洞實現漏洞設計漏洞示例Microsoft Bob是作為Windows ME和Windows 98的輔助程序而設計的,其中包含一個設置系統密碼的工具。當用戶試著輸了三次(不正確)密碼時,Bob將彈出如下的信息:“我想你忘記了你的密碼,請輸入一個新的密碼。”然后,就允許用戶修改密碼,即使不知道老密碼。常見的安全設計問題密碼技術使用的敗筆創建自己的密碼技術選用了不當的密碼技術依賴隱蔽式安全編寫到程序中的密鑰錯誤的處理私密信息對用戶及其許可權限進行跟蹤

3、會話管理薄弱或缺失身份鑒別薄弱或缺失授權薄弱或缺失常見的安全設計問題有缺陷的輸入驗證未在安全上下文環境中執行驗證驗證例程不集中不安全的組件邊界薄弱的結構性安全大的攻擊面在過高權限級別上運行進程沒有縱深防御失效時處理不安全常見的安全設計問題其他代碼和數據混在一起錯將信任寄予外部環境不安全的默認值未作審計日志實現漏洞示例2001年的紅色代碼(Code Red)蠕蟲利用Microsoft的IIS Web服務器的軟件缺陷。字符串變量是Unicode字符類型的(每個字符占用兩個字節),在計算緩沖區的時候應該是偏移量為2,但IIS在計算緩沖區大小的時候卻按照偏移量為1錯誤的計算緩沖區。導致在14個小時內,

4、就有359000臺機器感染了紅色代碼蠕蟲。幾個常見致命安全漏洞緩沖區溢出SQL注入跨站腳本緩沖區溢出當一個程序允許輸入的數據大于已分配的緩沖區大小時,緩沖區溢出就會發生。有些語言具有直接訪問應用程序內存的能力,如果未能處理好用戶的數據就會造成緩沖區溢出。C和C+是受緩沖區溢出影響的兩種最常見的編程語言。緩沖區溢出造成的后果小到系統崩潰,大到攻擊者獲取應用程序的完全控制權。1988年,第一個Internet蠕蟲Morris蠕蟲就是對finger服務器攻擊,造成緩沖區溢出,幾乎導致Internet癱瘓。SQL注入通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務

5、器執行惡意的SQL命令。任何可以與數據庫交互的編程語言都可能出現SQL注入漏洞。SQL注入的最大的威脅是攻擊者可以獲得隱私的個人信息或者敏感數據;也可能導致服務器甚至網絡的入侵。SQL注入public static boolean doQuery(String Id) try Statement st=.; ResultSet rs=st.executeQuery(“SELECT conum FROM cust WHERE id=”+Id); while(rs.next() . catch 如果傳遞來的參數是“1 or 21 -”,則執行SQL語句: SELECT conum FROM cus

6、t WHERE id=1 or 21 -跨站腳本跨站腳本(XSS,Cross-site Scripting)漏洞是一類專門針對Web應用程序的漏洞,它會使得產生漏洞的Web服務器綁定的用戶數據(通常保存在cookie中)被泄露給惡意的第三方。所謂“跨站”是指;當一個客戶端訪問了可正常提供服務但是有漏洞的Web服務器后,cookie從此客戶端傳遞給了攻擊者控制的站點。任何用于構建網站的編程語言或者技術都可能受到影響。跨站腳本跨站腳本 . Employee ID: XSS測試語句之一: alert(document.cookie)其他致命安全漏洞格式化字符串整數溢出命令注入未能處理錯誤信息未能保護

7、好網絡流量使用Magic UPL及隱藏表單字段未能正確使用SSL和TLS使用基于弱口令的系統未能安全的存儲和保存數據信息泄露不恰當的文件訪問清新網絡域名解析競爭條件未認證的密鑰交換密碼學強度隨機數不良可用性解決軟件安全的方法Gary McGraw博士應用風險管理軟件安全的接觸點(最優化方法)知識微軟:可重復的流程工程師教育度量標準和可測量性 風險管理框架“安全就是風險管理”。風險就是在項目過程中有可能發生的某些意外事情。例如:缺少對開發工具的培訓。風險管理的關鍵:隨著軟件項目的展開,不斷的確定和追蹤風險。RMF的基本思想:隨時間變化,對軟件安全進行確定、評級、追蹤和理解。Cigital的風險管

8、理框架(RMF) 測量和報告理解商業環境1 確定商業和技術風險工件分析2綜合考慮并對風險分析3實施修復并進行驗證5定義降低風險的策略4某軟件項目的風險管理計劃項目風險管理計劃風險識別風險評估風險應對措施潛在風險后果可能性嚴重性應急措施預防措施客戶的需求不明確客戶不接受產品或拒絕付款59按照客戶的要求修改事先進行需求評審項目范圍定義不清楚項目沒完沒了89按照客戶要求變更事先定義清楚并由客戶確認項目目標不明確項目進度拖延或成本超支68修改項目目標實現明確項目目標與客戶溝通不夠軟件不能滿足客戶需求59立即與客戶進行溝通制定溝通管理計劃微軟:可信賴計算安全開發生命周期SDLC 微軟安全培訓啟動安全并注

9、冊SWI安全設計最優方法安全體系結構和攻擊面審核 威脅 建模使用安全開發工具和最優開發和測試方法為產品創建安全文檔和工具預備安全反應計劃安全推動滲透測試最終安全審核安全服務和反應執行需求設計實現驗證發行支持和服務Gary McGraw:軟件安全接觸點(最優化方法)需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作利用工具進行代碼審核 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作代碼審核所

10、有的軟件項目有一個共同的工件源代碼。大量的安全問題都是由可以在代碼中發現的簡單缺陷引起的,例如緩沖區溢出漏洞與SQL注入漏洞。代碼審核就是為了查找和修復存在于源代碼中的缺陷。代碼審核可以手工審核或者使用靜態分析工具進行審核。靜態分析工具審核速度快,并不需要操作人員具有豐富的安全專業知識。25個最危險的編程錯誤 組件間不安全的交互:這些缺陷與數據在單獨的組件、模塊、程序、進程、線程或系統之間不安全發送和接受方法有關。CWE-20:不適當的輸入驗證 ;CWE-116:不正確的編碼或輸出轉義; CWE-89:SQL查詢結構保護失敗(又名“ SQL注入”) ;CWE-79:網頁結構保護失敗(又名“跨站

11、腳本攻擊”) ;CWE-78:操作系統命令結構保護失敗;CWE-319:明文傳輸的敏感信息; CWE-352:偽造跨站請求(CSRF); CWE-362:競爭條件 ;CWE-209:錯誤消息的信息泄漏; 25個最危險的編程錯誤危險的資源管理:此類缺陷與軟件沒有妥善管理創造、使用、轉讓或取消重要的系統資源有關。CWE-119:對內存緩沖區邊界操作限制失敗 ;CWE-642:外部控制的臨界狀態數據;CWE-73:外部控制的文件名或路徑 ;CWE-426:不可信的搜索路徑; CWE-94:代碼生成控制失敗(又名“代碼注入” ) ;CWE-494:下載的代碼未進行完整性檢查 ;CWE-404:資源關閉

12、或釋放不正確; CWE-665:不正確的初始化; CWE-682:不正確的運算(如出現整數溢出等錯誤)。 25個最危險的編程錯誤可穿透的防范措施:這一類缺點與防御技術的經常誤用、濫用,或徹底忽略有關。CWE-285:不正確的訪問控制(授權) ;CWE-327:使用一個被攻破的或危險的加密算法 ;CWE-259:硬編碼的密碼 ;CWE-732:對關鍵資源的使用權限不安全的分配 ;CWE-330:使用不夠有效的隨機值 ;CWE-250:給予沒有必要的權限;CWE-602:服務器端的安全由客戶端實施。 FortifyFortify SCA是發現軟件安全漏洞隱患最全面和分析最完整的產品。它使用特有的成

13、熟的五大軟件安全分析引擎、最全面最廣泛的軟件安全代碼規則集和fortify公司特有的X-Tier Dataflow analysis技術去檢測軟件安全問題。Fortify專門的分析器 數據流分析器語義分析器控制流分析器配置流分析器結構分析器靜態分析工具FindBugs 有了靜態分析工具,就可以在不實際運行程序的情況對軟件進行分析。FindBugs 是一個靜態分析工具,它檢查類或者 JAR 文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。FindBugs 的 缺陷清單及說明。Findbugs eclipse插件使用指南 其他源代碼分析工具CoverityOunce LabsSecure s

14、oftware體系結構風險分析 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作體系結構風險分析50%的軟件安全問題是有設計瑕疵引起的。因此需要對設計和說明書進行審核分析。設計人員、架構人員和分析人員應該用文檔清晰的記錄各種前提假設,并確定可能的攻擊。安全分析人員揭示體系結構瑕疵,對它們評級,并開始進行降低風險的活動。Cigital采用的體系結構風險分析的簡單過程圖文檔攻擊圖攻擊模式安全的設計文獻進行攻擊抵抗力分析進行不確定性分析進行底層框架弱點分析文檔需求體系結構文檔規則性需求/ 工業標準

15、文檔外部資源郵件清單產品文檔攻擊模式確定一般瑕疵非編譯顯示何處沒 有遵循方針映射可實施的攻擊模式顯示體系結構中的風險和驅動程序顯示對類似技術的已知攻擊的生存能力考慮設計含義產生單獨的體系結構圖文檔統一的理解揭示不確定性確定下游的 困難度解開纏繞揭示糟糕的 可追逐性在下列位置查找和分析瑕疵COTS框架網絡拓撲平臺確定應用程序使用的服務將弱點映射到應用程序所做的假設上文檔軟件瑕疵體系結構風險評估報告編寫長度為一頁的體系結構概述 輸入 活動 輸出微軟:STRIDE攻擊模型Spoofing identity(欺騙) Tampering with data (篡改)Repudiation (抵賴)Inf

16、ormation disclosure (信息泄露)Denial of service (拒絕服務)Elevation of privilege (特權提升)49種攻擊模式使客戶端不可見把寫入專用OS資源的程序作為目標利用用戶提供的配置文件運行提高權限的命令利用配置文件的搜索路徑直接訪問可執行文件在腳本內嵌入腳本充分利用不可執行文件中的可執行代碼參數注入命令分隔符多個解析器和雙重換碼把用戶提供的變量傳遞給文件系統調用后綴NULL終止符49種攻擊模式后綴、NULL終止符和反斜線在相對路徑間來回移動客戶端控制的環境變量用戶提供的全局變量會話ID、資源ID和保密委托模擬波段內的切換信號攻擊模式片段:

17、操作終端設備簡單的腳本注入在非腳本元素種嵌入腳本HTTP頭中的XSSHTTP查詢字符串用戶控制的文件名49種攻擊模式將本地文件名傳入到參數為URL的函數中電子郵件頭中的元字符文件系統函數注入,基于內容客戶端注入,緩沖區溢出導致Web服務器錯誤分類前導幽靈字符的交替編碼在交替編碼中使用斜線在交替編碼種使用轉義斜線Unicode編碼UTF-8編碼URL編碼可替換的IP地址49種攻擊模式斜線和URL編碼組合在一起Web日志記錄使二進制資源文件溢出使變量和標記溢出使符號連接溢出MIME轉換HTTP Cookie通過緩沖區溢出來過濾錯誤用環境變量來使緩沖區溢出在API調用中的緩沖區溢出本地命令行工具中的

18、緩沖區溢出參數擴展Syslog()中的字符串格式溢出Microsoft的威脅建模軟件安全最大的原因就在于軟件使用輸入外部數據流網絡I/O遠程過程調用(RFC)外部系統查詢文件I/O注冊表命名管道,互斥、共享內存,每一個操作系統對象Windows消息其他的操作系統調用Microsoft的威脅建模威脅建模識別威脅路徑識別威脅識別漏洞將漏洞分級/排定優先級Microsoft的威脅建模識別威脅路徑識別最高風險領域,并確定相應的保護措施確定用戶訪問類別基于數據流圖進行威脅分析構造威脅路徑表風險訪問類別非常高匿名的遠程用戶高經身份鑒別的遠程用戶,且具有文件操縱能力中經身份鑒別的遠程用戶低本地用戶,且具有執

19、行權限非常低本地管理用戶用戶訪問分類示例即時消息(IM)程序服務器數據流圖IM用戶1IM用戶2驗證身份信息/ 身份鑒別帳號管理IM聊天引擎身份證明信息身份證明信息確認確認注冊注冊客戶帳號信息客戶帳號信息啟動信任信息聊天請求用戶信息聊天日志具有信任邊界的IM數據流圖IM用戶1IM用戶2驗證身份信息/ 身份鑒別帳號管理IM聊天引擎身份證明信息身份證明信息確認確認注冊注冊客戶帳號信息客戶帳號信息啟動信任信息聊天請求用戶信息聊天日志1432Microsoft的威脅建模識別威脅對于每一條威脅路徑,需要逐一理清與處理相關的每一種威脅。高風險活動 數據解析、文件訪問、數據庫訪問 生成子進程、身份鑒別、授權

20、同步或會話管理、處理私密數據 網絡訪問Microsoft的威脅建模識別漏洞清楚了高風險組件所面臨的威脅之后,下一步就是找出可能存在于這些組件中的實際漏洞。如果設計人員未能構建一些安全特性來緩解威脅,威脅就會變成一種漏洞。漏洞搜尋:詳細的安全設計審查、安全代碼審查、安全測試Microsoft的威脅建模將漏洞分級/排定優先級使用DREAD模型適用于分出威脅的嚴重程度級別的一種有效技術。DREAD代表:潛在的破壞(Damage potential)再現性(Reproducibility)可利用性(Exploitability)受影響的用戶(Affected users)可發現性(Discoverab

21、ility)軟件滲透測試 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作滲透測試(Penetration Testing)為保證軟件應用程序實現其商業功能需求,通常在軟件生命周期運行一系列的動態功能測。傳統的測試著重強調特性和功能,但安全并不是一種或一組特性,所以動態功能測試不適合直接用于安全測試。安全測試的核心就是使用白帽和黑帽的概念和方法:保證軟件的安全特性像宣傳的那樣有效,并且保證有意的攻擊也不能輕易的危及系統的安全。滲透測試(Penetration Testing)滲透測試是一種“

22、反向測試”,即安全測試人員直接和深入的探測安全風險以確定系統在遭受攻擊時的表現。 滲透測試需要以攻擊者的角度來思考問題,屬于典型的黑盒測試。滲透測試就是利用所有的手段進行測試,發現和挖掘系統中存在的漏洞,然后撰寫滲透測試報告,將其提供給客戶;客戶根據滲透人員提供的滲透測試報 告對系統存在漏洞和問題的地方進行修復和修補。滲透測試最適合于發掘配置問題和其他對軟件安全影響較大的環境因素。滲透測試工具基于網站的滲透功能:網站漏洞掃描、cookie注入等工具:IBM Rational AppScan、Php Bug Scanner 基于系統的滲透功能:系統端口或漏洞掃描等工具:nmap、X-Scan、溯

23、雪 基于數據庫的滲透功能:SQL注入、數據庫弱口令掃描工具:DSQLTools 、mysqlweak 緩沖區溢出漏洞利用工具 功能:導致系統緩沖區溢出工具:sql2 、aspcode 基于風險的安全測試 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作基于風險的安全測試風險分析,特別是在設計級中,可以幫助我們確定潛在的設計級安全問題和它們的影響。一旦風險被確定并進行了評級,就有助于指導軟件安全測試。濫用案例 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需

24、求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作濫用案例軟件開發人員傾向于根據系統在一切條件滿足的情況下的表現來描述軟件需求,這將導致以正確的使用為前提而描述系統的規范行為。如果系統會被有意濫用,為了開發出安全、可靠的軟件,就必須設法預測異常行為。濫用案例例如:對于一個工資支付系統,可能有這樣的用例“系統允許HR管理部門的用戶查看和修改所有員工的工資”、“系統只允許基本用戶查看自己的工資”。但是對于潛在攻擊者,可能會試圖獲取工資支付系統中的特別權限,以刪除所有欺詐交易的證據;或者攻擊者設法將工資支付推遲幾天以挪用由推遲產生的利息。因此,為開發安全的軟件,需要像壞攻擊者一樣思

25、考問題。濫用案例 如何創建提出一些假設,說明可能出現的問題。仔細考慮負面和意外的事件。向攻擊者一樣地考慮問題。攻擊者:企圖使軟件以某種不可預料的方式運行,以從中獲益。攻擊時經常探測的地方:邊界條件、邊緣、系統之間的通信,以及系統前提假設。聰明的攻擊者經常設法破壞建造系統的前提假設。濫用案例的目標之一:軟件應該如何對非法使用做出反應。建造濫用案例的簡單過程圖文檔需求使用案例攻擊模式可交付文檔攻擊模型 威脅 攻擊模式已評級的誤用和濫用案例 輸入 活動 輸出安全分析人員需求分析人員確定威脅文檔威脅審核威脅創建反需求創建攻擊模型審核反需求審核攻擊模型創建誤用案例分析和評級誤用和濫用案例審核已評級的誤用和濫用案例安全需求 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作軟件安全與安全操作相結合 需求和使用案例體系結構和設計測試計劃代碼測試和測試結果從應用領域的反饋濫用案例安全需求風險分析基于風險的安全測試代碼審核(工具)風險分析滲透測試安全操作軟件安全與安全操作相結合需求:濫用案例設計:商業風險分析設計:體系結構風險分析測試計劃:安全測試實現:代碼審核系統測試:滲透測試實際部署系統:配置和操作可信賴計算安全開發生命周期 微軟安全培訓啟動安全并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論