作者 | 梁宇宁、Gavin Bu
责编 | 唐小引
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)
看到这篇文章的时候,作为 CTO 尤其是在中国的你,是否正在为不能够及时复工短兵缺将而发愁?又或许你正在努力地管理在家办公的团队来保证业务系统及时上线?
确实,这次在武汉爆发的新型冠状病毒(COVID-19)感染的肺炎疫情对社会和经济发展造成的阻碍,远远超过我们的预期。这次突发的公共卫生事件就好比一次由于软件漏洞而造成的软件安全事件,而我们该从中汲取怎样的经验和教训呢?
每一天,软件研发人员特别是产品经理、QA、CTO 们都在高度关注产品上线情况,为了增加线上日活量呕心沥血、绞尽脑汁,为了满足业务的需求和交付期限,他们常常会忽视系统里仍然存在的隐患——那些 Blocker Bug 静静地躺在那里无人问津。
质量检查团队为了追赶测试计划,通常会导致缺乏对程序的全面分析。一些欲言又止的 QA 只能望着上线倒计时牌无可奈何。软件成功上线皆大欢喜,直到软件漏洞被黑客恶意利用。
通过安全编码方法或使用正确的源代码分析工具能尽早发现漏洞。扁鹊有句名言:君有疾在腠理,不治将恐深。换句话说,最好的医师是防止患者生病,而不是在患者病情加重时去试图挽救他们。疾病如此,更何况软件合规性和安全性,这就是为什么在 SDLC 中“左移”测试正被广泛采用。一个重要的教训是“不要把安全留到最后”。
导致软件安全事件的原因到底是什么?
毛主席在他的著作《矛盾论》中提到“事物发展的根本原因,不是在事物的外部而是在事物的内部,在于事物内部的矛盾性。外因是变化的条件,内因是变化的根据,外因通过内因而起作用。”
企业组织首先采取的(有时是唯一的)行动是保护自己免遭受来自外部的攻击。很多企业一贯注重杀毒软件、防火墙、加固等防范外部侵入的可能,但却往往忽视企业研发人员本身的整体素质培养和代码质量的管理。企业的防火墙可以被攻破,但如果代码是安全的,则攻击者可能没有机会利用其入侵。
不安全的应用程序可能导致数据泄露,丢失服务,拒绝服务,系统损坏,所有这些都可以使企业损失数百万美元。这里的教训就是确保设计安全作为标准的工作方式。
新闻报道称新冠肺炎的核酸检测准确率并不是 100%,这说明检测的结果可能是混杂着假阳性和假阴性的患者。假阳性是错误的检测到某个特定条件下的结果。假阴性说明病毒未被检测到,但病人实际已感染。对于假阳性的患者来说,医师们不得不花费更多的时间和使用不同医学检测手段来逐一排除每个假阳性患者。这无疑是在浪费资源和时间。
另一方面,一旦患者没有被限制行动范围,“假阴性”将导致病毒继续传播的严重后果。
反观软件应用程序安全测试(SAST)的过程中,发人员需要能够以较少的假阳性和假阴性来提供高度准确的缺陷识别工具。静态代码分析用于通过安全编码标准(例如 CERT)在 SDLC 的早期识别缺陷,该标准使用来自全世界的方法来帮助避免编写不安全的代码。
所有 CTO 和开发人员都应该问自己一个问题:我们是否有最合适的“核酸检测试剂”来定位系统中的漏洞?这里的教训是你需要一个好的静态代码分析工具来完成这项工作。
1. 抛弃侥幸心理,坚持质量第一的心态。
不能急功近利去看待对于质量管理体系提升的投入产出比,也不是说有了某套系统就希望每年来一次“疫情”让它发挥伟大作用。而是要长远看到这个体系的投资效益。
2. 建议加大对于安全质量管理体系的投入。
提高开发人员的安全编码态度和技能,以便他们在编写代码的同时检查漏洞。虽然存在早期投入,但这是公司整体运营质量的提高,是公司应对风险能力的提升。设计安全性应该成为研发人员的第二天性。
3. 严格控制质量,并使用静态代码分析工具。
这些工具可以尽早发现软件中的缺陷和潜在风险,具有很高的准确性。
作者简介:梁宇宁,现任上海鉴释科技公司 CEO,主要精力投入到计算机科学的核心基础技术中,以帮助工程师提高编程知识,并优化全球软件的质量和安全。
Gavin Bu,现任上海鉴释科技公司商务总经理,主要负责客户整体解决方案和打造以客户为中心的服务体系,目标是为客户更高质、更卓越的业务运转而创新。在鉴释,我们使用编译器深度分析技术,来检测代码的合规性和漏洞。我们的解决方案可以无缝集成到应用于软件开发过程,以帮助开发人员更早,更准确地发现缺陷。