如果你喜欢我写的文章并想要了解更多相关知识与网络安全相关问题,我推荐你加入交流群!!!
扫码进群
Socket for GitHub 是一个安全工具,帮助开发者保护他们的应用免受软件供应链攻击。它通过监控包清单文件的更改,分析新添加的依赖项并在发现安全风险时提醒开发者。Socket 能够检测各种软件供应链风险,如拼写错误、安装脚本、遥测、本地代码、已知恶意软件/恶搞包等。通过在 GitHub 拉取请求中自动提醒,Socket 为开发者提供了一种可靠的方式来防止潜在的安全问题。
这款产品使用 ChatGPT 检查每个 npm 和 PyPI 包的安全问题,并形成相关报告。它可以链接 Github 库进行分析,并且有一个优势就是部分功能是免费的。
从供应链、依赖包、代码质量、严重的 CVE、开发者维护周期、资质等方面进行综合评分,实现了一些比较直观的自动化。它可以对软件依赖包进行一定层次的匹配,从而比较容易发现攻击者投毒和不规范代码的问题。
功能点:
依赖性分析:
CVE分析:
我们一直在使用AI来应对这些挑战。尽管ChatGPT等人工智能系统仍处于起步阶段,但它们具有巨大的潜力。我们一直致力于探索这些系统,改进工具以利用它们的优势并最大限度地减少它们的弱点。我们的内部威胁源已经几个月使用GPT-3和最近的GPT-4,展示了令人印象深刻的结果,特别是在分析不常见的代码模式时。
产品介绍:
Socket for GitHub 帮助成千上万的开发人员保护他们的应用程序免受软件供应链攻击。
今天,数以千计的组织依靠 Socket 来防止坏包渗入他们的软件供应链。
快速概览
Socket 监视“包清单”文件的更改,例如 package.json、package-lock.json 和 yarn.lock。每当在拉取请求中添加新的依赖项时,Socket 都会分析包的行为并在存在安全风险时留下评论。
通过静态分析开源包及其依赖关系,Socket 检测供应链攻击的迹象。当软件包以与安全相关的方式发生变化时,Socket 会提醒开发人员,突出显示安装脚本的引入、混淆代码或特权 API(如 shell、网络、文件系统和环境变量)的使用等事件。
Socket 自动监控 GitHub 对这些软件供应链风险的拉取请求以及更多:
检测潜在的打字错误
检测安装脚本
检测遥测
检测本机代码
检测已知恶意软件
检测抗议软件/巨魔包
安装脚本
npm 包管理器允许包指定一个“安装脚本” ——一个任意的 shell 命令——它会在安装包时立即运行。安装脚本通常用于构建本机代码、打印捐赠横幅或执行其他安装后任务。然而,这个(反)特性很容易被滥用。
npm 上的绝大多数恶意软件都使用安装脚本来传递其有效负载。事实上,一篇2022 年的论文发现近 94% 的恶意软件包至少有一个安装脚本。
我们发现 93.9% [...] 的恶意软件包至少有一个安装脚本,表明恶意攻击者经常使用安装脚本
尽管恶意软件普遍使用,但实际上安装脚本在 npm 生态系统中非常罕见。大多数应用程序只有少数使用此强大功能的依赖项。
Socket 现在可以识别新添加的包何时包含安装脚本,或者更令人担忧的是,现有包的新版本何时引入了新的安装脚本。当 Socket 识别出一个新的安装脚本(一种相对罕见且高度可疑的事件)时,它会通过 GitHub 评论提醒开发人员,以便他们评估安装脚本是否安全。
在这个来自用户 repo 的真实示例中,Socket 检测到流行的软件包决定在 5.3.5 版本中添加一个“protestware”安装脚本:styled-components
为了帮助开发人员进行调查,Socket 提供了一个指向将在安装步骤中运行的确切脚本的链接。
在这种情况下,安装脚本是软件的良性实例,尽管有些软件更具破坏性。
实时数据
网站或应用程序通常包含一个实时数据系统,用于收集有关用户如何与产品交互的数据。这些数据可以帮助改进产品、发现错误,甚至检测滥用行为。虽然应用程序中的遥测相对常见,但开源包中的实时数据却很不寻常。
我们从用户那里听说,他们不希望他们的依赖项收集遥测数据并将其发送到远程服务器。不幸的是,开源依赖项中的遥测正变得越来越普遍。
Socket 现在可以检测收集遥测数据的包,提醒开发人员,并提供有关如何禁用遥测数据的可操作信息。
在这个真实示例中,Socket 检测到新引入的依赖项正在收集遥测数据:angular-calendar
Socket 有助于识别收集遥测数据的包,并提供有关如何选择退出遥测系统的信息。@scarf/scarf
团队现在可以使用 Socket 将收集遥测数据的依赖项保留在他们的代码库之外,或者禁用遥测功能。
本机代码
包含本机代码的包,即编译后的可执行文件,在 npm 上很少见,但也有一些。本机代码通常用于与数据库接口、对性能至关重要或围绕本机代码提供 JavaScript 绑定的包中。
从安全角度来看,本机代码并不理想。包含二进制文件的包更难审核,因为源代码可能不可用,您可能需要二进制反汇编器来了解包行为。使事情复杂化的是,软件包可能包含针对每个支持的平台和处理器架构的不同二进制文件。更糟糕的是,恶意行为者可能会使用本机代码来隐藏他们的恶意软件,使其免受 JavaScript 静态分析工具(如 Socket 或 ESLint)的攻击。
在更基本的层面上,本机代码可能会阻止包在某些环境中运行,例如浏览器、Vercel Edge Functions、Cloudflare Workers 或 Deno。
Socket 现在可以检测包含本机代码的包并提醒开发人员,提供有关如何在本机代码可选的情况下禁用本机代码的可操作信息。
这种检测还可以找到做奇怪事情的包,例如使用像.deasync
已知恶意软件
当 Socket 确认包中包含恶意软件时,我们会将其报告给 npm 并将其添加到我们在 npm 上的已知恶意软件列表中。我们的第一要务是从 npm 中删除恶意软件以保护 JavaScript 生态系统,无论这些用户是否使用 Socket。
当 npm 正在调查该软件包时,该恶意软件仍然可以在 npm 上使用。
Socket 现在可以通过检测何时安装了错误的软件包版本并在 GitHub 拉取请求中直接向开发人员报告来保护用户免受已知恶意软件的侵害。Socket CLI(即将推出!)还将为开发人员提供一种方法,通过拦截不良命令来保护他们自己的设备免受已知恶意软件的侵害。npm install
相关:Socket tracks packages removed from npm for security reasons这很有趣。这也是查看 Socket 在 npm 恶意软件的真实历史实例中检测到哪些包问题的好方法。
npm
npm 包含许多低质量的包、笑话、模仿或其他包含不打算在生产中使用的代码。
例如,有一个名为Bowser 主题版本的软件包。这个模仿包对包进行了一些更改,例如包含 Bowser(是的,任天堂角色)的图像并将额外的代码添加到它生成的任何 JavaScript 包中 - 哎呀!bowserifybrowserify
一些 npm 包的命名方式旨在欺骗或混淆用户,例如旨在混淆. 当用户将命令行标志输入.standardjsstandard-npm install
Socket 现在可以通过在 GitHub 拉取请求中直接向开发人员内联报告来保护用户免受此类误导性包的侵害。
错别字
最常见的攻击媒介是域名仿冒。
域名仿冒是指攻击者发布的包与合法且流行的包具有非常相似的名称。以这两个名称非常相似的包为例:
npm install noblox.js-proxiednpm install noblox.js-proxy
其中之一是合法的,其中之一是恶意软件。但哪个是哪个?如果你不记得了,所以你只是猜测怎么办?
有了 Socket GitHub 应用程序,打开拉取请求的开发人员(或审查它的开发人员)就会注意到这个潜在的错误抢注。
下载地址
下载链接
https://socket.dev/
如有其他问题,也可以联系作者微信。
请作者喝杯喜茶吧!如果你喜欢我写的文章并想要了解更多相关知识与网络安全相关问题,我推荐你加入星球。 免责声明 所有资料均来源于网络分享,仅限用于个人学习交流,禁止任何违法操作和非法用途!由使用者产生的任何责任,与作者和本平台无关!
原文始发于微信公众号(安全女巫):一款基于ChatGPT进行软件供应链分析的产品(npm和PyPI 包)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论