CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-XMRV-PMRH-HHX2

GHSA-xmrv-pmrh-hhx2: Remote Denial of Service via EventStream Decoder Panic in AWS SDK for Go v2

Amit Schendel
Amit Schendel
Senior Security Researcher

Apr 8, 2026·7 min read·96 visits

Executive Summary (TL;DR)

A DoS vulnerability in the AWS SDK for Go v2 EventStream decoder allows remote application crashes via unhandled panic conditions on malformed header types.

The AWS SDK for Go v2 contains a Denial of Service (DoS) vulnerability in the EventStream decoder. A remote attacker positioned to alter responses can trigger an unrecovered panic by providing an unrecognized header type byte, crashing the host application.

Vulnerability Overview

The AWS SDK for Go v2 relies on the eventstream package to parse binary data streams returned by various AWS services. These streams transport real-time or chunked data blocks for operations involving services such as Amazon S3 Select, Amazon Bedrock, and AWS CloudWatch Logs. The decoder processes individual frames, which contain metadata headers and data payloads.

GHSA-xmrv-pmrh-hhx2 represents a Denial of Service (DoS) vulnerability triggered by an unhandled panic within this parsing logic. The defect specifically exists in how the decoder evaluates the data type of incoming header values. When the parser receives a type byte that falls outside the recognized specification, it defaults to triggering a runtime panic rather than returning a structured error.

Because Go applications natively terminate upon encountering an unrecovered panic across standard goroutines, successful exploitation results in immediate service degradation. The affected microservice or application process crashes instantly, dropping all current connections and operations. This creates a severe availability impact for any backend service reliant on the AWS SDK for Go v2.

Exploitation requires the attacker to supply a malformed EventStream frame to the target client. This restricts the attack vector to scenarios where the adversary can manipulate the network traffic or control the endpoint that the AWS SDK communicates with. The vulnerability is classified under CWE-248 (Uncaught Exception) and CWE-20 (Improper Input Validation).

Protocol Mechanics and Root Cause

The AWS EventStream protocol provides a binary data streaming format designed for efficient data transfer between AWS components and client software. Each data transmission is broken down into discrete messages or frames. A standard frame contains a prelude (specifying total length and header length), followed by the headers, and finally the payload.

Headers within an EventStream frame consist of a name and a value. To optimize parsing, the header value is strictly typed using a single prefixed byte. For example, the byte 0x00 denotes a boolean true, while 0x07 denotes a signed 32-bit integer. The decoder uses this type byte to determine how to read the subsequent bytes in the frame.

The vulnerability resides in the decoder's error handling for unrecognized type bytes. When the parser extracts a byte that does not map to any enumerated constant in the EventStream specification, it fails to fall back to a safe error state. Instead, the developers implemented a panic call for the default case, effectively turning a simple data validation failure into a fatal process event.

Code Analysis and Patch Walkthrough

The fundamental flaw involves the use of panic for standard control flow during untrusted data ingestion. In Go, panics should be reserved for unrecoverable state corruption, not for handling malformed input from network streams. The vulnerable code path evaluates the header type byte via a switch statement.

func decodeHeaderValue(r io.Reader, typeByte byte) (interface{}, error) {
    switch typeByte {
    case boolTrueType:
        return true, nil
    case stringType:
        return readString(r)
    // ... valid type cases ...
    default:
        // VULNERABLE CODE: Triggers fatal application termination
        panic(fmt.Sprintf("unknown eventstream header type: %d", typeByte))
    }
}

Pull Request #3355 addresses this defect by replacing the panic call with an explicit error return. This allows the calling SDK service to handle the malformed frame gracefully. The calling function receives the error, abandons the current stream processing, and bubbles the error up to the application developer without terminating the entire Go runtime.

func decodeHeaderValue(r io.Reader, typeByte byte) (interface{}, error) {
    switch typeByte {
    case boolTrueType:
        return true, nil
    case stringType:
        return readString(r)
    // ... valid type cases ...
    default:
        // PATCHED CODE: Returns a standard Go error interface
        return nil, fmt.Errorf("unknown eventstream header type: %d", typeByte)
    }
}

This remediation aligns with secure coding practices for protocol parsers in Go. By converting the panic into a standard error, the availability impact is neutralized. The connection will fail gracefully, but the host application remains active to process subsequent requests.

Exploitation Methodology

To exploit this vulnerability, an attacker must successfully deliver a malformed EventStream frame to the target application. The target must be actively utilizing the AWS SDK for Go v2 to communicate with an endpoint that streams data via the EventStream protocol. The application expects standard API responses but receives the malicious payload instead.

The CVSS Attack Complexity is rated High (AC:H) because the attacker cannot generally send this frame directly to the AWS SDK application under normal operating conditions. The attacker requires a Man-in-the-Middle (MitM) position to intercept and modify the legitimate AWS response, or they must manipulate DNS/routing to point the SDK at a malicious server acting as a spoofed AWS endpoint.

The malicious payload construction requires satisfying the initial protocol checks. The attacker crafts a valid frame prelude, calculating the correct CRC32 checksums for the frame length and header length. This ensures the decoder accepts the frame structure and proceeds to the header parsing logic.

Once the prelude validation passes, the decoder evaluates the crafted headers. The attacker inserts a header where the type byte is set to an undefined value, such as 0xFF. Upon processing this specific byte, the Go runtime triggers the panic, immediately crashing the client application. No authentication is required (PR:N), as the flaw occurs during the structural parsing of the response.

Impact Assessment

In the Go programming language, an unrecovered panic cascades up the call stack, bypassing standard return values. If a panic reaches the top of a goroutine's stack without being intercepted by a recover() function, the entire runtime forcefully terminates. The AWS SDK eventstream package did not employ recover() mechanisms internally for this parsing routine.

Because the AWS SDK is typically embedded within a larger backend service, this single panic terminates the entire host application. All active connections, stateful memory transactions, and unrelated background processes running in that specific binary are abruptly destroyed. This results in a complete loss of availability for the affected system.

Applications leveraging services like Amazon Bedrock for generative AI, Amazon S3 Select for partial data retrieval, or AWS CloudWatch Logs for stream monitoring are specifically vulnerable. These services rely heavily on the EventStream protocol to deliver chunked data over long-lived connections.

The impact is strictly limited to availability (A:H). There is no mechanism within this vulnerability to achieve Remote Code Execution (RCE) or read arbitrary memory. The confidentiality (C:N) and integrity (I:N) of the system remain intact, as the process halts before any corrupted state can be exploited for further access.

Remediation and Mitigation Guidance

The complete resolution for GHSA-xmrv-pmrh-hhx2 requires upgrading the AWS SDK for Go v2 dependencies within the vulnerable project. Software developers and security engineers must update their go.mod files and rebuild the application binary to integrate the patched decoder logic.

Specifically, developers must ensure that the github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream package is updated to version 1.7.8 or later. Because Go modules manage dependencies hierarchically, updating the top-level SDK package will generally pull in the correct transitive dependencies.

In addition to the core protocol package, several service-specific clients must be updated to their corresponding fixed versions. Critical service updates include service/s3 (v1.97.3), service/bedrockruntime (v1.50.4), and service/lambda (v1.88.5). Comprehensive audits of the Go module graph using go list -m all will confirm the presence of the patched versions.

No viable configuration workarounds exist within the SDK itself to prevent the panic. If patching is temporarily impossible, network-level mitigations such as strict TLS validation and certificate pinning must be enforced to reduce the risk of Man-in-the-Middle attacks, thereby elevating the difficulty of supplying the malicious payload.

Official Patches

AWSPull Request #3355 mitigating the panic flaw
AWSAWS SDK for Go v2 Release release-2026-03-23

Technical Appendix

CVSS Score
5.9/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected Systems

Applications utilizing AWS SDK for Go v2 for Amazon S3 SelectApplications utilizing AWS SDK for Go v2 for Amazon BedrockApplications utilizing AWS SDK for Go v2 for AWS CloudWatch Logs streamsApplications utilizing AWS SDK for Go v2 for AWS Lambda streams

Affected Versions Detail

Product
Affected Versions
Fixed Version
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream
AWS
< 1.7.81.7.8
github.com/aws/aws-sdk-go-v2/service/s3
AWS
< 1.97.31.97.3
github.com/aws/aws-sdk-go-v2/service/bedrockruntime
AWS
< 1.50.41.50.4
AttributeDetail
CWE IDCWE-248 (Uncaught Exception)
Attack VectorNetwork
Attack ComplexityHigh
CVSS v3.15.9 (Moderate)
ImpactDenial of Service (Process Termination)
Exploit StatusNone publicly reported

MITRE ATT&CK Mapping

T1499.004Endpoint Denial of Service: Application or Service Exploitation
Impact
CWE-248
Uncaught Exception

The application does not properly handle an unexpected exception or panic, leading to termination.

Vulnerability Timeline

PR #3355 merged into the aws-sdk-go-v2 main branch
2026-03-23
AWS SDK for Go v2 Release release-2026-03-23 published
2026-03-23
GitHub Security Advisory GHSA-xmrv-pmrh-hhx2 officially published
2026-04-08

References & Sources

  • [1]GitHub Security Advisory GHSA-xmrv-pmrh-hhx2
  • [2]AWS SDK for Go v2 GitHub Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-103918
6.5

CVE-2026-103918: Prototype Injection and Denial of Service in oRPC @orpc/zod Smart Coercion Engine

CVE-2026-103918 is a medium-severity vulnerability within the @orpc/zod smart coercion plugin in oRPC. Prior to version 1.14.10, the package fails to sanitize untrusted input keys when performing pre-validation type coercion, allowing prototype injection on the returned request object and Denial of Service.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 2 hours ago•GHSA-3CM4-CCVW-6XR6
7.5

GHSA-3cm4-ccvw-6xr6: Weak Path Access Control and History/Repo-Diff Endpoint Bypass in SiYuan

A weak path access control vulnerability in SiYuan note-taking application allowed authenticated users to bypass restricted file paths by requesting historical backups and git diffs of sensitive configurations, including plain-text authentication tokens.

Amit Schendel
Amit Schendel
8 views•6 min read
•about 3 hours ago•GHSA-4WWP-F6GW-6QM5
7.7

GHSA-4WWP-F6GW-6QM5: Sensitive Information Disclosure via Incomplete Path Blocklist in SiYuan

An incomplete path blocklist in the file retrieval engine of the SiYuan knowledge management platform allows authenticated users to read TLS and CA private key materials directly from the configuration directory.

Alon Barad
Alon Barad
7 views•6 min read
•about 12 hours ago•CVE-2026-88779
8.7

CVE-2026-88779: Improper Restriction of Operations within the Bounds of a Memory Buffer in Citrix NetScaler SAML Authentication Daemon

CVE-2026-88779 is a critical vulnerability in Citrix NetScaler ADC and Citrix NetScaler Gateway affecting systems configured as a SAML Service Provider (SP) or SAML Identity Provider (IdP). An unauthenticated remote attacker can exploit this vulnerability to trigger a buffer overflow in the authentication daemon, resulting in persistent denial of service and appliance crash loops.

Amit Schendel
Amit Schendel
29 views•6 min read
•2 days ago•GHSA-9Q4R-4842-93VW
7.7

GHSA-9Q4R-4842-93VW: Cross-Tenant SQL Injection in Trigger.dev TSQL Query Compiler

A critical cross-tenant SQL injection vulnerability exists in the TSQL query compiler of Trigger.dev, allowing authenticated users to bypass tenant isolation boundaries and read arbitrary ClickHouse analytics logs and execution payloads belonging to other organizations.

Alon Barad
Alon Barad
11 views•6 min read
•2 days ago•GHSA-4672-HWV6-GQ62
5.4

GHSA-4672-HWV6-GQ62: Cross-environment deployment cancellation in Trigger.dev

A logical authorization bypass vulnerability exists in Trigger.dev versions prior to 4.5.6. This flaw allows an authenticated client with a low-trust environment API key, such as development or staging, to cancel active worker deployments in a higher-trust environment like production within the same project. The vulnerability occurs because write operations on deployments were scoped solely by project identifier instead of environment identifier.

Alon Barad
Alon Barad
7 views•6 min read