go库x/text缺陷报告CVE-2022-32149的处理方案

#问题描述

go库 golang.org/x/text ,注意这里不是go的源码, 在0.3.8版本之前存在一个缺陷(Vulnerability)

缺陷ID

CVE-2022-32149

具体描述

攻击者可以通过制作一个Accept-Language报头来导致拒绝服务。

具体的原因是,在解析这个Accept-Language报头时,是比较花时间的。攻击者可以针对这个,故意填充大量的Accept-Language报头内容来导致服务器的资源消耗,从而拖垮服务器。

有问题的函数是ParseAcceptLanguage。

源码分析

根据原因,源码里主要就是对长度做了一层判断。 一共4行代码改动

解决方案

在github(https://github.com/golang/go/issues/56152)上,有说解决的版本是0.4.0

这里需要明确一个概念,直接引用间接引用

如果你的代码中直接引用了这个库,可以把他升级到最新的版本。 如果是间接引用,要看一下是否是否真实使用到。

如果是真实使用到,在go build的时候go就会提示你使用go get拉去对应的text库的代码,(这个代码在modcache目录下,一般是在你home目录下),如果是使用到的话,编译环境的机器上也是可以搜到的。

间接引用,不一定就使用到了间接引用的全部代码,尽管在go源码中,通过go mod graph也可以看到里面的引用,但是对应我们的程序就是间接引用了,这里不一定真实用到。

复制代码
go mod graph | grep text

std golang.org/x/text@v0.11.0
golang.org/x/crypto@v0.11.1-0.20230711161743-2e82bdd1719d golang.org/x/text@v0.11.0
golang.org/x/net@v0.12.1-0.20231027154334-5ca955b1789c golang.org/x/text@v0.11.0
golang.org/x/text@v0.11.0 golang.org/x/tools@v0.6.0
golang.org/x/text@v0.11.0 golang.org/x/mod@v0.8.0
golang.org/x/text@v0.11.0 golang.org/x/sys@v0.5.0

另外一种证明。 对于linux下的go生成的文件,大体使用了gcc生成的可执行程序。可以直接使用如下命令来查看是否存在该函数的调用。如果存在,则会出现binary matches字样

复制代码
grep ParseAcceptLanguage  xxxx

相关连接

https://go.dev/cl/442235
https://go.dev/issue/56152
https://groups.google.com/g/golang-announce/c/-hjNw559_tE/m/KlGTfid5CAAJ
https://pkg.go.dev/vuln/GO-2022-1059
https://golangtutorial.dev/news/fix-in-golang-text-package/

相关推荐
65岁退休Coder6 小时前
LangChain v1.3.4 笔记 - 07 补充:链式调用 LCEL
后端·python·langchain
卷无止境6 小时前
FastAPI 部署在 Nginx 后面到底该怎么配
后端·python
码流怪侠6 小时前
用 WiFi 信号数人头:howmanypeoplearearound 项目深度解析
后端·开源·github
半亩码田6 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
心运软件6 小时前
SpringBoot+ Vue校园社团管理平台的完整架构设计
vue.js·后端
Wzx1980127 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
Jodie同志7 小时前
第16~23天:持久化、HITL、流式、MCP与安全
前端·后端·agent
牧羊人.3337 小时前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python
Jodie同志7 小时前
第1~15天:原生Agent、RAG与LangGraph基础(完整代码实操)
前端·后端·agent
Zane19947 小时前
单例线程安全、生产者消费者、死锁:并发面试三连问串讲
java·后端