宣布 nohttp

工程 | Rob Winch | 2019年6月10日 | ...

我很高兴地宣布 nohttp 项目,它允许用户查找、替换和防止使用http://

背景

今天,Jonathan Leitschuh 发布了一篇题为 Want to take over the Java ecosystem? All you need is a MITM! 的博客文章。该博客文章演示了数百个 Java 库正在通过 HTTP 下载依赖项。这使得这些项目容易受到潜在的 中间人 (MITM) 攻击

不幸的是,有多个 Spring 项目正在使用 HTTP 下载依赖项。幸运的是,我们没有发现任何成功的 MITM 攻击迹象。我们也已经解决了这个问题,以确保将来不会发生任何 MITM 攻击。

Spring 团队的应对

Spring 团队非常重视安全。自从发现存在 Spring 项目通过 HTTP 下载依赖项以来,我们已经采取措施以确保将来不会发生 MITM 攻击。最明显的改变是更新 Maven 存储库位置以使用 HTTPS。但是,我们已经更进一步,几乎在所有地方都切换到使用 HTTPS。

现在是 2019 年,因此,希望很明显我们为什么想要删除 HTTP 的使用。使用 HTTPS 是 快速简单免费提供 的,因此没有理由继续使用 HTTP。作为开发人员,重要的是我们帮助世界过渡到在任何地方都使用 HTTPS(甚至 静态站点也需要 HTTPS)。

我们当然不是唯一试图消除 HTTP 使用的团队。Let’s Encrypt 的成立是为了使 HTTPS 免费、自动化和开放。Chrome 已更新其用户界面 以指示 HTTP 不安全。Maven Central 已弃用 HTTP 的使用。此类例子不胜枚举。

将 HTTP 替换为 HTTPS

Spring 团队已经竭尽全力将我们所有的 URL 更新为使用 HTTPS。这包括从我们的 Maven 存储库 URL 到 Apache 许可证,再到文档链接的所有内容。在某些情况下,使用 HTTPS 是不可能的。例如,我们链接到的一些站点不支持 HTTPS,XML 命名空间标识符必须与文档中的标识符匹配,等等。

通过类路径访问 HTTPS XML 位置

在我们努力消除 HTTP 使用的过程中,Spring Framework 已更新 以通过类路径解析使用 HTTPS 位置的 XML 位置。以前,这仅对使用 HTTP 的 URL 执行。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

[https://www.springframework.org/schema/beans/spring-beans.xsd](https://www.springframework.org/schema/beans/spring-beans.xsd) URL 是通过类路径解析的,而不是需要网络连接。

请注意,XML 命名空间名称(这是一个标识符)不能更改为使用 HTTPS。从能够实施 安全控制 的角度来看,这不是理想的,但该名称从未通过网络请求,因此对用户几乎没有危害。

基础设施更新

Spring 团队已更新所有主机以确保使用 HTTPS。每个站点都支持 HTTPS,都重定向到 HTTPS,并使用 严格传输安全

潜在的 MITM 意味着我们的构建基础设施可能已被破坏。为此,我们重新构建了所有构建基础设施并轮换了所有凭据。

新的安全控制

对安全事件做出反应固然重要,但实施 安全控制 以确保问题不再发生同样重要。

我们已更新我们的构建框以阻止 HTTP 流量,以确保这种情况不会再次发生。为了保护开发人员和我们的用户,我们创建了 nohttp 项目。此项目可用于查找、替换和防止http://的使用,同时务实地允许无法更改的 URL(例如 XML 命名空间名称)。有关更多详细信息,请参阅该项目的网站。

加入我们

我们希望您能加入这场变革,帮助消除 HTTP 的使用。

获取 Spring 简报

通过 Spring 简报保持联系

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获得支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部