在AI时代,标准落伍了

根据一个 最近的研究,实际上只有少数软件开发人员在软件开发公司工作。这意味着如今,实际上每个公司都以某种形式或另一种形式来构建软件。

标准制定

作为信息安全领域的专业人员,保护信息,资产和技术是您的任务。显然,由您的公司或为您的公司构建的,用于收集,运输,存储,处理并最终根据您的公司数据进行操作的软件非常受关注。应该尽早实施安全的开发实践,并且必须在软件的整个生命周期内对安全性进行测试。

在CISSP的(ISC)²通用知识体系中,软件开发安全性被列为一个单独的领域。涵盖软件开发生命周期中的安全性的几种标准和实践(SDLC):ISO / IEC 27024:2011,ISO / IEC TR 15504或NIST SP800-64修订版2等。

以上所有要求在源代码级别上对工件进行持续评估和控制,尤其是在编码标准和常见弱点枚举方面( CWE),但仅简要提及静态应用程序安全性测试(SAST)作为解决这些问题的一种可能方法。在寻找可能的具体工具时,NIST提供了SP 500-268 v1.1“源代码安全性分析工具功能规范版本1.1”。

国家标准技术研究所在2019年5月撤回了上述SP800-64 Rev2。 国家标准技术研究所 SP 500-268发布于九年前。这似乎是我们看到的一个潜在问题的征兆:这些标准无法跟上该领域的快速发展和变化的步伐。

一个很好的例子是开发语言Rust的诞生,它解决了传统使用的语言所提出的主要安全问题。 C ++ –即内存管理。微软和谷歌等领域的主要参与者看到了巨大的优势,并宣布将把未来的发展重点放在 。尽管这些标准提到的开发语言优于其他开发语言,但没有提及Rust使用的机制以及Rust本身所使用的机制。

在静态代码分析领域,NIST SP 500-268中的信息没有错,但是本文只是没有提及该领域的进展。

让我们简要地讨论两个方面:首先,开放源代码软件的广泛使用使我们能够洞悉大量源代码更改及其背后的原因(安全性,性能,样式)。最重要的是,我们发现处理这些数据的CPU能力不断提高,同时算法得到了改进。如今,我们拥有大量的培训数据。以我们公司为例,为了仅训练C ++的基础模型,我们正在扫描超过200,000个开源项目中的更改,其中包含数百万个包含丰富历史的文件。

其次,在过去的十年中,我们见证了机器学习的巨大进步。我们看到诸如 GPT-3 及其在源代码中的应用正在广泛讨论。传统上,静态源代码分析是Symbolic AI的领域-适用于源代码的事实和规则。源代码领域非常适合此方法,因为软件源代码具有定义明确的语法和语法。缺点是这些规则是由工程师开发的,这限制了生成规则的速度。这个想法是通过使用机器学习来自动化规则构建。

最近,我们看到了将机器学习领域的研究应用于源代码。再次以我们公司为例:通过使用开源中的大量更改,我们的系统可以寻找与安全性相关的模式。它向工程师提供了可能的规则以及培训集中发现的案例(已知的和固定的以及未知的案例)。

而且,系统支持规则中的参数。这些参数的可能值由系统自动收集。作为一个实际示例,污点分析将跟踪传入的数据,使其在应用程序内部使用,以确保在使用前对数据进行清理。系统会自动学习可能的来源,消毒和水槽功能。

返回NIST特殊文件:随着SP 800-64 Rev 2的撤消,在发布新的更新白皮书之前,用户暂时被指向NIST SP 800-160 Vol 1。截止日期为2019年5月。这些文件的性质仅是描述高级最佳实践,列出一些示例,并在具体实施中保持模糊。但是,这些文件是进行审核和审核的基础。考虑到该领域的重要性,似乎缺少了主要组成部分。现在也该考虑可以帮助我们跟上技术发展步伐的流程了。

分享这个