G.O.S.S.I.P 阅读推荐 2023-08-25

你(继2003年和2011年之后)又囤盐了吗?还是直接去买了“盖革一响,爹妈白养”的 Geiger-Müller counter?我们今天也来蹭蹭污染的热度,介绍2023年 USEINX Security 会议上关于代码供应链污染的论文 Beyond Typosquatting: An In-depth Look at Package Confusion

就像你可能在高中毕业以后就根本不记得碘的原子量是多少,但是现在好像对碘-131这种放射性同位素了如指掌一样?乍一看到论文标题里面的 typosquatting 不知道是啥,先别慌,这个其实就是攻击者利用大家打字输入容易犯错(例如 causal 和 casual 傻傻分不清),注册了一个和真实的产品名称(域名/包名/软件名等)很像的“李鬼”。然后坐等文盲用户上钩。

本文作者为了深入调查 typosquatting 相关攻击在当前的包管理器(package manager)生态中的现状,开展了深入分析。首先作者阐述了研究的目标——分析有多少类型的拼写错误导致 package confusion 这种因为软件包名称类似产生的误用,同时设计分析算法去识别这些类别的错误

为了实现研究目标,作者首先搜集了1232例已知的 package confusion attack,建立了一个参考的攻击数据集,在这个数据集的基础上,进一步记录了 npm 生态环境里面1826923个 package 的名字,作为分析研究的重要对象。

作者还指出,以前的研究都是由人(专家)主导的,而他们的工作需要更加客观一点,按照下图的研究路线进行:

作者首先总结了13类由于 typosquatting 引发 package confusion 的情况,如下表所示:

接下来,为了能够更好地针对 package name 进行分析,作者观察并总结了大部分情况下 package name 的一个特点——使用了夹杂着大量非人类词汇(主要是一些缩写,例如 jspy等等,又叫做 technical jargon)的拼写方式。当然这种特色在计算机代码里面已经不是什么新鲜事了,此前很多针对代码中函数名、变量名的分词,都会考虑这种特点。G.O.S.S.I.P 的 Goshawk 工作中,就是把 StackOverflow 上的语料库拿过来帮忙训练分词。

总结了相关的类型,并且能够很好地分词,接下来就可以大规模对现有的 package name 进行分析,检测潜在的 confusion 情况。作者首先对 npm 生态中的流行和冷门(区别在于每周下载量是否超过15000次)包进行了分析,试图找到那些冷门的包试图去伪装成流行的包的情况:

作者还招募了人类开发人员,让他们去审查所发现的这些 confusion 的案例,看这些案例中到底有多少是人类都觉得容易弄错的:

最后作者对这些发现的 package confusion 的(恶意)目的进行了简单的分类:

不过我们实在是为这些攻击者感到不值,下面给你们展示下真正的供应链攻击:


论文:https://www.usenix.org/system/files/usenixsecurity23-neupane.pdf
Slides:https://www.usenix.org/system/files/sec23_slides_neupane.pdf


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐