Amazon Linux 2:golang (ALASGOLANG1.19-2023-001)

critical Nessus 插件 ID 182050

简介

远程 Amazon Linux 2 主机缺少安全更新。

描述

远程主机上安装的 golang 版本低于 1.19.10-1。因此,它受到 ALAS2GOLANG1.19-2023-001 公告中提及的多个漏洞影响。

- 如果使用某些特定的未归约标量(大于曲线阶数的标量)进行调用, P256 Curve 的 ScalarMult 和 ScalarBaseMult 方法可能返回错误结果。这不会影响 crypto/ecdsa 或 crypto/ecdh 的使用。(CVE-2023-24532)

- 即使在解析小型输入时,HTTP 和 MIME 标头解析也可能会分配大量内存,从而可能导致拒绝服务。输入数据的某些异常模式可导致用于解析 HTTP 和 MIME 标头的通用函数分配远超所需的内容来保存已解析的标头。攻击者可能会利用此行为,导致 HTTP 服务器通过小型请求分配大量内存,从而可能导致内存耗尽和拒绝服务。
经修复后,标头解析现在可以正确分配所需内存来保存已解析的标头。
(CVE-2023-24534)

- 在处理包含大量部分的表单输入时,多部分表单解析可能会消耗大量 CPU 和内存。此问题由多种原因导致:1. mime/multipart.Reader.ReadForm 限制解析多部分表单可以消耗的总内存。ReadForm 可能会低估所消耗的内存量,导致它接受的输入大于预期。2. 限制总内存的做法并未考虑到包含多个部分的表单中的大量小型分配给垃圾回收器增加的压力。3.
ReadForm 可以分配大量短效缓冲区,这会进一步加大对垃圾回收器造成的压力。这些因素相结合,攻击者便可让解析多部分表单的程序消耗大量 CPU 和内存,从而可能导致拒绝服务。
这会影响使用 mime/multipart.Reader.ReadForm 的程序,也会影响使用 Request 方法 FormFile、FormValue、ParseMultipartForm 和 PostFormValue 在 net/http 程序包中进行的表单解析。经修复后,ReadForm 现在可以更好地估算已解析表单的内存消耗量,并大幅减少短效分配。此外,经修复的 mime/multipart.Reader 会对已解析表单的大小施加以下限制:1. 使用 ReadForm 解析的表单包含的部分不超过 1,000 个。此限制可通过环境变量 GODEBUG=multipartmaxparts= 进行调整。2. 使用 NextPart 和 NextRawPart 解析的表单部分包含的标头字段不超过 10,000 个。此外,使用 ReadForm 解析的所有表单部分包含的标头字段不超过 10,000 个。此限制可通过环境变量 GODEBUG=multipartmaxheaders= 进行调整。(CVE-2023-24536)

- 在包含具有极大行号的 //line 指令的 Go 源代码中,调用任何 Parse 函数都有可能因整数溢出而造成无限循环。(CVE-2023-24537)

- 模板未正确将反引号 (`) 视为 Javascript 字符串分隔符,也未按预期对其进行转义。自 ES6 起,反引号可用于 JS 模板文本。如果模板的 Javascript 模板文本中包含 Go 模板操作,则此操作的内容可用于停用文本,进而将任意 Javascript 代码注入 Go 模板。ES6 模板文字相当复杂,且其本身可以执行字符串插入操作,因此决定简单地禁止在此类文字中使用 Go 模板操作(例如 var a = {{.}}),因为没有显然安全的方式支持此行为。此方法与 github.com/google/safehtml 相同。经修复后,Template.Parse 在遇到此类模板时会返回一个 ErrorCode 值为 12 的错误。此 ErrorCode 当前并未导出,但将在 Go 1.21 版本中导出。依赖之前行为的用户可以使用 GODEBUG 标记 jstmpllitinterp=1 重新启用它,但需要注意的是现在将对反引号进行转义。应谨慎使用此做法。(CVE-2023-24538)

- 将尖括号 (<>) 插入到 CSS 上下文中时,不会视其为危险字符。如果使用不受信任的输入执行,包含由“/”字符分隔的多个操作的模板可能会导致意外关闭 CSS 上下文并允许意外注入 HTML。(CVE-2023-24539)

- 并非所有有效的 JavaScript 空白字符都被视为空白。在 JavaScript 上下文中,在字符集 \t\n\f\r\u0020\u2028\u2029 外包含其他空白字符和操作的模板在执行期间可能未经正确审查。(CVE-2023-24540)

- 由于 HTML 规范化规则,在使用空输入执行未加引号的 HTML 属性(如 attr={{.}})中包含操作的模板可能会导致在解析时产生意想不到的输出结果。这可能允许向标记中注入任意属性。 (CVE-2023-29400)

- 使用 cgo 时,go 命令可能在构建时生成非预期的代码。这可能导致在运行使用 cgo 的 go 程序时发生意外情况。如果不受信任的模块包含名称中带换行符的目录,运行此模块则可能会导致此问题发生。使用 go 命令(即通过 go get)检索到的模块不受影响(使用 GOPATH-mode 检索到的模块,如 GO111MODULE=off)。(CVE-2023-29402)

- 在 Unix 平台上,当使用 setuid/setgid 位运行二进制文件时,Go 运行时的行为将和之前保持一致。这在某些情况下可能很危险,例如在转储内存状态或假设状态为标准 i/o 文件描述符时。如果在关闭标准 I/O 文件描述符的情况下执行 setuid/setgid 二进制文件,则打开任何文件都可能导致使用提升的权限读取或写入意外内容。
同样,如果 setuid/setgid 程序通过错误或信号终止,则可能泄漏其寄存器的内容。 (CVE-2023-29403)

- 使用 cgo 时,go 命令可能在构建时执行任意代码。在恶意模块上运行 go get 或运行构建不受信任代码的任何其他命令时,可能会发生这种情况。此问题可由通过 #cgo LDFLAGS 指令指定的链接器标记触发。大量非可选标记的参数被错误地视为可选,从而允许通过 LDFLAGS 审查走私禁用的标记。这会影响 gc 和 gccgo 编译器的使用。(CVE-2023-29404)

- 使用 cgo 时,go 命令可能在构建时执行任意代码。在恶意模块上运行 go get 或运行构建不受信任代码的任何其他命令时,可能会发生这种情况。此问题可由通过 #cgo LDFLAGS 指令指定的链接器标记触发。由于包含嵌入空格的标记处理不当,导致可以通过 LDFLAGS 审查走私禁用的标记,方法则是将这些标记纳入另一个标记的参数中。这会影响 gccgo 编译器的使用。(CVE-2023-29405)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

运行 'yum update golang' 以更新系统。

另见

https://alas.aws.amazon.com/AL2/ALASGOLANG1.19-2023-001.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24532.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24534.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24536.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24537.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24538.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24539.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24540.html

https://alas.aws.amazon.com/cve/html/CVE-2023-29400.html

https://alas.aws.amazon.com/cve/html/CVE-2023-29402.html

https://alas.aws.amazon.com/cve/html/CVE-2023-29403.html

https://alas.aws.amazon.com/cve/html/CVE-2023-29404.html

https://alas.aws.amazon.com/cve/html/CVE-2023-29405.html

https://alas.aws.amazon.com/faqs.html

插件详情

严重性: Critical

ID: 182050

文件名: al2_ALASGOLANG1_19-2023-001.nasl

版本: 1.3

类型: local

代理: unix

发布时间: 2023/9/27

最近更新时间: 2023/12/8

支持的传感器: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Nessus Agent, Nessus

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: Critical

基本分数: 10

时间分数: 7.4

矢量: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS 分数来源: CVE-2023-29405

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 8.5

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:U/RL:O/RC:C

漏洞信息

CPE: p-cpe:/a:amazon:linux:golang, p-cpe:/a:amazon:linux:golang-bin, p-cpe:/a:amazon:linux:golang-docs, p-cpe:/a:amazon:linux:golang-misc, p-cpe:/a:amazon:linux:golang-race, p-cpe:/a:amazon:linux:golang-shared, p-cpe:/a:amazon:linux:golang-src, p-cpe:/a:amazon:linux:golang-tests, cpe:/o:amazon:linux:2

必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list

易利用性: No known exploits are available

补丁发布日期: 2023/8/7

漏洞发布日期: 2023/3/8

参考资料信息

CVE: CVE-2023-24532, CVE-2023-24534, CVE-2023-24536, CVE-2023-24537, CVE-2023-24538, CVE-2023-24539, CVE-2023-24540, CVE-2023-29400, CVE-2023-29402, CVE-2023-29403, CVE-2023-29404, CVE-2023-29405

IAVB: 2023-B-0022-S, 2023-B-0029-S, 2023-B-0040-S, 2023-B-0068-S, 2023-B-0080-S