前几天随公司参加了互联网安全大会(ISC,Internet Security Conference),虽然只参加了半天的会议,感觉收获不。更重要的是偶遇师兄,人生无处不相逢的感觉,记录一下当时的会议内容也当作一下偶遇的纪念。
2018.9.5 ISC - 人工智能与安全论坛:智能与安全的融合与对抗
合作机构:中国人工智能学会人工智能与安全专业委员会(筹)
论坛主席:Dawn Song
主持人:李康 360智能安全研究院院长
致辞
Dawn Song
加州伯克利大学教授
没说啥实质内容,Dawn Song给人的感觉是一个年轻有为的华人女性,有李飞飞的感觉。听主持人说这领域的众多专家都是他的学习,主持人开玩笑道,为了让演讲者好好演讲,把他们的老师请过来监督他们。
致辞
谭晓生
中国人工智能学会人工智能与安全专业委员会(筹)发起人
360集团技术总裁 首席安全官
最早听说国外同行用机器学习做搜索,最开始他不相信,认为是在忽悠,后来评分结果出来了确实机器学习结果更好,他怀疑是评分机制有利于机器学习,最后才体会出确实人工智能机器学习很厉害。
受到这个启发,360很早就开始使用机器学习来做病毒检测,发现使用深度学习的模型具有高检出率,但是误报率很高,加入白名单之后能得到一个还不错的模型,最后又结合其他的方法,降低误报率,得到了一个很好的模型(没说具体是啥方法,感觉像是工程上的技巧)。然后他最后总结说希望大家“有所收获,有所行动”,感觉这个结尾不错,学到了。
基于DNN的二进制代码相似性检测
张超
清华大学网络研究院副教授
主持人介绍他是做比赛,写paper的style。
二进制代码相似性检测(Binary Code Similarity Detection, BCSD)
目的:
- 代码克隆检测
- 恶意代码检测
- 相似漏洞挖掘
- 补丁对比分析
- 逆向工程辅助
难点:
- 跨平台
- 跨版本
- 跨编译器
现有方案:
- CFG:相似的代码具有相似的映射(不同函数之间的调用拓扑图),代表谷歌的BinDiff,缺点:图同构尚无多项式时间解法,特征工程会引入人为偏见
- SMT:有约束求解器判断函数片段的语义相似性,缺点:负载效率低
- 动态方法:在受控的随机(仿真)环境中对程序做片段质心,基于观察到的运行时行为特征,判断函数的相似性。缺点:部署灵活性低,把函数跑起来也不是很容易的事情
解决方案:αDiff: Cross-Version Binary Code Similarity Detection with DNN
刻画代码,把函数分成三部分:
- 函数代码:Intra-Func特征
- 函数与文件内其他函数的交互关系:Inter-Func特征
- 函数与其他文件的交互关系:Inter-Mod特征
函数相似性=三个特征的距离之和
Intra-function Semantic Feature
把二进制代码用神经网络embedding为一个64维的向量
感觉核心是使用了一个Loss函数,因该就是triplet的另外一种表达方式,contrastive loss function:
定义两个函数的intra-function features的距离为:
D 1 ( I q , I t ) = ∣ f ( I q ; θ ) − f ( I t ; θ ) ∣ D1(I_q,I_t)=|f(I_q;\theta)-f(I_t;\theta)| D1(Iq,It)=∣f(Iq;θ)−f(It;θ)∣
the distance of two functions’ intra-function features定义为: L ( θ ) = y ⋅ D 1 ( I q , I t ) + ( 1 − y ) ⋅ m a x ( 0 , m − D 1 ( I q , I t ) ) L(\theta)=y\cdot D1(I_q, I_t)+(1-y)\cdot max(0,m-D1(I_q,I_t)) L(θ)=y⋅D1(Iq,It)+(1−y)⋅max(0,m−D1(Iq,It))
如果两个代码相似 y = 0 y=0 y=0,否则 y = 1 y=1 y