

Go语言团队于2025年9月4日发布了两个紧急补丁版本:Go 1.25.1和Go 1.24.7。这两个版本主要包含一个重要的安全修复,涉及net/http包中的CrossOriginProtection(跨域保护)组件,该漏洞被标识为CVE-2025-47910。本文将详细介绍该漏洞的背景、影响、修复方式,以及开发者应如何应对。
CrossOriginProtection是Go 1.25中引入的一个新组件,用于增强网络应用的安全性,防止跨站请求伪造(CSRF)和其他跨域攻击。它通过检查请求的来源(Origin)和目标站点是否匹配来工作。开发者可以使用AddInsecureBypassPattern方法配置某些路径模式,允许这些路径跳过跨域保护检查,通常用于内部可信路径或特殊业务场景。
漏洞的核心在于:当向CrossOriginProtection.AddInsecureBypassPattern传递模式时,本应重定向到这些模式的请求(例如缺少末尾斜杠的请求)也会被豁免,这可能不符合预期。例如:
/hello/(期望仅允许路径为/hello/的请求绕过检查),则路径为/hello(缺少末尾斜杠)的请求也会被错误地豁免。该问题源于CrossOriginProtection内部使用ServeMux来检查绕过模式。ServeMux在处理请求时,如果注册了路径/hello/,则对/hello的请求会触发内部重定向(返回HTTP 302重定向到/hello/)。CrossOriginProtection在检查时,会错误地将这种“将被重定向”的请求也视为匹配绕过模式,从而豁免其跨域检查。然而,实际转发给下游处理程序的仍是原始请求路径(如/hello),如果该路径有定义处理器,请求就会被处理而不受保护。
CrossOriginProtection功能,因此受影响。CrossOriginProtection组件,因此不受此漏洞影响。Go 1.24.7的发布主要是为了保持版本分支的维护一致性。假设一个API端点/api/transfer/用于处理资金转账操作,并配置为绕过跨域保护(可能由于历史原因或内部调用)。利用此漏洞,攻击者可能通过向/api/transfer(无末尾斜杠)发送恶意请求来绕过保护,执行未授权的转账操作。
Go团队在Go 1.25.1中修复了此问题。修复方式改为:要求绕过模式必须与请求路径完全匹配,不再考虑内部重定向逻辑。这意味着:
/hello/会豁免对/hello/的请求,而不会豁免对/hello的请求。CrossOriginProtection和AddInsecureBypassPattern,升级后应重新评估绕过模式的配置,确保其符合安全预期。除了安全修复,Go 1.25.1还包含一些自Go 1.25发布以来发现的小错误修复和稳定性改进。虽然这些改动较为轻微,但建议用户升级以获得最稳定的开发体验。
升级到Go 1.25.1非常简单:
git checkout go1.25.1然后按照正常流程构建。
3. 模块依赖:确保您的go.mod文件中Go版本指令已更新为go 1.25.1,这有助于确保构建环境的一致性。
Go 1.25.1是一个重要的点版本发布,主要修复了net/http包中跨域保护组件的安全漏洞(CVE-2025-47910)。该漏洞可能导致跨域保护被意外绕过,增加应用的安全风险。Go团队响应迅速,将其定性为安全问题进行修复,体现了对生态系统安全性的高度重视。
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,让AI助力您的未来发展