CVE-2018-6335

HIGH7.5/ 10.0
Share:
Published: December 31, 2018 at 07:29 PM
Modified: May 6, 2025 at 07:15 PM
Source: cve-assign@fb.com

Vulnerability Description

A Malformed h2 frame can cause 'std::out_of_range' exception when parsing priority meta data. This behavior can lead to denial-of-service. This affects all supported versions of HHVM (3.25.2, 3.24.6, and 3.21.10 and below) when using the proxygen server to handle HTTP2 requests.

CVSS Metrics

Base Score
7.5
Severity
HIGH
Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Weaknesses (CWE)

Source: cve-assign@fb.com
Source: nvd@nist.gov

AI Security Analysis

01 // Technical Summary

HHVM (HipHop Virtual Machine) is vulnerable to a denial-of-service (DoS) attack due to a flaw in its HTTP/2 implementation. A crafted HTTP/2 frame with malformed priority metadata can trigger an std::out_of_range exception, causing the server to crash and become unavailable. This impacts all supported versions of HHVM using the proxygen server.

02 // Vulnerability Mechanism

Step 1: Payload Delivery: An attacker crafts a malicious HTTP/2 frame. This frame is designed to exploit the vulnerability in HHVM's HTTP/2 implementation. Step 2: Malformed Priority Metadata: The crafted frame contains malformed priority metadata. This metadata is specifically designed to trigger the std::out_of_range exception. Step 3: Frame Processing: The HHVM server, using the proxygen server, receives and begins processing the malicious HTTP/2 frame. Step 4: Parsing Error: During the parsing of the priority metadata, the server encounters the malformed data. Step 5: Exception Trigger: Due to the malformed data, the parsing logic attempts to access memory outside of the allocated bounds, triggering the std::out_of_range exception. Step 6: Denial of Service: The unhandled exception causes the HHVM process to crash, resulting in a denial-of-service condition, making the server unavailable to legitimate users.

03 // Deep Technical Analysis

The vulnerability lies within HHVM's handling of HTTP/2 priority frames, specifically within the proxygen server component. The root cause is a lack of proper input validation when parsing the priority metadata within these frames. When a malformed frame is received, the parsing logic attempts to access an invalid memory location, leading to an std::out_of_range exception. This exception, if unhandled, causes the HHVM process to terminate, resulting in a DoS. The flaw is likely related to incorrect bounds checking or integer overflow issues when processing the priority data, potentially allowing an attacker to specify values that exceed the allocated memory or data structures. The use of std::out_of_range indicates a problem with indexing or accessing data structures, suggesting a potential for an out-of-bounds read or write.

CVE-2018-6335 - HIGH Severity (7.5) | Free CVE Database | 4nuxd