宣布 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 更新了其 UI 以指示 HTTP 不安全。 Maven Central 已弃用 HTTP 的使用。还有很多其他的例子。

用 HTTPS 替换 HTTP

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

通过类路径的 HTTPS XML 位置

为了消除 HTTP 的使用,Spring Framework 已更新,可以通过类路径解析使用 HTTPS 位置的 XML 位置。以前,这只对使用 HTTP 的 URL 进行。考虑以下 XML 配置

<?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,并使用 Strict Transport Security

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

新的安全控制

虽然应对安全事件很重要,但同样重要的是实施安全控制,以确保问题不再发生。

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

加入我们

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

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有