在purescript npm安装程序中发现恶意代码

npm 纯脚本

几天前 使用PureScript安装程序在npm软件包的依赖项中检测到恶意代码,这在尝试安装purescript软件包时表现出来。

恶意代码 通过从cwd或npm加载依赖项嵌入 和速度图依赖关系。 应该注意的是,PureScript安装程序的npm软件包的原始作者直到最近才参与维护此npm软件包,但是该软件包已发送给其他维护者,负责与这些依赖项相关的软件包。

关于问题

该问题是由该软件包的一位新分析师发现的在与npm purescript软件包的原始作者进行了许多分歧和丑陋的讨论之后,将维护权转移给了该所有者。

新的维护者 负责PureScript编译器和 他们坚持认为,带有安装程序的NPM软件包应由维护者自己修复,而不是由项目外的开发人员修复。

带有PureScript安装程序的npm软件包的作者很长一段时间不同意,但是随后放弃了,并允许访问该存储库。 但是,有些依赖项仍由他控制。

上周,宣布了PureScript 0.13.2编译器的发布。 新的维护者准备了与安装程序对应的npm软件包更新, 已检测到恶意代码。

恶意代码首先被插入npm包“ load-from-cwd-or-npm” 在3.0.2版中,然后在1.0.3版的rate-map包中。 在最后几天,两个软件包的多个版本已经发布。

从与npm软件包作者一起使用PureScript安装程序的帖子转移到其他地方,他说他的帐户被未知的攻击者破坏了。

然而, 在当前形式下,仅通过破坏软件包安装来限制恶意代码的行为,这是新维护者的第一个版本。 尝试使用命令“ npm i -g purescript”安装软件包而不执行任何明确的恶意活动时,恶意行为被排除。

确定了两次袭击

综上所述, 该代码破坏了purescript npm安装程序,以防止下载完成,导致安装程序在“检查平台是否提供了预编译的二进制文件”过程中挂起。

第一个漏洞利用是通过破坏load-from-cwd-or-npm软件包来实现的 这样,任何对loadFromCwdOrNpm()的调用都将返回传递序列,而不是预期的程序包(在这种情况下,是用于下载编译器二进制文件的请求程序包)。 该漏洞利用程序的第二次迭代是通过修改源文件来防止触发下载回调的。

4天后 开发人员了解了漏洞的根源,并准备发布更新以从依赖项中排除从cwd-o-npm加载,攻击者发布了从cwd-or-npm 3.0.4加载的另一个更新,其中已删除了恶意代码。

但是,几乎立即发布了对另一个Rate-Map 1.0.3依赖项的更新,其中添加了一个修复程序,阻止了下载的回调调用。

也就是说,在两种情况下,新版本的从cwd或npm加载和映射速率的变化都具有明显的偏差。

另外,在恶意代码中,只有在安装新维护者的版本时,该检查才会触发失败的操作,而在安装先前版本时,该检查根本不会出现。

开发人员通过发布已删除有问题的依赖关系的更新来解决该问题。

为了防止在尝试安装有问题的PureScript版本之后在用户的系统上安装被破坏的代码。

最后 开发者推荐 给在其系统上具有上述版本软件包的所有人 删除node_modules目录和package-lock.json文件的内容,然后设置纯脚本版本0.13.2。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。