SDL安全設計工具,一款支援多人協作實施威脅建模的微信小程式

  • 2019 年 11 月 20 日
  • 筆記

SDL安全設計工具,一款支援多人協作實施威脅建模的微信小程式

楔子

痛點

威脅建模活動組織方法

道具

使用方法

要點

使用示例

多人

單人

Q&A

其他遊戲

參考閱讀

致謝

Shingle,音[ˈʃɪŋɡl],是世界上第一款(唯一?)用於安全威脅評估的微信小程式,方便團隊開展STRIDE建模,支援項目嚮導、中英文以及多人協作。

楔子

對於任何安全工具的使用不要拘泥於現有的用法,本微信小程式並不是簡單羅列安全評估的步驟要點,而是進一步研究安全的出發點和供這種研究使用的方法,甲方安全的不要有乙方思路。推行SDL的工作中必須考慮面臨的實際情況、現實的確切事實,而不是抱住中國外某些公司的"最佳實踐"觀念不放(根本沒有什麼是"最佳實踐"),只知道從公式、方法論出發、思想僵化,而不是從實際中具體情況具體分析,是做好不了安全設計的。從業務中來,到業務中去需要精心分析需求,然後把業務所不清楚的安全因素集中起來分析,問題找對了,辦法就有了,然後為集中精力為業務賦能,把安全視為產品具備的基本屬性,同業務方反覆做宣傳、解釋,使業務學習-提升-學習,堅持下去,見之於行動,無限循環。

痛點

筆者越來意識到威脅建模不應當是安全專家閉門造車畫出一系列DFD(數據流)圖後,對業務人員拿出報告說:系統有XX威脅,會帶來XX風險,這裡有XX措施,解決他們!現代軟體開發的威脅建模環節應當是敏捷和集成的,可以同其他團隊建立協作共同實現安全。筆者聯想到《威脅建模:交付和設計更安全的軟體》書中提到的微軟發明的紙牌"許可權提升遊戲"的思路,嘗試開發出一套用於威脅建模的微信小程式為各位軟體安全從業人員提供輔助,團隊成員按照教程指引,可以方便實施威脅建模,回溯歷史模型幫助設計、開發、測試人員思考系統在設計階段會出現哪些問題,然後將重點資源聚焦在需要消減的威脅上,而不是被動等著滲透測試和安全審計,安全不是黑白盒測試出來的,是設計開發出來的。經常性的威脅建模可以鍛煉信心,培養配合和技術的熟練度。線上線下結合評估的維度不會泄露企業敏感資訊,可以放心使用小程式服務。

威脅建模活動組織方法

道具

黑筆、白板、本微信小程式、會議紀要、筆記型電腦、大腦

使用方法
  1. 白板畫出基本準確的軟體系統設計架構,確保團隊成員均清楚了解數據流向;
  2. 盡量每十五分鐘內,獨立使用小程式選取卡片,質疑每個模組是否具備STRIDE威脅;
  3. 選定小程式里的對應的威脅卡片和上面的分數,成員離手,保存。
  4. 討論階段:
    1. 玩法一、陳述卡片上威脅和模組節點對應的理由、打分的依據,使用四種計算方法衡量打分。
    2. 玩法二、互相不讓看到選擇的分數,每人選擇一張卡片,卡片上的數據代表分數,J-A是11-14,A表示發現一種新的模式。說服別人,每輪卡片得分最高者勝。
    3. 安全、開發、架構組分別使用一套卡片參與,當然全部人員也可以使用同一套卡片,卡片是足夠的。反覆充分討論現有架構設計的每個場景面臨的威脅。
    4. 以信任邊界、數據、資產是什麼、哪裡可能出錯、如何應對、該如何做得更好四個角度記錄下來威脅。
    5. 接近討論完成後,隨機選取一張表示威脅卡片,再一次以項目整體思考是否還可以將卡片應用在系統中。
  5. 對每個威脅,給出綜合的策略和處置辦法。
  6. 在下一個迭代時,反覆執行。
要點
  • 確保在會議室的小夥伴們了解微軟STIDER威脅、DREAD評估、owasp top10機制。
  • 但是不要糾結於威脅具體分到哪個類,既然已經發現了,記錄下就是了。
  • 會議主持人聚焦結構化思考,積極討論也要注意糾偏,不要考慮執行和排期。

使用示例

多人

背景:假設企業要進行上雲時的安全評估

  1. 項目相關人畫出系統示意圖:
  1. 與會人員打開微信小程式,組織人創建一個project,示例叫做aliyun 20190526,
  1. 點擊create後,分別開始STRIDE六個方面的威脅建模,可以微信轉發乾系人,邀請加入此環節的討論。
  1. 與會者各自思考,根據認定威脅級別,點擊對應的打分。對於結果總分有四種計算方式:算術平均數、切尾平均數、中位數、和自定義。自定義分數的考慮是威脅尚未發生,某些場景下當然可能給出最高,需要主持人權衡。
  2. 依次完成STRIDE六個步驟的考量。得到一個項目的總分,中間的時間記錄是為了提醒參與者不要跑題,加快節奏,會議不要超過兩個小時,另外留意花費較多時間討論的威脅,往往正是項目組技術的盲區。
  1. 點擊finish完成一次評估,對應對針對威脅的處置措施達成一致,散會。
  1. 下個迭代或者需求、程式碼有變動時,再舉行一次會議,橫向比對威脅分數的收斂變化。
單人

打開微信小程式,花費幾分鐘進行一番評估,改進函數對外的暴露、對內調度的安全性,擁有了體系化防禦的概念。

Q&A

  • Q:小程式的license和商業使用範圍? A:程式基於MIT協議,卡牌圖片時微軟發明的,版權基於https://creativecommons.org/licenses/by/3.0/us/ ,你可以分享、售賣、用於商業產品開發活動。
  • Q:和攻擊框架和滲透測試思路可以結合起來嗎? A:Forget That Poor ATT&CK !不要像攻擊者一樣思考,因為你們資訊不對稱,建模結果會錯誤,如果團隊黑客較多,請用攻擊樹和攻擊庫。
  • Q:我想提出建議? A:請直接點擊"吐個槽吧"鏈接,或者在關聯的公眾號內留言
  • Q:為什麼'Project'不能刪除? A:你沒有那麼多項目需要評估,認真對待每一次活動,力求達到準確。
  • Q:威脅建模和威脅情報是一回事嗎? A:完全沒有關係,前者側重主動訓練和解決問題,後者被動提供響應和情報資訊。建模不能提供應急、關聯攻擊者能力,但是可以推動組織和項目層面的軟體安全戰略。
  • Q:下個版本還有什麼計劃? A:可能考慮將Private,隱私納入評估模型中,基於資訊差概念來保護Information的安全將被Data Technology取代,另外性能、流暢性、前端介面仍需要大量調整,創建任務有時會卡住。

其他遊戲

其實國外涉及安全的桌游有不少,如果能寓教於樂,我們的工作定會輕鬆不少。:)

CIA: Collect It All 這個遊戲是一款基於CIA遊戲Collection Deck的競技紙牌遊戲。玩家扮演的角色是收集情報並在多輪次序中處理安全威脅。每一輪開始時都會手上拿滿智力戰術,並且必須制定策略以成功化解各種危機。戰術和危機都包含政治,軍事,經濟和武器方面。

Cyber Threat Defender(CTD)是一款多玩家可收集的紙牌遊戲,旨在教授重要的網路安全資訊和策略。無論技術水平如何,CTD都是一款易於玩耍,引人入勝的遊戲。玩家必須保護自己免受攻擊,同時建立強大的網路,成為真正的網路威脅防禦者!

GAP,一款提高關於密碼意識的遊戲 是一篇論文,「探討嚴肅遊戲的潛力,教育用戶了解對密碼安全產生負面影響的各種功能。具體來說,我們設計了一款名為GAP的基於網路的休閒遊戲並評估其影響通過與119名參與者進行比較用戶研究。研究結果顯示,參與GAP的參與者在識別不安全密碼功能方面表現出比未玩GAP的參與者更好的表現。除了具有教育價值外,大多數參與者還發現GAP十分有趣「。

Operation Digital Chameleon:紅隊和藍隊制定攻擊和防禦策略,以探索關鍵基礎架構的IT安全性,作為為期2天的IT安全培訓的一部分。該遊戲的目的是提高IT安全專家和IT專業人員(如CERT團隊,CIO,風險經理,管理員)的IT安全意識。由Andreas Rieb開發。

owasp有個類似的項目cornucopia,叫做聚寶盆?本意象徵豐饒,意象是哺育宙斯神的羊的角內呈現滿溢的鮮花、水果等。訪問是https://www.owasp.org/index.php/OWASP_Cornucopia,卡片也是13張,A-K,此外還有大小王,內容主要來源是安全編碼實踐,包括數據校驗和編碼、認證、會話管理、授權、加密、其他。

參考閱讀

中國的關於威脅建模的實踐不多,大廠又不願獻寶,adam的書《威脅建模:設計和交付更安全的軟體》只有第二、三、四、七、十一、十七章節可讀,其他章節可以不看。我認可推薦的材料是:

  1. https://mp.weixin.qq.com/s/kV2nXuBywUnkj_VWA7CftQ
  2. https://docs.microsoft.com/zh-cn/azure/security/azure-security-threat-modeling-tool-threats
  3. https://www.secrss.com/articles/3298
  4. https://msdn.microsoft.com/zh-cn/magazine/dd347831.aspx
  5. https://xz.aliyun.com/t/2061

致謝

感謝Darrick、″ `мч'|哆、他們製作的scrum敏捷項目主框架對我幫助很大;感謝星空與飛鳥,他參與了大量內測並提出了重要的改進建議,感謝淡藍色的憂傷幫我定位到功能缺陷。

Tags: