Cloudanix VulnDB

CVE-2024-34155

Medium · 4.3

CVSS

4.3

EPSS

0.8%

Published

Sep 6, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in how some software processes code can allow an attacker to crash the application by submitting a specially crafted file, making the service unavailable.

Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

A vulnerability exists in Go's standard library parser functions where processing source code with deeply nested literals can lead to excessive recursion. This consumes the entire call stack, causing a stack exhaustion panic that abruptly terminates the application process, resulting in a denial of service.

Why it matters to the business

An attacker can crash any service that parses untrusted Go source code, leading to service unavailability. This can disrupt development pipelines, code analysis tools, security scanners, or any user-facing application that processes Go code snippets. The operational impact is service downtime and potential disruption of dependent processes until the service is restarted.

How an attack unfolds

An attacker crafts a piece of Go source code containing an abnormally deep nesting of literal expressions (e.g., nested structs or arrays). They submit this malicious code to a target application or service that uses Go's native parser functions. When the vulnerable application attempts to parse the input, the recursive nature of the parser rapidly consumes the call stack, triggering a stack overflow. This results in a runtime panic, which crashes the entire process, causing a denial of service.

How to fix it

To remediate this vulnerability, update the Go toolchain to a patched version and recompile the affected applications. For third-party software, upgrade to a version that has been built with a non-vulnerable Go compiler. For example, users of 'github.com/answerdev/answer' should upgrade to version 1.0.6 or later.

How to confirm the fix worked

To validate the fix, verify that the application is running a version confirmed to be patched by the vendor. You can also check the Go version used to build the binary by running 'go version <binary_name>'. Additionally, a non-production instance of the application can be tested by submitting a proof-of-concept file with deeply nested literals to confirm it no longer crashes.

Typical attack path

  1. The attacker identifies a service that accepts Go source code as input (e.g., a code linter, an online IDE, or a documentation generator).
  2. The attacker crafts a malicious Go file with deeply nested literal structures designed to trigger a stack overflow.
  3. The attacker submits the malicious code to the target application via an API endpoint, file upload, or web form.
  4. The application's Go parser attempts to process the input, leading to stack exhaustion.
  5. The application process panics and crashes, causing a denial of service.

How to detect it

Monitor application logs for Go runtime panic messages indicating stack exhaustion or stack overflow. These events would likely occur immediately after the application attempts to process a new input. Correlate application crash logs with upstream service logs (e.g., load balancer or reverse proxy logs) that may show 5xx error codes indicating the backend service became unresponsive.

  • panic: runtime error: stack overflow
  • fatal error: stack exhaustion

What your security team should do

  • Identify and prioritize patching for any internet-facing applications that parse untrusted Go source code.
  • Scan your software inventory to find all applications built with vulnerable versions of Go and create a plan to recompile them using a patched toolchain.
  • For affected third-party Go applications like 'github.com/answerdev/answer', upgrade to the vendor-supplied patched version (1.0.6 or newer) immediately.

The record

Calling any of the Parse functions on Go source code which contains deeply nested literals can cause a panic due to stack exhaustion.

Affected packages

Ecosystem Package Introduced Fixed
Go stdlib 0 1.22.7
AlmaLinux:8 aardvark-dns 0 2:1.10.1-2.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 buildah 0 2:1.33.8-4.module_el8.10.0+3876+e55593a8
AlmaLinux:8 buildah 0 2:1.33.8-4.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 buildah-tests 0 2:1.33.8-4.module_el8.10.0+3876+e55593a8
AlmaLinux:8 buildah-tests 0 2:1.33.8-4.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 cockpit-podman 0 84.1-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 conmon 0 3:2.1.10-1.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 container-selinux 0 2:2.229.0-2.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 containernetworking-plugins 0 1:1.4.0-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 containernetworking-plugins 0 1:1.4.0-5.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 containers-common 0 2:1-82.module_el8.10.0+3876+e55593a8
AlmaLinux:8 containers-common 0 2:1-82.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 crit 0 3.18-5.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 criu 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 criu 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 criu-devel 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 criu-devel 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 criu-libs 0 3.18-5.module_el8.10.0+3845+87b84552
AlmaLinux:8 criu-libs 0 3.18-5.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 crun 0 1.14.3-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 crun 0 1.14.3-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 crun 0 1.14.3-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 delve 0 1.21.2-4.module_el8.10.0+3895+92d465e0
AlmaLinux:8 fuse-overlayfs 0 1.13-1.module_el8.10.0+3792+03eaed9c
AlmaLinux:8 fuse-overlayfs 0 1.13-1.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 go-toolset 0 1.21.13-1.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang-bin 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang-docs 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang-misc 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang-src 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 golang-tests 0 1.21.13-2.module_el8.10.0+3895+92d465e0
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 libslirp 0 4.4.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 libslirp-devel 0 4.4.0-2.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 netavark 0 2:1.10.3-1.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 oci-seccomp-bpf-hook 0 1.2.10-1.module_el8.10.0+3792+03eaed9c
AlmaLinux:8 oci-seccomp-bpf-hook 0 1.2.10-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 podman 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-catatonit 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-catatonit 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-docker 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-gvproxy 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-plugins 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-plugins 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-remote 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-remote 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 podman-tests 0 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a
AlmaLinux:8 podman-tests 0 4:4.9.4-13.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 python3-criu 0 3.18-5.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 python3-criu 0 3.18-5.module_el8.10.0+3876+e55593a8
AlmaLinux:8 python3-criu 0 3.18-5.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 python3-podman 0 4.9.0-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 runc 0 1:1.1.12-5.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 skopeo 0 2:1.14.5-3.module_el8.10.0+3876+e55593a8
AlmaLinux:8 skopeo 0 2:1.14.5-3.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 skopeo-tests 0 2:1.14.5-3.module_el8.10.0+3876+e55593a8
AlmaLinux:8 skopeo-tests 0 2:1.14.5-3.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3845+87b84552
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3876+e55593a8
AlmaLinux:8 slirp4netns 0 1.2.3-1.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3845+87b84552
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 toolbox 0 0.0.99.5-2.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 toolbox-tests 0 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f
AlmaLinux:8 toolbox-tests 0 0.0.99.5-2.module_el8.10.0+3876+e55593a8
AlmaLinux:8 toolbox-tests 0 0.0.99.5-2.module_el8.10.0+3901+4b80ecd7
AlmaLinux:8 udica 0 0.2.6-21.module_el8.10.0+3876+e55593a8
AlmaLinux:9 buildah 0 2:1.33.9-1.el9_4
AlmaLinux:9 buildah 0 2:1.37.5-1.el9_5
AlmaLinux:9 buildah-tests 0 2:1.33.9-1.el9_4
AlmaLinux:9 buildah-tests 0 2:1.37.5-1.el9_5
AlmaLinux:9 go-toolset 0 1.21.13-3.el9_4
AlmaLinux:9 golang 0 1.21.13-3.el9_4
AlmaLinux:9 golang-bin 0 1.21.13-3.el9_4
AlmaLinux:9 golang-docs 0 1.21.13-3.el9_4
AlmaLinux:9 golang-misc 0 1.21.13-3.el9_4
AlmaLinux:9 golang-src 0 1.21.13-3.el9_4
AlmaLinux:9 golang-tests 0 1.21.13-3.el9_4
AlmaLinux:9 podman 0 4:4.9.4-13.el9_4
AlmaLinux:9 podman 0 4:5.2.2-9.el9_5
AlmaLinux:9 podman-docker 0 4:4.9.4-13.el9_4
AlmaLinux:9 podman-docker 0 4:5.2.2-9.el9_5
AlmaLinux:9 podman-plugins 0 4:4.9.4-13.el9_4
AlmaLinux:9 podman-plugins 0 4:5.2.2-9.el9_5
AlmaLinux:9 podman-remote 0 4:4.9.4-13.el9_4
AlmaLinux:9 podman-remote 0 4:5.2.2-9.el9_5
AlmaLinux:9 podman-tests 0 4:4.9.4-13.el9_4
AlmaLinux:9 podman-tests 0 4:5.2.2-9.el9_5
Bitnami golang 0 1.22.7
Chainguard aactl 0 0.4.12-r18
Chainguard actions-runner-controller 0 0.9.3-r2
Chainguard actions-runner-controller-compat 0 0.9.3-r2
Chainguard actions-runner-controller-fips 0 0.9.3-r2
Chainguard actions-runner-controller-fips-compat 0 0.9.3-r2
Chainguard addon-resizer 0 1.8.22-r2
Chainguard addon-resizer-compat 0 1.8.22-r2
Chainguard addon-resizer-fips 0 1.8.22-r2
Chainguard addon-resizer-fips-compat 0 1.8.22-r2
Chainguard age 0 1.2.0-r2
Chainguard amass 0 4.2.0-r13
Chainguard apache-beam-java-11-sdk 0 2.63.0-r1
Chainguard apache-beam-java-17-sdk 0 2.63.0-r1
Chainguard apache-beam-java-21-sdk 0 2.63.0-r1
Chainguard apache-beam-java-sdk 0 2.63.0-r1
Chainguard apache-beam-python-3.11-sdk 0 2.58.1-r1
Chainguard apko 0 0.18.0-r0
Chainguard argo-cd-2.10 0 2.10.16-r1
Chainguard argo-cd-2.10-compat 0 2.10.16-r1
Chainguard argo-cd-2.10-repo-server 0 2.10.16-r1
Chainguard argo-cd-2.11 0 2.11.8-r0
Chainguard argo-cd-2.11-compat 0 2.11.8-r0
Chainguard argo-cd-2.11-repo-server 0 2.11.8-r0
Chainguard argo-cd-2.12 0 2.12.3-r1
Chainguard argo-cd-2.12-compat 0 2.12.3-r1
Chainguard argo-cd-2.12-repo-server 0 2.12.3-r1
Chainguard argo-cd-fips-2.10 0 2.10.16-r2
Chainguard argo-cd-fips-2.10-compat 0 2.10.16-r2
Chainguard argo-cd-fips-2.10-repo-server 0 2.10.16-r2
Chainguard argo-cd-fips-2.11 0 2.11.8-r0
Chainguard argo-cd-fips-2.11-compat 0 2.11.8-r0
Chainguard argo-cd-fips-2.11-repo-server 0 2.11.8-r0
Chainguard argo-cd-fips-2.12 0 2.12.3-r1
Chainguard argo-cd-fips-2.12-compat 0 2.12.3-r1
Chainguard argo-cd-fips-2.12-repo-server 0 2.12.3-r1
Chainguard argo-workflow-cli 0 3.6.5-r2
Chainguard argo-workflow-cli-fips 0 3.6.5-r2
Chainguard argo-workflow-controller 0 3.6.5-r2
Chainguard argo-workflow-controller-compat 0 3.6.5-r2
Chainguard argo-workflow-controller-compat-fips 0 3.6.5-r2
Chainguard argo-workflow-controller-fips 0 3.6.5-r2
Chainguard argo-workflow-executor 0 3.6.5-r2
Chainguard argo-workflow-executor-compat 0 3.6.5-r2
Chainguard argo-workflow-executor-compat-fips 0 3.6.5-r2
Chainguard argo-workflow-executor-fips 0 3.6.5-r2
Chainguard argo-workflows 0 3.6.5-r2
Chainguard argo-workflows-fips 0 3.6.5-r2
Chainguard argo-workflows-known-hosts 0 3.6.5-r2
Chainguard argo-workflows-known-hosts-fips 0 3.6.5-r2
Chainguard argo-workflows-ui 0 3.6.5-r2
Chainguard atlantis 0 0.29.0-r1
Chainguard atlantis-fips 0 0.29.0-r1
Chainguard authservice 0 1.0.2-r0
Chainguard authservice-compat 0 1.0.2-r0
Chainguard authservice-fips 0 1.0.1-r2
Chainguard authservice-fips-compat 0 1.0.1-r2
Chainguard aws-ebs-csi-driver 0 1.34.0-r1
Chainguard aws-ebs-csi-driver-fips 0 1.34.0-r2
Chainguard aws-efs-csi-driver 0 2.0.7-r1
Chainguard aws-efs-csi-driver-fips 0 2.0.7-r1
Chainguard aws-flb-cloudwatch 0 1.9.4-r13
Chainguard aws-flb-cloudwatch-compat 0 1.9.4-r13
Chainguard aws-flb-cloudwatch-compat-fips 0 1.9.4-r6
Chainguard aws-flb-cloudwatch-fips 0 1.9.4-r6
Chainguard aws-flb-firehose 0 1.7.2-r13
Chainguard aws-flb-firehose-compat 0 1.7.2-r13
Chainguard aws-flb-firehose-compat-fips 0 1.7.2-r6
Chainguard aws-flb-firehose-fips 0 1.7.2-r6
Chainguard aws-flb-kinesis 0 1.10.2-r14
Chainguard aws-flb-kinesis-compat 0 1.10.2-r14
Chainguard aws-flb-kinesis-compat-fips 0 1.10.2-r7
Chainguard aws-flb-kinesis-fips 0 1.10.2-r7
Chainguard aws-load-balancer-controller 0 2.8.2-r1
Chainguard aws-load-balancer-controller-compat 0 2.8.2-r1
Chainguard aws-load-balancer-controller-fips 0 2.8.2-r2
Chainguard aws-network-policy-agent 0 1.1.2-r2
Chainguard aws-network-policy-agent-compat 0 1.1.2-r2
Chainguard azcopy 0 10.26.0-r1
Chainguard azcopy-fips 0 10.26.0-r1
Chainguard azure-aad-pod-identity-mic 0 1.8.17-r12
Chainguard azure-aad-pod-identity-nmi 0 1.8.17-r12
Chainguard bank-vaults 0 1.20.4-r18
Chainguard bank-vaults-fips 0 1.20.4-r15
Chainguard bank-vaults-template 0 1.20.4-r18
Chainguard bank-vaults-template-fips 0 1.20.4-r15
Chainguard bazelisk 0 1.21.0-r0
Chainguard bazelisk-default 0 1.21.0-r0
Chainguard bincapz 0 0.19.0-r1
Chainguard bom 0 0.6.0-r10
Chainguard boring-registry 0 0.15.2-r1
Chainguard boring-registry-fips 0 0.15.2-r1
Chainguard buf 0 1.40.1-r0
Chainguard buildah 0 1.37.2-r1
Chainguard buildctl 0 0.20.1-r3
Chainguard buildkitd 0 0.20.1-r3
Chainguard caddy 0 2.8.4-r3

Related vulnerabilities