当允许公共访问私有注册表时,防止无意的软件供应链暴露

在JFrog,我们非常重视软件供应链的安全。作为CVE编号机构,我们的JFrog安全研究团队定期发现并披露对开发组织构成威胁的新的恶意包和漏洞。我们知道,为了按需交付值得信赖的软件,您必须有一个安全的软件供应链——使安全成为我们所做的一切的优先事项。

虽然组织经常过度关注查找cve,阻止恶意软件包或运行时攻击,但我们不能忘记用于管理和交付供应链的工具的安全性。这些工具中最基础的可能是存储和管理包、构建、二进制文件和工件的地方——比如JFrog Artifactory。让我们来看看一个关键的领域,如果你不小心,可能会使你的组织受到软件供应链攻击——允许公众访问你的私有注册表或存储库。

允许公共访问您的私有注册中心

拥有私有包存储库和注册中心的全部意义在于确保控制软件供应链中包含哪些软件组件以及谁可以访问它们。那么,为什么您要允许互联网上任何随机的人访问您的私人注册表呢?

企业希望允许匿名用户访问其注册表/仓库有许多合理的原因:

  • 提供方便的访问/下载面向公众的软件,如库和sdk
  • 与需要访问最新版本的第一方软件组件的内部或外部开发团队合作
  • 允许公众访问非敏感信息,如文档
  • 支持与第三方应用程序和服务的集成和自动化
  • 为开源项目做出贡献

允许公共访问仓库/注册中心的问题出现在以下情况:它们被意外地公开,或者包含敏感信息(如用户令牌、凭据和密钥)的构件意外地存储在具有“公共”访问权限的存储库中。

避免错误配置和意外曝光

好消息是,无论您是否打算允许公众访问您的注册中心,保持这部分供应链的安全都是相当简单的。这里有四个简单的步骤,你可以采取,以防止无意中暴露自己。

1.再次检查你的安全配置

这可能是你今天可以做的最简单的预防措施(也许你应该在读完这篇文章后花一点时间去做!)。私有注册中心/回购的第三方解决方案通常具有允许管理员设置回购/注册中心是否可以由不在您的开发组织下管理的用户访问的配置。

例如,以下是你如何检查你不会意外地在Artifactory中打开此设置的方法:

作为管理员,登录并导航到“系统管理>用户管理>设置”(参考下图截图)。

如果“允许匿名访问”设置被选中,你就打开了大门,允许未登录的用户访问你的仓库。

2.仔细检查你的用户权限

如果您确实希望允许非登录访问注册中心,那么最好仔细检查匿名用户可以访问哪些仓库/注册中心中的构件并对其进行处理。您的解决方案应该具有健壮的RBAC设置,包括针对匿名用户的设置。

对于Artifactory,您可以通过导航到系统管理>用户管理>用户>“匿名”用户(参考下图截图)。

当您单击用户时,您可以看到匿名用户被授予的权限。在Artifactory中,您可以创建权限集,然后向其中添加用户/用户组。你可透过“用户管理”下的“权限”一栏管理你的权限(有关更多详细信息,请参阅文档)。

我们推荐的最佳实践是将匿名用户设置为只读,并清楚地定义他们可以访问哪些仓库。

3.将公共和私人内容分开

至少,您应该为打算公开使用的工件建立单独的存储库。然而,最佳实践是不要在同一个Artifactory实例或您使用的任何存储库/注册中心解决方案中混合私有内容和公共内容。相反,应该使用不同的权限和访问控制集将公共和私有资产保存在不同的实例上。

明确定义组织中谁可以将工件部署到面向公众的实例中,并定期检查这些注册中心的内容,以确保只有适当的工件存储在那里。

这些操作确保私有内容不会无意中与私有资产混在一起,并减少错误配置的可能性。

4.扫描面向公众的注册表,寻找秘密

在你仔细检查了所有的设置和权限,并创建了一个专门的空间来管理公共内容之后,你还可以添加一个额外的保护层——利用安全工具来扫描面向公众的注册表/仓库的内容秘密。执行最后一步将有助于确保您不会通过repo/注册中心中的组件暴露敏感信息。

如果您正在使用JFrog Artifactory和Xray,则可以将此配置为在工件部署到面向公共的存储库时发生,甚至在检测到秘密时自动阻止工件的部署。

首先防止错误配置

JFrog是严重的关于安全的软件供应链,从其中的组件到用于交付它们的工具。虽然允许匿名访问私有存储库是Artifactory支持的一个特性,但它在默认情况下是不启用的。看到我们可以做更多的事情来保护我们的用户不被错误地配置对存储库的公共访问,我们正在采取以下行动,并建议其他解决方案提供商也这样做:

  1. 除了更新这些设置周围的标签外,还更改UI,以减少错误选择设置的可能性
  2. 如果设置了可能影响供应链安全的配置,管理员将以简单的语言提醒其含义,并且必须验证配置的目的。
  3. 默认设置高度限制“匿名”用户(如果启用)在面向公众的注册表中可以访问和执行的操作。

现在您知道了如何防止无意中暴露私有注册中心/仓库,并在有意这样做时降低风险。如果您想了解如何更好地保护您的软件供应链,请查看我们的定期解决方案工程会议JFrog ArtifactoryJFrog x光在这里,我们将回答您的问题,并分享使用JFrog平台交付值得信赖的软件的最佳实践。

感谢Aqua Nautilus的同事,Aqua Security的研究团队最近强调了这一问题。