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/

相关推荐
捧 花1 分钟前
Go语言模板的使用
golang·go·template method·模板·web app
ulias2123 分钟前
初步了解STL和string
开发语言·c++·mfc
二川bro4 分钟前
字符串格式化进阶:Python f-string性能优化
开发语言·python
霸道流氓气质6 分钟前
SpringBoot添加JSP支持
java·spring boot·后端
LitchiCheng9 分钟前
Mujoco 机械臂 OMPL 进行 RRT 关节空间路径规划避障、绕障
开发语言·人工智能·python
烤麻辣烫9 分钟前
黑马程序员苍穹外卖(新手)DAY10
java·开发语言·学习·spring·intellij-idea
q***735510 分钟前
Spring Boot应用关闭分析
java·spring boot·后端
u***451612 分钟前
Spring Boot中的404错误:原因、影响及处理策略
java·spring boot·后端
waves浪游16 分钟前
进程控制(上)
linux·运维·服务器·开发语言·c++
程序员三明治16 分钟前
【Java】synchronized关键字详解:从字节码到对象头与锁升级
java·开发语言·juc·synchronized··锁升级