SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

Wesley13
• 阅读 617

SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序楔子痛点威胁建模活动组织方法道具使用方法要点使用示例多人单人Q&A其他游戏参考阅读致谢

Shingle,音[ˈʃɪŋɡl],是世界上第一款(唯一?)用于安全威胁评估的微信小程序,方便团队开展STRIDE建模,支持项目向导、中英文以及多人协作。

SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

楔子

对于任何安全工具的使用不要拘泥于现有的用法,本微信小程序并不是简单罗列安全评估的步骤要点,而是进一步研究安全的出发点和供这种研究使用的方法,甲方安全的不要有乙方思路。推行SDL的工作中必须考虑面临的实际情况、现实的确切事实,而不是抱住国内外某些公司的"最佳实践"观念不放(根本没有什么是"最佳实践"),只知道从公式、方法论出发、思想僵化,而不是从实际中具体情况具体分析,是做好不了安全设计的。从业务中来,到业务中去需要精心分析需求,然后把业务所不清楚的安全因素集中起来分析,问题找对了,办法就有了,然后为集中精力为业务赋能,把安全视为产品具备的基本属性,同业务方反复做宣传、解释,使业务学习-提升-学习,坚持下去,见之于行动,无限循环。

痛点

笔者越来意识到威胁建模不应当是安全专家闭门造车画出一系列DFD(数据流)图后,对业务人员拿出报告说:系统有XX威胁,会带来XX风险,这里有XX措施,解决他们!现代软件开发的威胁建模环节应当是敏捷和集成的,可以同其他团队建立协作共同实现安全。笔者联想到《威胁建模:交付和设计更安全的软件》书中提到的微软发明的纸牌"权限提升游戏"的思路,尝试开发出一套用于威胁建模的微信小程序为各位软件安全从业人员提供辅助,团队成员按照教程指引,可以方便实施威胁建模,回溯历史模型帮助设计、开发、测试人员思考系统在设计阶段会出现哪些问题,然后将重点资源聚焦在需要消减的威胁上,而不是被动等着渗透测试和安全审计,安全不是黑白盒测试出来的,是设计开发出来的。经常性的威胁建模可以锻炼信心,培养配合和技术的熟练度。线上线下结合评估的维度不会泄露企业敏感信息,可以放心使用小程序服务。

威胁建模活动组织方法

道具

黑笔、白板、本微信小程序、会议纪要、笔记本、大脑

使用方法
  1. 白板画出基本准确的软件系统设计架构,确保团队成员均清楚了解数据流向;

  2. 尽量每十五分钟内,独立使用小程序选取卡片,质疑每个模块是否具备STRIDE威胁;

  3. 选定小程序里的对应的威胁卡片和上面的分数,成员离手,保存。

  4. 讨论阶段:

  5. 玩法一、陈述卡片上威胁和模块节点对应的理由、打分的依据,使用四种计算方法衡量打分。

  6. 玩法二、互相不让看到选择的分数,每人选择一张卡片,卡片上的数据代表分数,J-A是11-14,A表示发现一种新的模式。说服别人,每轮卡片得分最高者胜。

  7. 安全、开发、架构组分别使用一套卡片参与,当然全部人员也可以使用同一套卡片,卡片是足够的。反复充分讨论现有架构设计的每个场景面临的威胁。

  8. 以信任边界、数据、资产是什么、哪里可能出错、如何应对、该如何做得更好四个角度记录下来威胁。

  9. 接近讨论完成后,随机选取一张表示威胁卡片,再一次以项目整体思考是否还可以将卡片应用在系统中。

  10. 对每个威胁,给出综合的策略和处置办法。

  11. 在下一个迭代时,反复执行。

要点
  • 确保在会议室的小伙伴们了解微软STIDER威胁、DREAD评估、owasp top10机制。

  • 但是不要纠结于威胁具体分到哪个类,既然已经发现了,记录下就是了。

  • 会议主持人聚焦结构化思考,积极讨论也要注意纠偏,不要考虑执行和排期。

使用示例

多人

背景:假设企业要进行上云时的安全评估

  1. 项目相关人画出系统示意图:SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

  2. 与会人员打开微信小程序,组织人创建一个project,示例叫做aliyun 20190526,

  3. SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

  4. 点击create后,分别开始STRIDE六个方面的威胁建模,可以微信转发干系人,邀请加入此环节的讨论。SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

  5. 与会者各自思考,根据认定威胁级别,点击对应的打分。对于结果总分有四种计算方式:算术平均数、切尾平均数、中位数、和自定义。自定义分数的考虑是威胁尚未发生,某些场景下当然可能给出最高,需要主持人权衡。

  6. 依次完成STRIDE六个步骤的考量。得到一个项目的总分,中间的时间记录是为了提醒参与者不要跑题,加快节奏,会议不要超过两个小时,另外留意花费较多时间讨论的威胁,往往正是项目组技术的盲区。

    SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

  7. 点击finish完成一次评估,对应对针对威胁的处置措施达成一致,散会。

    SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

  8. 下个迭代或者需求、代码有变动时,再举行一次会议,横向比对威胁分数的收敛变化。

单人

SDL安全设计工具,一款支持多人协作实施威胁建模的微信小程序

打开微信小程序,花费几分钟进行一番评估,改进函数对外的暴露、对内调度的安全性,拥有了体系化防御的概念。

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. http://netsecurity.51cto.com/art/201701/527240.htm?mobile

  6. https://xz.aliyun.com/t/2061

致谢

感谢Darrick、″ `мч'|哆、他们制作的scrum敏捷项目主框架对我帮助很大;感谢星空与飞鸟,他参与了大量内测并提出了重要的改进建议,感谢淡蓝色的忧伤帮我定位到功能缺陷。

本文分享自微信公众号 - 安全乐观主义(gh_d6239d0bb816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Easter79 Easter79
3年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这