TrustCom会议小记 | xxxTrustCom会议小记 – xxx
菜单

TrustCom会议小记

十月 31, 2021 - 安全维基

TrustCom会议小记

会议名称:International Conference on Trust, Security and Privacy in Computing and Communications(TrustCom 2021)

会议地点:Shenyang, China

会议时间:20-22 October, 2021

笔记作者:outx, catch22, WhileBug, 樱花树下斯巴鲁

笔记小编:cherry@SecQuan

Here’s Outx Speaking

嗨,这里是outx,很荣幸能够参加TrustCom 2021会议,并讲演自己的论文。这是我第一次遇到这种需要用全英文作讲演的情况,整个讲演的流程包括了PPT的演示和现场听众的答疑。

对于自己论文的介绍这一部分来说,全英文汇报的难度并不大,首先是因为在写论文的时候大量的内容或者说这篇论文中涉及到的大部分英语词汇和短语都已经很熟悉,通过短期的朗读和背诵是能够达到铭记于心的效果的;其次就是在讲演时通常会有演讲者视图,如若没有也可以准备提词本,以达到良好的讲演效果。当然,提前熟悉PPT,按照PPT上的Keynote讲的话现场效果更佳(我已经尽可能这样做了😭)。

对于现场听众的答疑这一部分来说,由于现场听众的英语水平不同(国内举办的会议,国人居多)、听力/理解能力不同、对同一个事情的看法观点不同,提出的问题不尽相同。这就会出现哪怕提前准备了一些问题但还是会被问到没有准备的地方,这个时候由于本身不是长期生活在英语交流的环境中,灵活的运用英语进行问答交流是一件特别困难的事。但这个情况也有应对之法,首先提前准备问题是很有必要的一件事,不论听众如何提问,可以适当的将其问题引至自己准备过的问题上,如果实在没有准备这方面的答案,可以适当的阐述自己目前在这个方面所做的工作,再表明在以后的实验中会加入相关考虑,最后表示对这个问题的感谢。

Malicious Packages Lurking in User-Friendly Python Package Index

本文主要是针对目前PyPI(所有Python组件包的索引)生态现状的一次调研,研究了针对pip安装工具的投毒攻击,这是一类供应链攻击问题,涉及开源软件库安全。

0x01 Intro

Python由于其在人工智能领域的火热,已经逐渐成为了世界第三受欢迎的开发语言。这很大程度上归功于开源组件索引PyPI及其安装工具PIP。但在我们探究PIP安装过程中,我们发现有许多攻击人员针对PIP这一安装过程展开了攻击。我们针对目前所有的独立检测方案进行了分析,找出了其各自的一些短板,最终打算将异常检测这一概念引入至PIP投毒攻击检测这一领域,设计并实现了一个用于检测PIP投毒的工具,PPD(pip poisoning detection)。

0x02 Method

TrustCom会议小记

上图是整个PPD的结构图,主要分为三个部分:数据预处理,特征提取,模型训练及结果输出

数据预处理

所有实验用到的组件包均是从PyPI及其镜像站中下载的,在这部分流程中,我们主要是创新性提出了入口文件这个概念,并根据PIP的安装流程设计了一套用于提取入口文件的方案。具体来说,针对tar.gz的安装包,我们提取其setup.py,针对whl/zip的安装包,我们提取其__init__.py或是以组件包名字命名的py文件。当获取到了这个入口文件之后,我们将利用AST对其进行解析,获取Import节点和ImportFrom节点,这两个节点中包含有所有需要引入的额外文件。我们会遍历整个安装包,以找到那些存在于包内但又被入口文件所调用的py文件,然后合并以形成完整的安装时运行代码。

特征提取

我们将所有特征分为代码特征和组件包特征。

对于代码特征来说,我们主要设置了11种场景特征,包括代码执行、外连请求、目录遍历、文件操作、敏感文件读取、压缩与解压缩、引入其他文件、最长字符串、编码与解码、IP/URL、entry_points内容。我们首先会利用AST去解析整个代码,但是会存在AST解析不成功的情况,这时候便利用正则来处理,具体的可以阅读论文。

对于组件包特征来说,在前期的实验中我们加入了例如版本号,发布时间,作者人数等诸多维度的特征,但在实验结果中反馈并不好,于是我们最终选择了能够快速检测针对开发人员误拼写(最常见的一种攻击手段)的特征,即组件包名称的编辑距离

模型检测及结果输出

在选取模型的时候,我们主要需要解决三个问题:

  1. 特征维度较高时,需要一个很大数据集:由于PyPI体量很大并且在不断增长,我们是能够构建一个很大的数据集的
  2. 一些低密度区的样本容易被认定为异常样本:我们分析了所有代码长度小于100的组件包,分析其代码长度分布情况,最后我们发现长度小于等于10的组件包占了43%,这一些组件包我们可以很容易一眼看出其性质
  3. 预定义的样本分布情况会严重影响到模型输出:我们选择了孤立森林模型,主要是因为其利用切割的方式来分割样本而非通过描述正常样本来区分异常。

在做模型训练时,由于我们无法保证在训练样本中是否会混杂恶意样本,因此我们采用反向交叉验证的训练方式,以此来尽可能减轻由于错误引入恶意样本至训练样本中所引起的误差。同时,由于训练样本的减少,我们考虑分别使用3、5、10折反向交叉验证后去重输出的方式,尽可能保证输出可能性最大的异常样本集合。

在人工审查阶段,我们通过分析几十个以往披露的恶意python组件包,初步制定了一套用于判断组件包行为的规则,具体来说,

应当被认定是可疑组件包的行为包括:

  • 执行外部文件(.sh or .exe)
  • 包含编码后的字符串
  • 下载远程资源并解压
  • 读取文件并且执行
  • 修改系统配置文件或私自打开服务

应当被认定是恶意组件包的行为包括:

  • 下载远程文件并且执行
  • 创建反弹shell
  • 盗取敏感数据
  • 解码后执行
  • 明显的恶意代码或后门

0x03 Conclusion

简单来说,我们所做的工作主要是想要减轻针对整个PyPI生态进行检查的时候的工作量,目的在于发现那些在野的恶意组件包以说明此项工作的必要性,但这也存在着一些局限性,例如针对那些在安装的时候不触发,而在代码中import的时候触发的恶意组件包PPD并没有很好的检测效果,亦或是针对那一类功能单一但的确包含恶意代码的组件包我们的方案也暂时无能为力。

在未来的工作中,我们会总结并处理这一些细节上的东西,以进一步优化和提高我们的方案命中率。

最后的话

对于上台讲演这种事,还是需要很大的勇气的,尤其是这种需要脱离母语环境的讲演。这次会议还好是在国内,国人居多,老外也都是一些留学生,所以我也没有特别紧张。但这并不意味着,做好讲演准备、上台做汇报、与听众交流讨论是一件易事,相反,这是一件费时费力且效果不明显的事。直到现在,我的英语交流能力也不太行,中文语言逻辑和英文语言逻辑的区别还是太大了,需要后面多多练习才可。

再接再厉,认真努力😊

Here’s catch22 Speaking

大家好,我是catch22,这是我第一次参加线下的学术会议,会议的地点在辽宁的省会沈阳,会议的主办方安排工作做的很好,旁听其他感兴趣的presentation的时间一点也不冲突,也交了很多朋友,是一次很棒的体验~;

第一次参会还是比较紧张的,首先紧张的是现场的环境,担心是否会有chair对核心技术的立意产生质疑,其二是担心自己的slides是否做的不够精美,第三是担心口语是否没表述清楚;

对于第一点,会议的环境还是比较轻松愉快的,没有特意刁难自己的问题;当对方产生疑问的时候,实事求是地回答,即使是自己的部分有一些缺陷,坦诚说出来,也许对方会说: well, it is still an excellent work;

对于第二点,会议的slides,我认为还是尽量图文结合,不要很多文字平铺直叙,用短语短句来展示,幻灯片放映的动画来帮忙组织逻辑,简约大气就可以;

对于第三点,自己的口语确实比较差,还是希望能够多和英语母语的人进行交流,在展示的时候怕对方听不懂,我选择讲的慢一点再慢一点,当然口语还是需要继续提升呀~

DeepVuler: A Vulnerability Intelligence Mining System for Open-Source Communities

我们知道,开源代码库在软件开发中起着重要的作用,每个人都可以使用第三方生态系统的开源项目和库,它可能会引起多米诺骨牌效应,并使这些产品继承一些功能,如果某些特定的功能与漏洞有关,在引用库的时候会产生很可怕的后果。这些开源社区的开放性和继承性带来了一连串的安全问题。

相关背景:

  • 像CVE和NVD这样的漏洞管理机构提供的覆盖面不够,导致缺乏及时可靠、详细的开源项目漏洞信息。
  • SCA或安全产品则是对已知的公共组件进行分析,但它们仍然存在上述问题,只提供单一的检测面。
  • 一些相关的工作,如Vccfinder、vuldeepecker等,有很高的假阳性率,在我们的实验中表现得不是很好。

作者设计了一个名为DeepVuler的漏洞智能挖掘系统,基于开源社区的线程和差异代码分析,利用机器学习和深度学习,更早、更全面、更准确地检测出漏洞。

用户在开源项目中检测到一些漏洞,并以多种方式展示。主讲人描述了他们设计系统的思路过程,在研究中,他们发现许多开源用户选择在社区中以开启帖子或提交修改过的代码的形式提出漏洞情报。所以DeepVuler包括两个检测模型:第一个目标是研究如何挖掘线程中的情报。第二个目标是研究如何挖掘漏洞代码与补丁。

作者首先介绍了如何进行漏洞相关内容挖掘:首先挖掘了安全公告和机构的漏洞,并完成了特征分析,他们分析了漏洞情报和一般计算机相关对话的区别,分为四类,它们是文本特征组、行为特征组、用户特征组和项目特征组。它们总共有27个特征。经过不断的实验和比较,最终选择了随机森林算法用于帖子中的漏洞检测。

之后,作者描述了他们组织差异性代码检测的思路:通过NLP的技术进行漏洞代码的启发式检测,将差异性代码进行向量化,之后放入他们自主设计的FGA神经网络中进行训练。

最后,主讲人展现了他们的成果,主要集中在三个方面:

  1. 两部分的检测模型能够有一个较好的检测效果,具体来说,对于漏洞帖子的检测达到了96%的检测率;对于漏洞代码,达到了89%的检测率;
  2. 作者发现,帖子中经常会有一些差异代码,帖子和差异性代码检测的结合可以更详细地发现额外的情报。更具体地说,如果在帖子、个人提交或版本更新等任何地方发现了差异代码,我们的系统就可以进行更全面的挖掘;
  3. 从开源社区到官方漏洞机构的传输时间有一定的延迟,通过实验,平均可以提前28天发现它们。

Here’s WhileBug Speaking

大家好,我是WhileBug。这是我第二次参加学术会议,也是我第一次参加线下的学术会议(第一次学术会议是线上开的,因为疫情)。

第一次参加线下的学术会议还是比较激动,TrustCom举办的会议地点是在沈阳,第一次来到北方,还是感觉挺冷的,瑟瑟发抖{{{(>_<)}}}。

对于学生来说,学术会议最头痛的莫过于两点了,第一点就是展示PPT的制作。如何很好地将自己论文的思路展示出来是一项技术活,我总结了以下几个要点:

  • 文字尽量精炼,不要堆砌文字,文字太多观众不会看的,可以适当标黑自己认为比较重要的地方,方便听众看懂
  • 遇到需要流程性地阐述自己思路的地方,尽量使用流程图的方式展示
  • PPT的讲解顺序参照自己的论文,不要乱

另外一个难点就是全英文讲解了。很多学生没有经历过全英文环境,因此在进行全英文讲解以及用英文回答听众的问题会比较惶恐,这里建议大家平时可以多用英文和别人进行学术上的交流,锻炼自己的英文听说读写能力。

在开会期间遇到自己很感兴趣的一篇文章,和大家分享下:

Protecting the Ownership of Deep Learning Models  with An End-to-End Watermarking Framework

TrustCom会议小记

大多数主要科技公司使用深度神经网络作为构建人工智能产品的关键组件和服务。就现阶段而言构建深度神经网络模型所需要克服的最大困难之一:就是大规模标记数据集,这需要耗费大量计算资源,也需要研究人员具有高度专业化的领域知识。因此,作者认为模型所有者应当拥有模型的知识产权。

作者设计了一种保护知识产权的技术,来保护深度神经网络模型设计者的权利并允许所有者从外部验证其版权是非常重要的。通过统计分析大量预训练的网络参数,作者提出 一个端到端的网络模型保护框架—— 基于分布网络模型参数的DeepWater框架。

TrustCom会议小记

首先,作者提出一个新的研究问题:将水印嵌入到深度神经网络中。我们也 定义深度神经网络中的水印要求 网络、嵌入情况和攻击类型。其次,作者提出了一个通用框架,将水印嵌入到每个卷积网络层参数分布函数。作者的方法不会损害被放置了水印的网络的性能, 因为水印是在宿主网络被训练时嵌入的 。最后,作者进行了全面的实验揭示水印深度神经网络的潜力。作者进一步证明了该框架可以在训练过程中嵌入水印,并在不影响其性能的情况下进行微调和蒸馏。即使在迁移学习和水印叠加操作之后,嵌入的水印不会消失。甚至如果修剪了 65% 的参数,则水印仍然完整存在。

Here’s 樱花树下斯巴鲁 Speaking

大家好,我是樱花树下斯巴鲁,这次是以与会人员的身份去的。最大的感受就是,参会之前可以对会议的program进行了解,选择几个自己感兴趣的议题,查阅相关资料,能够帮助更好地理解演讲者所要表达的思想;此外,如果有比较深刻或复杂的问题需要与演讲者交流,可以在会下单独交流,避免占用过多会议时间,影响会议进程的推进。

Paper 1:DroidRadar: Android Malware Detection Based on Global Sensitive Graph Embedding

  • 概述

文章主要讲的是安卓恶意软件检测的内容。作者在文章中提出了一种名为DroidRadar的安卓恶意软件检测系统;该系统基于轻量级图嵌入技术,通过将安卓应用程序集合构建为一个全局图模式,使用敏感API作为桥接点传播应用程序之间的信息;作者从不同角度进行了统计分析以模拟应用程序对敏感API的使用模式,借助图卷积神经网络实现检测。

  • Workflow
TrustCom会议小记
  • 方法创新性

    1. 提出了GSG,一种全局敏感图模式,能够模拟整个安卓应用程序集;
    2. 从包括基于方法级共现行为的相关性类粒度的功能语义相似性等多角度对敏感API对之间的相关性进行建模;
    3. 使用图卷积网络实现恶意软件检测,避免了复杂的图匹配技术。
  • 实验

    • 数据集和评估结果
TrustCom会议小记
  • 方法比较
TrustCom会议小记
  • 检测恶意软件家族上的表现
TrustCom会议小记

Paper 2:Malware Classification by Learning Semantic and Structural Features of Control Flow Graphs

  • 概述

这篇文章同样是针对恶意软件检测的研究。作者在文章中提出了一个名为MCBG的恶意软件分类模型;模型将BERT和具有JumpingKnowledge(GIN-JK)的图同构网络相结合,以捕捉CFG内部的语义和结构特征。

  • Framework
TrustCom会议小记
  • 方法创新性

    • 通过语义建模结构建模提取CFG的语义和结构信息;
    • 基于BERT实现语义建模,学习指令间的上下文关系,生成基本块的语义嵌入,实现从CFG到ACFG的转换;
    • GIN-JK应用于具有语义节点特征的ACFG以实现结构建模;
  • 实验

    • 数据集
TrustCom会议小记
  • 评估结果
TrustCom会议小记
  • 不同语义模型和结构模型之间的性能比较
TrustCom会议小记
  • 与现有方法的比较
TrustCom会议小记
安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com

TrustCom会议小记




Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51