CVE-2019-3570

9.8 CRITICAL

📋 TL;DR

CVE-2019-3570 is a heap corruption vulnerability in HHVM's scrypt_enc() function that allows attackers to overwrite memory by providing specially crafted scrypt parameters. This can lead to information disclosure, crashes, or remote code execution. Affected systems include HHVM versions 3.30.5 and below, all 4.0-4.2 series, and versions 4.3.0 through 4.8.0.

💻 Affected Systems

Products:
  • HHVM (HipHop Virtual Machine)
Versions: 3.30.5 and below, all 4.0-4.2 series, 4.3.0, 4.4.0, 4.5.0, 4.6.0, 4.7.0, 4.8.0
Operating Systems: All platforms running HHVM
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability requires scrypt_enc() function to be called with attacker-controlled parameters, which is common in authentication/verification scenarios.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data exfiltration, or persistent backdoor installation.

🟠

Likely Case

HHVM process crashes causing service disruption, potential information disclosure through memory leaks.

🟢

If Mitigated

Denial of service through crashes if memory corruption doesn't lead to code execution.

🌐 Internet-Facing: HIGH - Attackers can exploit this remotely if HHVM serves web content or APIs.
🏢 Internal Only: MEDIUM - Internal attackers or compromised systems could exploit this for privilege escalation.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires understanding of scrypt parameters and heap corruption techniques, but no authentication is needed if scrypt_enc() is exposed.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.9.0 and later, 3.30.6 and later

Vendor Advisory: https://hhvm.com/blog/2019/06/10/hhvm-4.9.0.html

Restart Required: Yes

Instructions:

1. Upgrade HHVM to version 4.9.0 or later (or 3.30.6+ for 3.x series). 2. Restart HHVM service. 3. Verify the fix by checking version.

🔧 Temporary Workarounds

Disable scrypt_enc() usage

all

Modify application code to avoid using scrypt_enc() with untrusted parameters

Input validation for scrypt parameters

all

Implement strict validation for N, r, p parameters before passing to scrypt_enc()

🧯 If You Can't Patch

  • Implement network segmentation to isolate HHVM instances from untrusted networks
  • Deploy web application firewall (WAF) rules to detect and block suspicious scrypt parameter patterns

🔍 How to Verify

Check if Vulnerable:

Check HHVM version: hhvm --version. If version matches affected range and scrypt_enc() is used, system is vulnerable.

Check Version:

hhvm --version

Verify Fix Applied:

Verify HHVM version is 4.9.0+ or 3.30.6+ and test scrypt_enc() functionality with valid parameters.

📡 Detection & Monitoring

Log Indicators:

  • HHVM segmentation faults
  • Memory corruption errors in HHVM logs
  • Unexpected process termination

Network Indicators:

  • Unusual requests to endpoints using scrypt functionality
  • Repeated crashes of HHVM service

SIEM Query:

source="hhvm.log" AND ("segmentation fault" OR "memory corruption" OR "scrypt_enc")

🔗 References

📤 Share & Export