作为一名应用安全专家,你的工作是确保你的组织的应用程序的网络安全。然而,你并不负责编写应用程序运行的代码。开发团队中的工程师负责。那么,你如何确保他们在开发这些系统时考虑到安全问题?
最有可能的是,你正在做以下一些甚至全部工作。
- 审查所有代码的安全缺陷,并将其反馈给开发团队进行修复。
- 在你的安全开发生命周期中执行严格的同行审查程序。
- 由内部或外部安全团队定期进行应用assessment/渗透测试。
- 实施扫描工具以发现漏洞。
这些都是很好的最佳做法,但它们也很昂贵,类似于每次生病都要服用一轮抗生素。这不仅成本高,而且随着时间的推移会失去疗效,并会削弱你的免疫系统。
你怎样才能真正确保开发人员交付的代码首先是安全编写的?
撇开安全编码不谈,先想想人们如何学习。我们大多数人都是视觉学习者,我们通过实践来学习。然而,安全代码培训往往是作为一种 "打勾 "的活动,与开发人员的日常工作没有关系。它的目的是为了证明开发人员已经接受了安全培训,以符合行业标准,而不是让开发人员真正保留这些知识,更不用说享受学习过程了。
人类倾向于学习的另一种方式是通过我们的错误,与我们的免疫系统一样。T细胞记得他们过去遇到过什么样的病原体,并成功地将其消灭,这样他们就可以在未来保护他们。这正是开发人员在你的安全 SDLC中应该扮演的角色。
指望他们不犯错误是不现实的,但你可以让他们做好准备,能够识别出将来会转化为安全漏洞的编码模式。
这也是一个强大的同行评审过程变得如此强大的原因。一个开发人员没有注意到一个安全漏洞,并不意味着另一个开发人员也不会注意到。而且,开发团队的整体训练越好,漏洞就越有可能被发现,并永远不会进入生产。
软件漏洞就像病原体
软件漏洞就像病原体一样,你必须记住它们才能对抗它们。对于病原体,我们的免疫系统往往需要多次接触才能记住如何对抗它,以避免严重的疾病或更糟的情况。
一个成功的网络攻击来自脆弱的软件,可以严重削弱或杀死一个组织。但是,如果开发人员首先在受控环境中接触到软件漏洞,他们可以通过增加和定期练习他们的安全编码知识和技能来建立对威胁的免疫力。
让开发人员在受控环境中接触安全缺陷
我们永远无法完全保护自己不生病,但我们可以做一些事情来提高我们的免疫系统并尽可能保持健康。像定期锻炼、健康饮食和充足的睡眠等,都是通常与强大的免疫系统相关的生活方式选择。但所有这些事情都需要一点努力,而且必须持续进行。连续一周每天慢跑或连续一个月戒酒几乎不会对你的整体健康产生什么影响。也不建议我们在开始跑步的第一天就去跑10公里。我们首先需要让我们的心脏和肌肉暴露在运动中。我们也知道,这需要进行一些试验,直到我们找到适合我们身体的健康食品和我们喜欢的运动的平衡。
当涉及到安全软件开发时,这并没有什么不同。学习是随着时间和实践发生的,开发人员需要同样的持续培训来定期提高他们的安全编码技能。更不用说,软件开发总是在不断地发展和调整,这意味着漏洞也是如此。这就是为什么一个简单的培训课程是不够的。开发人员需要定期提高技能,以便对潜在的威胁有足够的了解,从而有能力抵御它们。
力求在开发团队中实现群居性免疫
一个人不可能防止任何和所有的安全问题。在团队中拥有安全卫士是很好的,但是为了得到最好的保护,越多的人了解安全漏洞和如何防止它们,你的组织就越有机会防止它们。同样,这与免疫系统有不同类型的T细胞用于不同的目的没有多大区别。每个开发人员都是确保安全的团队的一部分。如果他们被授权承担责任,做好这件事,甚至喜欢做这件事,那么你就可以在开发团队中创造出对网络威胁的群体免疫力,作为结果。
反复曝光,保持安全至上的理念
我们的大脑的学习方式与我们的免疫系统的工作方式类似。德国心理学家赫尔曼-艾宾浩斯是记忆和学习领域的先驱者。他推断出,学习必须随着时间的推移和多次学习而发生。当我们在学校时,我们从未被期望在第一次介绍后保持新知识。首先,信息被呈现给我们,然后我们在指导下练习它,然后我们自己练习。即使我们学得很好,足以通过考试,但如果我们不经常使用我们花了时间和精力学习的知识,这些信息往往不久就会被遗忘。我们中有多少人可以说自己记得高中时的法语?
因此,我们怎么可能相信,看一天的幻灯片,听一个人谈安全问题,就真的能让那些与会的开发人员更安全地编码?
漏洞反复出现的模式告诉我们,这根本行不通。
如何实现安全的开发免疫力?
答案就在我们的天性中。我们的身体和思想以同样的方式工作,它们为问题提供了美丽的解决方案,只要我们与它们合作而不是对抗它们。
为了确保你的应用程序是安全的,你需要从提高开发人员编写安全代码的技能开始。否则,AppSec将继续花费他们所有的时间来审查所有代码的安全缺陷,并将相同的重复出现的漏洞报告给开发部门,但很快就会被修复,而没有学到任何东西。然后在下一个版本中再做一遍。
因此,让我们重申一下。
如果你和你的开发经理一起努力做到这一点,你不仅会实施一个安全的SDLC和勾选安全培训要求的合规性,你还会对开发过程产生实际的影响。更重要的是,AppSec将不再遇到并向开发团队报告重复的漏洞,开发人员将花更少的时间来修复这些漏洞。这意味着他们可以花更多的时间去创造和改进那些让我们的世界更美好的软件。
准备好提高你的开发团队的技能了吗?来吧,跟我们预约一个演示。