天天看点

语言模型中的软件,系统为何时常出现安全管理漏洞?

语言模型中的软件,系统为何时常出现安全管理漏洞?

文|苏荨墨

编辑|苏荨墨

语言模型中的软件,系统为何时常出现安全管理漏洞?

前言

软件已经成为人类生活的核心部分,在日常活动中发挥着举足轻重的作用,随着技术的进步,漏洞也在迅速产生。

软件开发组织将软件的安全性视为其客户关注领域的突出部分,但是,组织内外的整个行业都有广泛的知识来源。

语言模型中的软件,系统为何时常出现安全管理漏洞?

由于组织的优先级不断变化,安全知识处于次要地位,需要设计一种适当的机制来吸收行业中流行的所有知识,并在软件开发团队需要时以受控方式将其提供给软件开发团队。

它需要一种智能的方式将信息放在一起,不断地从中学习,并在运营中使用所学知识,为了软件系统的安全,需要一个智能知识管理系统。

语言模型中的软件,系统为何时常出现安全管理漏洞?

智能知识管理系统将是能够整合来自各种来源的数据的系统。

语言模型中的软件,系统为何时常出现安全管理漏洞?

软件过程分析

技术债务是本文的一个重要考虑因素,一些研究确定了软件系统中技术债务的影响因素。

这些是在软件开发过程中试图平衡客户的战略需求和短期需求时收集的。

引入了异常检测方法,它利用了在玻尔兹曼机算法中路由问题区域的原始特征的优化机制,提出了软件测试中的软件故障检测和纠正建模框架。

语言模型中的软件,系统为何时常出现安全管理漏洞?

针对敏捷软件开发模型提出了一种软件工作量估算方法,采用人工神经网络前馈、反向传播神经网络和埃尔曼神经网络。

考虑了各种非功能性需求以进行建模并建立适当的管道来更新标准并将其发送到下一阶段。

安全控制是使用自动决策支持来识别的,这些控件可以与任何特定系统相关。

提出了一种基于问题框架的安全需求获取方法,它考虑在早期阶段将安全性纳入软件开发过程。

语言模型中的软件,系统为何时常出现安全管理漏洞?

它可以帮助开发人员以有效的方式收集有关安全要求的信息,准备了一个安全目录来识别安全要求,并使用滥用框架访问威胁。

评估了机器学习技术以确定堆栈溢出的软件要求,它表明潜在狄利克雷分配 (LDA) 被广泛用于识别软件需求。

设计了一种工具来发现基于软件组件特征的漏洞,软件组件特征代表了其他软件开发领域的领域知识。

语言模型中的软件,系统为何时常出现安全管理漏洞?

由于该方法规定的目标是预测新组件中的漏洞,因此有可能在生产中利用这些软件组件的漏洞历史记录。

还有可能采用这些解决方案并将它们集成到开发环境中,以便于软件开发人员使用。

总体重点是使软件系统从一开始就安全,它可以减少公司为软件安全性进行大量投资的需要。

项目中安全问题的修复时间会显著影响整个开发过程,因此,必须在时限内解决问题。

语言模型中的软件,系统为何时常出现安全管理漏洞?

机器学习模型被用来预测固定时间,使用长短期记忆(LSTM)技术对垃圾邮件进行分类。

这种技术可以自动学习抽象特征,在此,使用 ConceptNet 和 WordNet 将文本转换为语义词向量。

之后,使用 LSTM 从数据中检测到垃圾邮件,K 最近相邻 (K-NN) 算法在分类任务中的准确性得到了提高。

然而,它在大型数据集中需要更长的时间,但与其他方法相比提供了显着的准确性。

挖掘了软件需求规范文档中提到的安全需求,这些要求被分类为数据完整性、密码学、访问控制和使用决策树的身份验证。

语言模型中的软件,系统为何时常出现安全管理漏洞?

针对每个安全需求开发了预测模型,预训练模型还可以识别文档中错误分类的需求,为需求工程师提供更好的洞察力。

进一步的细化将为用户提供有关要求的分类信息,并解释为什么选择特定分类,神经网络需要更好的方法来制作可解释的模型,这是一个具有挑战性的问题。

语言模型中的软件,系统为何时常出现安全管理漏洞?
语言模型中的软件,系统为何时常出现安全管理漏洞?

模型中系统的构造成分

理解有效应用于解决与软件安全问题相关的问题的语言模型的构造是必不可少的,与软件安全相关的问题可以通过利用跨公司和行业可用的自然语言数据来解决。

有效的语言建模能力可以帮助推导出隐藏在这些数据中的信息,此外,软件开发团队可以在需要时利用与安全相关的信息。

语言模型是本文所用模型的基础,语言模型在 N-gram 建模方法中找到了它们的根源。

语言模型中的软件,系统为何时常出现安全管理漏洞?

gram 建模使用的思维过程是使用给定单词的历史来评估给定单词的概率,例如,短语“Jack and Jill went up the”中的下一个词是“hill”的概率。

所有与客户需求相关的数据和与内部软件开发过程相关的数据(例如测试用例和缺陷)都被提取并标记为安全相关和非安全相关的数据类。

因此,数据集包含文本和相应的标签,数据集包含从客户需求规范、测试用例、缺陷和软件开发团队维护的其他软件开发工作中获得的自然语言数据。

数据集按50%、40%、10%的比例分别分为训练、测试和验证,软件开发需求管理专家标记了与客户需求相关的数据。

语言模型中的软件,系统为何时常出现安全管理漏洞?

软件开发技术负责人参与标记与软件开发工作相关的数据,例如缺陷和测试用例。

使用 python 的 train-test 拆分库将数据集随机拆分为训练、测试和验证。我们考虑了训练和测试数据的各个部分。

结果发现,当训练数据集分数为 50% 时,模型不会出现过拟合和欠拟合问题。

共有 31,342 个数据点,其中 3,082 个与安全相关的数据点和 28,260 个非安全相关的数据点。

语言模型中的软件,系统为何时常出现安全管理漏洞?

因此,数据增强技术,考虑了训练和测试数据的各个部分,结果发现,当训练数据集分数为 50% 时,模型不会出现过拟合和欠拟合问题。

数据预处理包括文本标记化以创建词汇表,文本首先转换为单词序列,然后转换为数字 ID 序列。

文本的标记化涉及将文本转换为数字表示,以便这些表示可以传递到机器学习或深度学习模型中以用于建模目的。

还进行文本序列填充以规范化文本序列长度。数据表示为用于进一步建模的向量序列。

语言模型中的软件,系统为何时常出现安全管理漏洞?
语言模型中的软件,系统为何时常出现安全管理漏洞?

语言模型下的实验

在第一个实验中,CNN 在文本分类中进行了探索,算法 1演示了使用 CNN 进行文本分类所涉及的各个步骤。

语言模型中的软件,系统为何时常出现安全管理漏洞?

算法1

首先,使用 TensorFlow Keras 预处理器对文本数据进行标记化。文本序列被转换为数字 ID 序列。因此将有三组文本序列用于训练、测试和验证。

将句子长度分布可视化以检查长度分布。填充的最大序列长度可以保持在 250,因为大多数长序列都在 250 的序列长度内。TensorFlow Keras 预处理器用于为所有三组数据集创建 250 长度的文本序列。

在下一阶段,将探索基于预训练的快速文本嵌入矩阵,快速文本是一个开源轻量级库,可帮助学习语言模型中的文本表示。

语言模型中的软件,系统为何时常出现安全管理漏洞?

快速文本被配置为它在预训练期间已经学习到的数据矩阵,采用数字表示的嵌入形式。

快速文本的工作类似于 word2vec,其中每个单词都被视为其基于字符的 N-gram 包。

预训练词嵌入架构以标准方式构建,为此在 300 个维度上构建的预训练模型选择了 300 的嵌入大小。

基于TensorFlow Keras的CNN模型架构搭建(见算法 1).,在每个 Conv1D 层中使用 256、128 和 64 个过滤器构建三组 Conv1D 和最大池化层,最大池化层的池大小为 5。

语言模型中的软件,系统为何时常出现安全管理漏洞?

应用的激活函数是“ReLU”(整流线性单元)该架构具有三组密集层和 dropout 层,dropout 设置为 25%。

二元交叉熵损失和 Adam 优化器被配置为模型编译,模型架构在训练数据集上运行。

尽管该模型被配置为运行 100 个 epochs 和 128 个 batch size,并提前停止,模型在第 7 个 epoch 达到最佳精度,验证精度为 95.95%。

在测试数据集上评估模型性能;它的准确率为 71.89%,加权平均精度为 0.88;召回率为0.72;F1 分数为 0.77。

语言模型中的软件,系统为何时常出现安全管理漏洞?

如果不对参数进行太多微调,该模型将提供 71.89% 的准确度,因此,可以针对保险数据进一步微调这些架构,以实现更好的准确性。

该实验进一步补充了双向 LSTM 和注意力层(参见算法2). 嵌入层保留了预训练的 FastText 模型。

标记化、矢量化和填充的执行与实验的早期部分类似。长短期记忆门控循环单元 (LSTM GRU) 最后一层的输出被送入全局注意力层序列。

语言模型中的软件,系统为何时常出现安全管理漏洞?

算法2

来自隐藏序列的向量被传递到学习函数 ( h t ),包括乘积向量。

c是最终的上下文向量,T是输入序列的总时间步长,注意力层架构基于 TensorFlow Keras 注意力机制,用于时间数据和掩蔽。

TensorFlow 是一个机器学习库,Keras 是 TensorFlow 的高级 API,注意力机制是利用从语言的重要部分学习而不是尝试学习所有内容的前沿方法。

TensorFlow 和 Keras 的注意力机制提供了在模型中实现此功能的工具,本实验中使用的构建体取自基于 FastText 的嵌入是在实验的第一部分构建的。

语言模型中的软件,系统为何时常出现安全管理漏洞?

核心模型架构是用 LSTM 构建的,以形成顺序模型,LSTM 在记忆长序列数据方面优于 RNN。

LSTM 管理当前时间步的输入,以及前一个 LSTM 单元的输出和前一个单元中单元状态的记忆。

双向 LSTM 有助于提供内容的前向和后向序列,这些中的每一个提供的输出在每个时间步被组合。

通过考虑过去和未来的顺序,可以保留文本的更好上下文,该架构包括作为输入的嵌入、具有 256 个单元的双向 LSTM GRU、注意层以及三组密集层和丢弃层(参见算法2)。

厚层256个单元和0.25 dropout rate也交替使用,“Relu”是用于中间层的激活函数;在最后一层,使用“sigmoid”。

语言模型中的软件,系统为何时常出现安全管理漏洞?

还考虑了二元交叉熵损失和“Adam”优化器,模型在训练和验证中使用 100 个 epochs 的提前停止机制进行训练。

保留 128 的批量大小;最好的结果出现在第 6个epoch,验证准确率达到 98.69%。该模型的准确率为 84.33%,加权平均准确率为 0.91,召回率为 0.84,F1 分数为 0.87。

在下一阶段的实验中,将探索 Google 的通用句子编码器 (USE)。它可以将不同长度的高维向量编码成标准大小。图1显示了句子编码的工作。

语言模型中的软件,系统为何时常出现安全管理漏洞?

图1

在本实验中,USE 是在 TensorFlow 1.0 上实现的。USE 模型是从 TensorFlow hub加载的。

基于 USE 的嵌入层被构建并馈送到具有两个密集层和丢失层的模型架构中(参见算法3)。

语言模型中的软件,系统为何时常出现安全管理漏洞?

算法3

密集层有 256 个单元和一个 ReLU 激活层,dropout 值为 0.25。

语言模型中的软件,系统为何时常出现安全管理漏洞?

结语

sigmoid 激活函数用于对结果进行分类,还使用了二进制交叉熵和 Adam 优化器。模型训练是通过考虑提前停止来实现的。

它在第一个时期达到了 97.32% 的最佳验证准确率,它的平均准确率为 92.61%,平均召回率、准确率和 F1 分数分别为 93.0%、95.0% 和 93.0%。

软件需求建模是这项工作的突出部分之一,大多数时候,重点是开发过程中的软件正确性,这可能会导致开发过程后期出现性能问题。

语言模型中的软件,系统为何时常出现安全管理漏洞?

对整个软件开发生命周期中为软件性能建模所做的所有工作进行了全面研究。

也评估了影响使用线性回归方法修复安全问题的时间的因素。

继续阅读