作者:Xing Zhang, Jiongyi Chen, Chao Feng, Ruilin Li, Yunfei Su, Bin Zhang, Jing Lei, and Chaojing Tang(National University of Defense Technology)
出处:USENIX 2021

概要

  fuzzing生成的crash输入由于是随机生成的非预期输入,分析人员在debug这些crash的时候很容易陷入一些没有用的程序逻辑里。事实上只有一部分的crash inputs需要被分析。
  因此,我们的任务可以概括为给定一个输入,我们去决定输入的哪些字段是和crash相关的,把这些字段进行保留。作者提出了一种基于深度学习以及注意力机制的方法,叫SCREAM。作者给神经网络crash的输入和没有crash的输入,让这个网络学习如何从程序的入口点到crash位置。为了解释神经网络,作者运用了注意力机制去提取输入中与crash相关的字段的贡献。根据提取的不同字段的权重来生成简化后的输入。

Insight

  作者让神经网络去近似从程序入口点到crash点的执行,给定一个造成crash的输入以及一个没有crash的输入,让神经网络去找它们之间的区别,从而更加近似地模拟造成crash的执行路径,进一步用注意力机制去提取输入不同字段的权重,根据权重来简化输入。

注意力机制

  作者运用注意力机制来解释神经网络,其实就是用注意力机制按照输入的不同字段对输出的贡献分配不同的权重,使其可视化。对于一个输入向量(x1⃗,x2⃗,......,xn⃗)(\vec{x_1},\vec{x_2},......,\vec{x_n})(x1​​,x2​​,......,xn​​),假设我们有v⃗=α1x1⃗+α2x2⃗+...+αnxn⃗\vec{v}=\alpha_1\vec{x_1}+\alpha_2\vec{x_2}+...+\alpha_n\vec{x_n} v=α1​x1​​+α2​x2​​+...+αn​xn​​y=f(v⃗),whereΣiαi=1,αi>0y=f(\vec{v}),where \underset{i}\Sigma\alpha_i=1,\alpha_i>0y=f(v),whereiΣ​αi​=1,αi​>0
  这个公式的意思就这个输入的不同字段xix_ixi​分配不同的权重αi\alpha_iαi​,并且权重和为1,去求得这个关于权重的函数y。
  权重本身可以看作一个向量,在seq2seq网络中通常就是用y=f(x⃗)y=f(\vec{x})y=f(x)来确定输入的字节对输出的影响,公式长这样:

  在数据集里面,xi⃗\vec{x^i}xi表示第i个样本,yi⃗\vec{y^i}yi​表示它对应的标签。平均方差的损失函数为:

  然而在用梯度下降方法降低损失的时候很难满足权重和等于一这个条件,因此,作者使用softmax函数最为权重的激活函数,把softmax函数的输出定为1。

  损失函数就变为:

测试用例简化

  用规范化的语言描述这篇论文要做的事情就是对于一个程序PPP以及一个引起一个crash CCC的输入x⃗=(x1,x2,...,xn)\vec{x}=(x_1,x_2,...,x_n)x=(x1​,x2​,...,xn​),我们去找一个输入的最小集合x⃗=(xi,..,xj)(1≤i≤j≤n)\vec{x}=(x_i,..,x_j) (1\le i \le j \le n)x=(xi​,..,xj​)(1≤i≤j≤n)能触发程序同样一个crash。
  作者的方法说白了就是给神经网络能造成crash的输入和不能造成crash的输入,让神经网络去判断这个输入是否能够触发crash,并且学习哪些输入字段和crash是相关的,然后用注意力机制去计算一个权重。方法框架如下:

  1. 输入和输出编码:所有的输入直接转化成16进制。输出就是一个bool值表示是否触发了crash。使用从程序崩溃点开始向后执行的函数调用序列来唯一地表示崩溃。
  2. 数据集:在crash输入的基础上变异,并且追求diversity。作者设计了一种新的算法:
    1. 基于遗传算法,决定变异那里以及选择哪个种子去变异。
    2. 变异因为每次神经网络会输出一个输入不同字段的权重,它就选择在中间范围20%到60%之间的字段去变异。选中间范围的意思就是相关度高的我不去动他,相关度低的它之后就会被简化掉。中间的这些就是不确定的嘛,那我就一直变异它直到它的权重变高或者变低。
    3. 种子选择主要是想追求diversity,作者用NLP Bi-gram模型去衡量能造成crash的输入之间的diversity。然后用up-sampling去平衡crash和不crash的输入的数量。
  3. 网络结构:先用CNN把一维的输入长编码成多个高维的短向量。然后用LSTM以及soft马修去学习权重。最后传到全连接层生成label。
  4. 选择前两个最相关的样本进行简化,对于每一个样本按照权重从高到低简化。通过执行程序来判断简化后还能否触发crash。

总结

  1. 用CNN划分的字段是否符合程序对输入的处理逻辑?
  2. 这篇论文和USENIX2020的一篇论文AURORA思路很像,都是给神经网络传crash了的和没有crash的输入,让神经网络去找区别。

论文阅读_Reducing Test Cases with Attention Mechanism of Neural Networks相关推荐

  1. 论文阅读 - Joint Beat and Downbeat Tracking with Recurrent Neural Networks

    文章目录 1 概述 2 信号预处理 3 分类神经网络 4 动态贝叶斯网络(HMM) 4.1 原始的bar pointer model 4.2 原始的bar pointer model的缺点 4.3 改 ...

  2. 论文阅读笔记:Link Prediction Based on Graph Neural Networks

    文章目录 说明 Abstract 1 Introduction 2 Preliminaries Notations Latent features and explicit features Grap ...

  3. 论文阅读《SuperGlue: Learning Feature Matching with Graph Neural Networks》

    论文地址:https://arxiv.org/abs/1911.11763 代码地址:https://github.com/magicleap/SuperGluePretrainedNetwork 背 ...

  4. 论文阅读之《DeepIlluminance: Contextual IlluminanceEstimation via Deep Neural Networks》

    ArXiv2019 Jun Zhang合肥工业大学 Tong Zheng合肥工业大学 Shengping Zhang哈尔滨工业大学(威海) Meng Wang合肥工业大学 Introduction 回 ...

  5. 论文阅读:Improving Taxonomy-based Categorization with Categorical Graph Neural Networks

    Improving Taxonomy-based Categorization with Categorical Graph Neural Networks 摘要 在搜索和检索中,一个关键的子任务是将 ...

  6. 论文阅读笔记(11)--- Attention is all you need(Transformer)逐段精读

    根据李沐读论文学习一下这篇论文. Transformer Introduction Background Model Architecture Encoder and Decoder Stacks A ...

  7. 【论文阅读】Hierarchical Multi-modal Contextual Attention Network for Fake News Detection --- 虚假新闻检测,多模态

    本博客系本人阅读该论文后根据自己理解所写,非逐句翻译,欲深入了解该论文,请参阅原文. 论文标题:Hierarchical Multi-modal Contextual Attention Networ ...

  8. 阅读笔记:Self-supervised Equivariant Attention Mechanism for Weakly Supervised Semantic Segmentation

    Self-supervised Equivariant Attention Mechanism for Weakly Supervised Semantic Segmentation 基于等变注意力机 ...

  9. 【论文阅读】MFAN: Multi-modal Feature-enhanced Attention Networks for Rumor Detection --- 多模态,谣言检测,注意力机制

    本博客系博主根据个人理解所写,非逐字逐句翻译,预知详情,请参阅论文原文. 论文标题:MFAN: Multi-modal Feature-enhanced Attention Networks for ...

  10. 图像隐写术分析论文笔记:Deep learning for steganalysis via convolutional neural networks

    好久没有写论文笔记了,这里开始一个新任务,即图像的steganalysis任务的深度网络模型.现在是论文阅读阶段,会陆续分享一些相关论文,以及基础知识,以及传统方法的思路,以资借鉴. 这一篇是Medi ...

最新文章

  1. 通过分析exevc系统调用处理过程来理解Linux内核如何装载和启动一个可执行程序...
  2. ​最新综述!基于图神经网络的关系抽取技术进展
  3. 14_面向对象API绘图、图中图 (A Plot inside of Another Plot)、设定绘图范围Setting the Plot Range、对数尺度Logarithmic Scale
  4. java同步关键词解释、synchronized、线程锁(Lock)
  5. 基于Jenkins的开发测试全流程持续集成实践
  6. 【模板】分散层叠算法(P6466)
  7. 大战设计模式【12】—— 迭代器模式
  8. 简述ospf的工作原理_现代数字存储示波器的工作原理简述
  9. python入门练习题3(函数)
  10. Sublime Text 3总是出现“1 missing dependency was just installed.”
  11. struts2 空文件上传解决
  12. 7.UrlHelper
  13. Windows实现微信多开+美化图标
  14. [ECCV2020]Beyond 3DMM Space: Towards Fine-grained 3D Face Reconstruction
  15. Windows如何ping端口
  16. 蓝丝雨零基础DNF脚本开发速成系列
  17. 开发实战:舍得网44587行代码开发经验
  18. 萝卜青菜各有所爱------深谈React和Vue
  19. 如何进行软件系统架构设计?
  20. 满满的大片既视感,还原 Pwn2Own 黑客大赛首日战况

热门文章

  1. 计算机毕业设计android的安卓订餐多商家点餐app(源码+系统+mysql数据库+Lw文档)
  2. 解决在串口调试助手中每次复位后只能发送一次数据的问题
  3. Python中randn()函数的作用
  4. Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
  5. 最优化方法 18:近似点算子 Proximal Mapping
  6. Fragment already added 错误
  7. git版本控制gitosis的安装与使用
  8. 批处理文件rd \s\q **是什么意思?
  9. vmware启动sda assuming drive cache黑屏
  10. HTML5中的SVG是什么?