CVE-2020-15007

9.8 CRITICAL

📋 TL;DR

This CVE describes a buffer overflow vulnerability in the Doom engine (id Tech 1) that allows arbitrary code execution. Attackers can exploit unsafe fscanf usage in the M_LoadDefaults function to execute malicious code. Anyone using affected Doom engine-based software is potentially vulnerable.

💻 Affected Systems

Products:
  • Doom engine (id Tech 1)
  • Doom
  • Doom II
  • Heretic
  • Hexen
  • Strife
  • various source ports
Versions: All versions using vulnerable code prior to patched commits
Operating Systems: Windows, Linux, macOS, DOS
Default Config Vulnerable: ⚠️ Yes
Notes: Affects any software using the vulnerable Doom engine code, including many source ports and mods.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with remote code execution, potentially leading to full control of affected systems.

🟠

Likely Case

Local privilege escalation or game client compromise when loading malicious configuration files.

🟢

If Mitigated

Denial of service or application crash if exploit fails or is blocked.

🌐 Internet-Facing: MEDIUM - While primarily a local vulnerability, could be exploited via malicious game servers or mods.
🏢 Internal Only: HIGH - Local users can exploit this for privilege escalation or to compromise game clients.

🎯 Exploit Status

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

Exploitation requires local access or tricking users into loading malicious configuration files. Public references demonstrate the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Patched in commit 8a6d9a02fa991a91ff90ccdc73b5ceabaa6cb9ec

Vendor Advisory: https://github.com/AXDOOMER/doom-vanille/commit/8a6d9a02fa991a91ff90ccdc73b5ceabaa6cb9ec

Restart Required: Yes

Instructions:

1. Update to patched version of Doom engine or source port. 2. Apply the fix from the GitHub commit. 3. Recompile if using source code. 4. Restart the application.

🔧 Temporary Workarounds

Restrict configuration file access

linux

Prevent loading of untrusted configuration files by restricting file permissions.

chmod 600 default.cfg
chown root:root default.cfg

Use modern source ports

all

Switch to actively maintained Doom source ports that have addressed this vulnerability.

🧯 If You Can't Patch

  • Run Doom engine software with minimal privileges (non-admin/non-root accounts)
  • Isolate Doom engine applications in sandboxes or virtual machines

🔍 How to Verify

Check if Vulnerable:

Check if your Doom engine version includes the vulnerable fscanf usage in m_misc.c M_LoadDefaults function.

Check Version:

Check source code or consult your Doom engine/source port documentation for version information.

Verify Fix Applied:

Verify the patched commit 8a6d9a02fa991a91ff90ccdc73b5ceabaa6cb9ec is applied in your codebase.

📡 Detection & Monitoring

Log Indicators:

  • Application crashes when loading configuration files
  • Unexpected process execution from Doom engine

Network Indicators:

  • Unusual network connections from Doom engine processes

SIEM Query:

Process Creation where Parent Process contains 'doom' OR Image contains 'doom' AND Command Line contains unusual arguments

🔗 References

📤 Share & Export