Go 免疫供应链攻击


Go 官方博客了他们应对供应链攻击的缓解措施。据称,Go 的工具链和设计在各个阶段均包含降低攻击风险的考虑。 所有构建都被“锁定 (locked)” 外部变化(例如发布依赖项的新版本)不会影响 Go 构建。 与其他大多数软件包管理器所使用的配置文件不同,Go modules 没有单独的约束列表和用于锁定特定版本的 lock 文件。参与 Go 构建的每个依赖项的版本完全由主模块的 从 Go 1.16 开始,上述操作默认执行,如果不完整,构建命令将失败。唯一会改变go.mod的命令是 go get和 go mod tidy。这些命令通常不会自动运行或在 CI 中运行,因此这种对依赖关系树的改变通常都是刻意为之,可在代码审查阶段被发现。 这对于安全性非常重要,如果一个模块被入侵并发布了一个新的恶意版本,那么在明确更新该依赖项之前,任何人都不会受到影响,从而为生态提供了审查更改和检测事件的时间。 版本内容永不改变 确保第三方不会影响构建的另一个关键属性是,module 版本的内容不可改变。因为如果破坏依赖项的攻击者可以重新上传现有版本,他们就可以自动破坏所有依赖该依赖项的项目。 这正是go.sum文件的用途。它包含有助于构建的每个依赖项的加密哈希列表。同样,不完整的go.sum会导致错误,并且只能使用go get和go mod tidy对它进行修改。因此,对它的任何修改都会伴随着主观的依赖关系改变。 VCS 是事实来源 大多数项目在开发过程中都会使用版本控制系统 (VCS),在其他生态中,这些项目还需要上传到中心软件包仓库 (比如 npm)。这意味着有两个帐户可能会受到破坏,即 VCS 主机和中心软件包仓库。后者使用得更少,也更容易被忽视。这也意味着更容易在上传到仓库的版本中隐藏恶意代码,特别是如果源码作为上传的一部分被例行修改。 Go 没有诸如中心软件包仓库帐户这类东西。包的导入路径嵌入了直接从 VCSgo mod download 获取其模块所需的信息,其中 VSC 上的标签定义了 module 版本。 仅构建代码,但不执行 Go 工具链有一个明确的安全设计目标:无论是获取还是构建代码,都不会让该代码执行,无论代码是否不受信任或者恶意。 这是一种有意义的风险缓解措施,假如你正在执行一个二进制文件或测试一个只使用一个子集的包模块的依赖。例如,如果example.com/cmd/devtoolx在 macOS 上构建和执行,那么针对 Windows 的依赖或example.com/cmd/othertool的依赖就不可能危害到你的机器。 在 Go 中,不为特定构建提供代码的 module 对于构建没有安全影响。 “复制胜于依赖” 最后一项(也可能是最重要)供应链攻击风险缓解措施也是技术含量最低的:Go 有拒绝大型依赖树的文化,并且更喜欢复制而不是添加新的依赖。 这可以追溯到 Go 的一句谚语:(复制胜于依赖)。 Go module 对自己的“零依赖”标签非常自豪。如果开发者需要使用一个库,他会发现这个库不会让他依赖其他作者和所有者的几十个 module。 这意味着只需少量依赖项就可以构建丰富、复杂的应用程序。毕竟无论工具多好,它都无法消除重用代码所涉及的风险,因此最强的缓解措施始终是只有一个小的依赖树。

相關推薦

2023-08-07

n 语言。 “在过去的几个月中,我们观察到针对 Golang 的供应链攻击有所增加。意识到这种迫在眉睫的威胁后,我们知道是时候将 Socket 已经验证的主动式防护引入 Go 了。” Socket 方面还介绍了在添加 Go 支持过程中所面临

2022-01-11

系统,这个系统对许多恶意软件所具备的反监测手段完全免疫,也不会遭到恶意软件的篡改。 虽然这个系统已经具备极高的可用性,但研究人员表示还需要更多的测试来微调该系统。此外,研究人员还需要定期向该系统提供

2021-12-07

面都能获得巨大的好处:它能够保护用户不受意外缺陷和供应链攻击的影响,而且它们中的任何一个零日漏洞也不会对 Firefox 构成威胁,也能减少我们仓促应付的情况发生。因此,我们打算在未来将 RLBox 继续应用于更多的组件

2022-08-09

perbot-malware-targeting.html   情报订阅 OSCS(开源软件供应链安全社区)通过最快、最全的方式,发布开源项目最新的安全风险动态,包括开源组件安全漏洞、事件等信息。同时提供漏洞、投毒情报的免费订阅服务,社区用户

2022-03-31

M 包。检查后发现这都是针对 Azure 开发人员的新的大规模供应链攻击,攻击者采用了一个自动脚本来创建账户并上传覆盖整个 scope 的恶意软件包,旨在窃取个人身份信息。 除了针对  scope 外,还有 、、 和  也是目标。在

2022-07-15

术行业和 IT 决策者更好地了解其工具的安全性以及软件供应链的依赖关系。 SBOM 的核心是建立一个软件所使用的组件之间在供应链关系上的明确记录,它是一个机器可读的文件,列出了产品中的所有组件,其中也包括所有的开

2022-11-30

系统,结果却再次遭到同样的勒索软件攻击者的攻击。 供应链漏洞:可以采取的步骤之一是审核其供应商和供应商使用的安全措施,以确保端到端供应链的安全。 网络钓鱼:网络钓鱼是企业所面临的主要威胁。对员工进行关

2022-09-15

队;由 OpenSSF 的 Alpha-Omega Initiative (一个专注于开源软件供应链安全的 Linux 基金会项目) 以及该基金会的最新白金会员、Devops 平台供应商 JFrog 提供支持。 Alpha-Omega 和 JFrog 的投资还包括专门的员工资源,“这将使 Rust 基金会

2022-03-16

vue-cli 的依赖项 node-ipc 包正在以反战为名进行供应链投毒,该包在 npm 每周有上百万下载量。 知名技术网站 V2ex 的一条爆出了这个问题,用户  在使用 npm 构建前端项目时,启动项目后桌面自动创建了一个《 WITH-LOVE-FROM-AMERICA.t

2022-07-09

近日,checkmarx 研究人员公开了一起涉及众多包的 NPM 软件供应链攻击事件。 事件最早可以追溯到 2021年12月,攻击者投放了1200多个包含混淆加密的恶意 NPM,这些包含有相同的挖矿脚本 eazyminer,该脚本的目的是利用如 Database 和 W

2022-12-06

的安全性。最近的研究报告显示,恶意镜像已经成为软件供应链攻击中的攻击手段。而软件物料清单(SBOM)是应对软件供应链攻击的工具之一。 什么是SBOM 软件物料清单 (SBOM) 是一份正式记录,其中包含用于构建软件的各种组件

2023-02-17

C++ 组成的软件工件。 越来越关注内存安全以保护软件供应链:现代语言如 Apple Swift、Go 和 Rust (Cargo) 均设计有内置安全机制,使得开发人员在编码时可以觉察到一些潜在问题,从而避免在未来可能遭受的有害软件供应链攻击

2023-04-22

组织在云原生开发方面面临的具体安全风险;包括其软件供应链面临的风险,以及如何降低这些风险以保护其应用程序和 IT 环境。该报告基于对全球 600 名 DevOps、工程和安全专业人士的调查,揭示了组织在云原生采用过程中面

2022-12-10

僵尸网络包含多个模块,包括自我复制、针对不同协议的攻击和自我传播;还使用 WebSocket 协议与其命令和控制服务器通信。它主要针对 Linux 操作系统,以控制易受攻击的设备。 根据介绍,Zerobot 的目的是将受感染的设备添加