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

Wesley13
• 阅读 272

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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
光头强的博客 光头强的博客
2个月前
Java面向对象试题
1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
blmius blmius
1年前
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:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
小森森 小森森
2个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本 欢迎添加左边的微信一起探讨!项目地址:](https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n) \2. Bug修复更新日历 2. 情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意), \ \ 和 注意
Easter79 Easter79
1年前
swap空间的增减方法
(1)增大swap空间 去激活swap交换区: #swapoff -v /dev/vg00/lvswap 扩展交换lv: #lvextend -L 10G /dev/vg00/lvswap 重新生成swap交换区: #mkswap /dev/vg00/lvswap 激活新生成的交换区: #swapon -v /dev/vg00/lvswap
Wesley13 Wesley13
1年前
Java爬虫之JSoup使用教程
title: Java爬虫之JSoup使用教程 date: 2018-12-24 8:00:00 +0800 update: 2018-12-24 8:00:00 +0800 author: me cover: [https://img-blog.csdnimg.cn/20181224144920712](https://www.oschin
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序 select * from table_name order id desc; 2.按照指定(多个)字段排序 select * from table_name order id desc,status desc; 3.按照指定字段和规则排序 selec
Wesley13 Wesley13
1年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表: **时辰** **时间** **24时制** 子时 深夜 11:00 - 凌晨 01:00 23:00 - 01 :00 丑时 上午 01:00 - 上午 03:00 01:00 - 03 :00 寅时 上午 03:00 - 上午 0
Stella981 Stella981
1年前
Angular material mat
Icon Icon Name mat-icon code _add\_comment_ add comment icon <mat-icon> add\_comment</mat-icon> _attach\_file_ attach file icon <mat-icon> attach\_file</mat-icon> _attach\
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞 # 背景 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为