CVE-2022-36937

9.8 CRITICAL

📋 TL;DR

This vulnerability in HHVM allows attackers to intercept or manipulate encrypted network communications by forcing the use of deprecated TLS 1.0 protocol. Applications using HHVM's stream extension with tls:// URLs for secure connections are affected. The risk is particularly high for systems handling sensitive data over network connections.

💻 Affected Systems

Products:
  • HHVM
Versions: All versions up to and including 4.172.0
Operating Systems: All operating systems running HHVM
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications using stream_socket_server or stream_socket_client functions with tls:// URLs. Other TLS usage in HHVM may not be affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of encrypted communications, allowing man-in-the-middle attacks to intercept, decrypt, and modify sensitive data including authentication credentials, financial information, and personal data.

🟠

Likely Case

Successful man-in-the-middle attacks leading to data interception and potential credential theft when attackers can position themselves between client and server.

🟢

If Mitigated

Limited impact if network segmentation prevents man-in-the-middle positioning and if additional encryption layers are used, though TLS 1.0 vulnerabilities remain exploitable.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires man-in-the-middle positioning but uses well-known TLS 1.0 vulnerabilities. No public exploit code identified but trivial to implement given known TLS 1.0 weaknesses.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.153.4, 4.168.2, 4.169.2, 4.170.2, 4.171.1, 4.172.1, 4.173.0 and later

Vendor Advisory: https://hhvm.com/blog/2023/01/20/security-update.html

Restart Required: Yes

Instructions:

1. Identify HHVM version currently running. 2. Upgrade to patched version (4.153.4, 4.168.2, 4.169.2, 4.170.2, 4.171.1, 4.172.1, or 4.173.0+). 3. Restart HHVM service. 4. Verify TLS 1.3 is being used for tls:// connections.

🔧 Temporary Workarounds

Disable tls:// stream usage

all

Modify applications to avoid using stream_socket_server or stream_socket_client with tls:// URLs

# Review application code for tls:// usage in stream functions
# Replace with alternative secure communication methods

Network-level TLS enforcement

linux

Use network appliances or proxies to enforce TLS 1.2+ and block TLS 1.0 connections

# Configure load balancers or proxies to require TLS 1.2+
# Example for nginx: ssl_protocols TLSv1.2 TLSv1.3;

🧯 If You Can't Patch

  • Implement network segmentation to prevent man-in-the-middle attacks
  • Add application-layer encryption for sensitive data transmitted via tls:// streams

🔍 How to Verify

Check if Vulnerable:

Check HHVM version and review application code for stream_socket_server or stream_socket_client calls with tls:// URLs

Check Version:

hhvm --version

Verify Fix Applied:

Test tls:// connections and verify TLS 1.3 is being negotiated using tools like openssl s_client or network packet inspection

📡 Detection & Monitoring

Log Indicators:

  • TLS 1.0 handshake attempts in network logs
  • Unexpected connection failures after TLS protocol changes

Network Indicators:

  • TLS 1.0 protocol usage on ports where HHVM tls:// connections are expected
  • Man-in-the-middle attack patterns in network traffic

SIEM Query:

source="network_traffic" protocol="TLS" tls_version="1.0" dest_port IN (443, 8443, [your_app_ports])

🔗 References

📤 Share & Export