敏捷扑克牌
不幸的是,出于我们应用程序的安全性考虑,我们通常不会在开发中“内置安全性”。 取而代之的是,我们等到最后一刻才采取安全措施,通常是建立一个警察型的安全部门,并在安全人员和开发人员之间产生对抗感。
有很多很棒的安全资源,从DevOps团队的工具到对DevSecOps如何改变安全性的深入分析。 一切都归结为您在开发周期中进行安全保护的位置。 如果您的团队正在实施左移方法,您已经知道在编写任何代码之前,首先要考虑安全性。
为什么我们需要建立安全性
安全威胁是非常真实的-Verizon的最新数据泄露报告援引了截至2018年3月的12个月中65个国家/地区发生的2216起已确认的泄露事件和53000多次网络安全事件。
请考虑以下2018年9月以来的两个重大违规报告:
Facebook数据泄露:根据Facebook的说法,攻击者利用该网站代码中的漏洞来访问一项具有里程碑意义的安全漏洞,该漏洞可以访问5000万个帐户 ,从而使黑客能够查看用户的个人信息,照片甚至私人消息。 该黑客行为特别影响了“查看为”功能,该功能使用户可以看到其他人的个人资料。 黑客使用此功能来窃取Facebook的访问令牌,这些令牌使您可以登录Facebook,这样您就不必在每次使用该应用程序时都重新输入密码。
万豪/喜达屋预订数据泄露事件: 据报道 ,喜达屋预订数据泄露事件中有50亿万豪客人记录被盗 ,未经授权的数据访问可追溯至2014年。该泄露事件导致万豪和喜达屋客户加入了34%的经历在截至2018年7月的一年中泄露其个人信息 。
没有公司希望出现在此列表中。 为了避免这种情况,北卡罗莱纳州立大学教授Laurie Williams博士介绍了一款名为Protection Poker的游戏,以帮助团队在迭代计划之前将安全性纳入工作流程中。
什么是保护扑克?
保护扑克是一种协作和非正式的方式来进行威胁建模,它利用了团队成员的知识和观点的多样性。 它类似于Planning Poker,但侧重于安全风险评估而不是工作量估算。 在Protection Poker中,安全知识在团队中传递,将缓解风险(即在满足要求之前处理安全威胁)纳入迭代计划中。
该游戏为团队成员提供了一种结构化的方法,使他们可以互相学习,发现假设,提高对潜在威胁和并发症的认识以及发现实现预期目标的替代方法。
理想情况下,产品开发中涉及的每个人(包括产品经理,项目经理,软件开发人员,测试人员,可用性工程师,安全工程师和其他利益相关者)都在迭代计划期间玩游戏。 这会为迭代的每个潜在需求产生总体相对安全风险。
之后,参与者可以使用相对风险将故事添加到迭代中以减轻风险,并更改故事的接受标准以包括安全开发步骤。 这样,将安全地实现需求的工作纳入迭代中。
定义风险
传统上,“风险”的计算方式是(损失的概率)x(损失的影响) ,但是Protection Poker将安全风险定义为:
安全风险=(易于攻击)x(成功攻击可以利用的资产价值)
该游戏暴露了安全风险,这些风险可能对最容易利用的最高价值资产产生潜在影响。 这使团队可以在迭代计划期间讨论并潜在地解决这些风险。
如何玩保护扑克
此练习使用了一小部分与预订酒店房间有关的客户数据资产:
资产值 | 客户资料 |
---|---|
客户登录ID | |
客户密码 | |
电子邮件 | |
客户名称(第一名) | |
客户名称(姓氏) | |
信用卡ID | |
信用卡密码 | |
电子邮件ID | |
护照ID |
步骤1:对软件资产进行估值和排名
保护扑克游戏首先评估数据资产。 资产的价值基于资产的历史价值,或者,如果必须创建新资产以实现要求,则基于团队的讨论和投票。
价值点
您的软件资产的价值是多少? 资产可以是数据库,系统进程或其他地方的数据。 在此步骤中,您正在评估并拥有DNA的所有权-使您的公司与众不同的数据资产和其他知识产权-因为这些都是潜在的目标。 此步骤涉及从开始到最终处理的准确识别,分类,保护和优化数据。
在此步骤中,您将列出您的资产并对其价值进行排名。 在分配价值点之前,请考虑以下问题,以确定每种资产对每一方所拥有的价值:
给运行该软件的公司:
- 该功能对关键操作所控制的过程有多关键?
- 受影响的数据库中的数据对公司运营有多重要?
- 如果数据被恶意修改,是否可以恢复/重新创建?
- 数据泄漏对公司或用户声誉的危害有多大?
对攻击者:
- 谁将从攻击应用程序中受益? 记住内部威胁!
- 一旦获得数据该怎么办?
- 获取或修改数据会造成多少损失?
- 拒绝服务(DoS)对公司业务有何影响? 在攻击者的生意上? 经营竞争对手的业务? (例如,万豪酒店的DoS是否会改善另一家连锁酒店的销售?)
列出您的资产并对其价值点进行排名。 保存此资产值列表以进行下一步。
想象一下,您的团队在酒店预订数据上玩了一轮保护扑克,并获得了以下结果:
资产值 | 客户资料 |
---|---|
2 | 客户登录ID |
5 | 客户密码 |
8 | 电子邮件 |
3 | 客户名称(第一名) |
8 | 客户名称(姓氏) |
20 | 信用卡ID |
40 | 信用卡密码 |
20 | 驾驶执照或护照 |
1 | 客户编号 |
步骤2:根据新需求校准攻击的难易程度
在此示例中,在下一个迭代中提出了三个功能请求:
功能1:添加“已知过敏”功能。 已开发出一种新的移动应用程序,使客户能够订购从酒店餐厅运送到他们房间的食物。 餐馆希望(可选)将已知食物过敏的信息标记给酒店客人,以防止患有严重已知过敏的客人接触含有这种风险的食物。
功能2:添加“紧急响应者”角色。 当前,酒店预订系统中只有三个角色:酒店管理专业人员,预订管理员和客户。 还需要另一个角色:紧急响应者(ER)-警察,消防,紧急医疗技术人员(EMT)以及其他经过医学培训的紧急响应者,他们在紧急情况发生时或在紧急情况发生地点或途中提供护理; 在这种情况下,酒店。 新角色将使ER可以访问与紧急情况有关的酒店客人的信息的子集:名称,ID,到达日期和离开日期。 当急诊员查看其记录时,该功能还将向酒店客人发送通知电子邮件。
功能3: 添加“客户组” 角色。 要为从同一公司或组织预订的客户创建团体预订,酒店需要以下信息:
- 团队名字
- 组号
- 该客户组中包含的客户ID号
对于这些新功能中的每一个,请尝试就使攻击最容易的要求和使攻击者最难利用攻击者利用每种新功能的要求达成共识。
缓和点
使用您的扑克牌分配轻松点; 这些将是保护扑克练习其余部分的终点。 如果您改变意见或学习新信息,则可以更新这些值。
出于此练习的考虑,假设您的团队确定功能1的得分为1(最难攻击),功能3的得分为20(最容易攻击)。
步骤3:计算安全风险
对于每个需求,执行以下步骤来计算安全风险:
- 在步骤1的“价值点”表中,添加新功能所需的所有新数据资产,并使用您的扑克牌并考虑之前分配的相对值为其分配值。 然后确定新功能中使用了哪些资产,并将该信息作为新列添加到表中。
资产价值点 | 客户资料 | 用于功能编号 |
---|---|---|
2 | 客户登录ID | |
5 | 客户密码 | |
8 | 电子邮件 | 2,3 |
3 | 客户名称(第一名) | 2,3 |
8 | 客户名称(姓氏) | 2,3 |
20 | 信用卡ID | |
40 | 信用卡密码 | |
20 | 驾驶执照或护照 | |
1 | 客户编号 | 1,2,3 |
2 | 已知过敏 | 1,2 |
8 | 客户群 | 3 |
8 | 客户组# | 3 |
- 将映射到每个要素的总价值点相加并记录该总和。
功能编号 | 总价值点 | 缓动点 | 安全风险 |
---|---|---|---|
1 | 3 | ||
2 | 22 | ||
3 | 36 |
- 接下来,您的团队将为每个功能分配缓解点。 但是,首先,每个人都必须假装自己具有恶意意图,从而进入黑客的思维模式。 一旦有了正确的心态,请讨论具有恶意意图的人如何轻松利用新功能,包括新功能是否易于攻击。 然后使用您的扑克牌为每个要求分配缓解点。
切记:保护扑克在会员自由发表意见,鼓励和庆祝意见多样化,每个人都可以向他人学习时开放。 游戏的重点不是结果数; 都是关于对话和分享知识的。
如果您需要像黑客一样思考的帮助,请返回到步骤1中的问题,尤其是:
- 谁将从攻击应用程序中受益?
- 您有哪些内幕威胁?
- 一旦获得数据该怎么办?
- 获取或修改数据会造成多少损失?
- 拒绝服务(DoS)对公司业务和攻击者业务有何影响?
不要回避分歧和误解,它们可能表示潜在的安全风险。 通过在迭代计划期间进行这些辩论,您的团队可以在设计或实施需求之前浮出水面并解决风险。 我们经常发现,在保护扑克会议期间开始的讨论此后仍在继续,因为团队成员发现了许多利用其系统的不同方法。
主持人应记下缓解游戏中可能出现的威胁的措施。 诸如“也许只有管理员才能执行此功能”或“我不认为两个功能都需要信用卡信息”之类的注释都可以成为减轻风险的补充。
在完成一轮保护性扑克比赛之后(您像黑客一样思考并提出了可能利用这些新功能的方案),想象您的团队分配了以下缓解点:
- 功能1保持不变为1(较难攻击)
- 功能2是5
- 功能3现在为13(低于20,这意味着比以前想象的要难攻击)
- 通过使用安全风险公式将价值点(步骤3B)乘以缓解点(步骤3C)来计算安全风险:
安全风险=(易于攻击)x(成功攻击可以利用的资产价值)
功能编号 | 总价值点 | 缓动点 | 安全风险 |
---|---|---|---|
1 | 3 | 1个 | 3 |
2 | 22 | 5 | 110 |
3 | 36 | 13 | 468 |
步骤4:将缓解措施添加到迭代中
在此步骤中,您的团队将决定下一次迭代的内容以减轻风险。 如果主持人在玩游戏时使用白板或其他视觉表示来记录评论,则将很有帮助。
考虑:
- 您真的需要收集此客户数据吗? (请考虑GDPR:如果您是一家关注隐私的道德数据管理公司,则经常会问这个问题。)
- 您是否需要添加日志记录以访问电子邮件?
- 您应该删除仅提供管理员权限的用户吗?
- 您是否需要其他威胁评估?
- 您需要实施数据加密吗? 假名? 掩膜解决方案?
旋转一下!
保护扑克提供了一种结构化的手段来:
- 在团队内部获得对软件安全知识的共同理解
- 允许工程师通过考虑风险来确定资产的验证和防御工作的优先级,以生产更安全的软件。
- 确定在有价值的有限时间上已过度投入代码的低风险区域中的区域,这些区域已被适当地加强,对攻击者不感兴趣或包含难以利用的漏洞。
- 通过利用团队在软件安全方面的经验和知识的多样性来发现和解决歧义。
- 通过在迭代计划期间对新需求执行轻量级软件风险评估,定期“构建安全性”。
- 通过全面增加团队内部的软件安全知识来减少产品中的漏洞。
您在公司中使用过保护扑克吗? 告诉我们评论中的情况。
接下来要读什么
翻译自: https://opensource.com/article/19/3/protection-poker-agile-security-game
敏捷扑克牌