使用深度神经网络进行漏洞挖掘的方法调研

本文调研了使用深度神经网络进行漏洞挖掘的方法。传统方法包括静态、动态和混合方法,但存在语义差距问题。深度学习技术,如CNN、RNN,能自动学习代码的高级表示,减少人工特征工程的负担。然而,挑战包括数据集的缺乏、模型的可解释性和语义理解。未来的研究方向聚焦于构建保留语义的神经模型和提高模型的可理解性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用深度神经网络进行漏洞挖掘的方法调研

传统的漏洞挖掘方法

静态方法

  • 基于规则/模板的
  • 代码相似性检测
  • 符号执行

对源代码分析,高假阳性

动态方法

  • 模糊测试
  • 污点分析

代码覆盖率低

混合方法

结合静态、动态方法,会继承上述的问题,并且实践上难以应用

介绍

机器学习方法的优点

人类智慧(经验)起到重要指导作用(基于规则、基于提取的特征的)

困难:

  1. 难以将安全专家对漏洞的理解 转换为 可被检测系统学习的特征向量
  2. 系统从特征集中学到的东西也可能受到各种因素的影响
    例如,模型的表现力、数据过度拟合、数据中的噪声等

一些概念:

  • 缺口(GAP):机器学习 要 像人类一样 学习和理解 漏洞代码的语义 (如何将漏洞代码表示为机器可学习的信息)

  • semantic gap: 语义缺口、语义空白

  • 传统机器学习方法依赖手工制作的特征

  • 深度学习、RNN可以自动通过学习揭示代码语义的复杂模式和软件代码的高级表示

安全从业者人工审查漏洞考虑的因素

漏洞语义差距

对软件漏洞一种不同的表达

定义:缺陷的实例,由软件的设计、开发或配置中的错误引起,从而可以利用它来违反某些显式或隐式的安全策略

安全相关的 bug ==》 被攻击者利用 ==》 导致安全失败或者违反安全策略

人类检查和检测系统的语义鸿沟

对代码语义的高级理解需要:

  1. 足够的经验
  2. 编程知识
  3. 对编程语言本身的理解
  4. 理解代码的语义和语法
  5. 对代码库有深入认识(一个例子是心脏滴血漏洞中,需要对n2s函数有了解
  6. 安全编码的实践
自动检测系统

依赖特征集,来自于:

  1. 人工提取的(传统机器学习算法
  2. 自动提取的(深度学习

检测系统无法像从业者那样充分理解易受攻击代码模式的潜在语义。 因此,知识渊博、经验丰富的从业者与基于ML的检测系

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值