CWE-489
AllowedActive Debug Code
Abstraction: Base · Status: Draft
The product is released with debugging code still enabled or active.
156 vulnerabilities reference this CWE, most recent first.
GHSA-R3R9-V3Q6-HV5J
Vulnerability from github – Published: 2025-12-31 09:30 – Updated: 2025-12-31 09:30A vulnerability exists in serial device servers where active debug code remains enabled in the UART interface. An attacker with physical access to the device can directly connect to the UART interface and, without authentication, user interaction, or execution conditions, gain unauthorized access to internal debug functionality. Exploitation is low complexity and allows an attacker to execute privileged operations and access sensitive system resources, resulting in a high impact to the confidentiality, integrity, and availability of the affected device. No security impact to external or dependent systems has been identified.
{
"affected": [],
"aliases": [
"CVE-2025-15017"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-12-31T08:15:44Z",
"severity": "HIGH"
},
"details": "A vulnerability exists in serial device servers where active debug code remains enabled in the UART interface. An attacker with physical access to the device can directly connect to the UART interface and, without authentication, user interaction, or execution conditions, gain unauthorized access to internal debug functionality. Exploitation is low complexity and allows an attacker to execute privileged operations and access sensitive system resources, resulting in a high impact to the confidentiality, integrity, and availability of the affected device. No security impact to external or dependent systems has been identified.",
"id": "GHSA-r3r9-v3q6-hv5j",
"modified": "2025-12-31T09:30:19Z",
"published": "2025-12-31T09:30:19Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-15017"
},
{
"type": "WEB",
"url": "https://www.moxa.com/en/support/product-support/security-advisory/mpsa-257331-cve-2025-15017-active-debug-code-vulnerability-in-serial-device-servers"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:P/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-R4G8-P4X8-42M9
Vulnerability from github – Published: 2022-05-24 17:45 – Updated: 2022-05-24 17:45A vulnerability in Cisco IOS XE Software could allow an authenticated, local attacker with high privileges or an unauthenticated attacker with physical access to the device to open a debugging console. The vulnerability is due to insufficient command authorization restrictions. An attacker could exploit this vulnerability by running commands on the hardware platform to open a debugging console. A successful exploit could allow the attacker to access a debugging console.
{
"affected": [],
"aliases": [
"CVE-2021-1381"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2021-03-24T21:15:00Z",
"severity": "MODERATE"
},
"details": "A vulnerability in Cisco IOS XE Software could allow an authenticated, local attacker with high privileges or an unauthenticated attacker with physical access to the device to open a debugging console. The vulnerability is due to insufficient command authorization restrictions. An attacker could exploit this vulnerability by running commands on the hardware platform to open a debugging console. A successful exploit could allow the attacker to access a debugging console.",
"id": "GHSA-r4g8-p4x8-42m9",
"modified": "2022-05-24T17:45:11Z",
"published": "2022-05-24T17:45:11Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-1381"
},
{
"type": "WEB",
"url": "https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-XE-BLKH-Ouvrnf2s"
}
],
"schema_version": "1.4.0",
"severity": []
}
GHSA-R54Q-X638-F78V
Vulnerability from github – Published: 2026-08-10 09:31 – Updated: 2026-08-10 09:31DEEBOT PRO M1 and DEEBOT PRO K1VAC leave the telnet servers enabled. The telnet service may be leveraged to log in to the affected products.
{
"affected": [],
"aliases": [
"CVE-2026-66405"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-08-10T09:17:22Z",
"severity": "HIGH"
},
"details": "DEEBOT PRO M1 and DEEBOT PRO K1VAC leave the telnet servers enabled. The telnet service may be leveraged to log in to the affected products.",
"id": "GHSA-r54q-x638-f78v",
"modified": "2026-08-10T09:31:23Z",
"published": "2026-08-10T09:31:23Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-66405"
},
{
"type": "WEB",
"url": "https://jvn.jp/en/vu/JVNVU92804348"
},
{
"type": "WEB",
"url": "https://robot.hellohas.co.jp/news/update_20260331"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-RJG6-Q2FH-X6MJ
Vulnerability from github – Published: 2023-01-17 12:30 – Updated: 2023-01-24 21:30Active debug code exists in OMRON CP1L-EL20DR-D all versions, which may lead to a command that is not specified in FINS protocol being executed without authentication. A remote unauthenticated attacker may read/write in arbitrary area of the device memory, which may lead to overwriting the firmware, causing a denial-of-service (DoS) condition, and/or arbitrary code execution.
{
"affected": [],
"aliases": [
"CVE-2023-22357"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2023-01-17T10:15:00Z",
"severity": "CRITICAL"
},
"details": "Active debug code exists in OMRON CP1L-EL20DR-D all versions, which may lead to a command that is not specified in FINS protocol being executed without authentication. A remote unauthenticated attacker may read/write in arbitrary area of the device memory, which may lead to overwriting the firmware, causing a denial-of-service (DoS) condition, and/or arbitrary code execution.",
"id": "GHSA-rjg6-q2fh-x6mj",
"modified": "2023-01-24T21:30:28Z",
"published": "2023-01-17T12:30:32Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2023-22357"
},
{
"type": "WEB",
"url": "https://jvn.jp/en/vu/JVNVU97575890/index.html"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
GHSA-RXHH-C759-8W6X
Vulnerability from github – Published: 2025-03-28 18:33 – Updated: 2025-03-28 18:33A vulnerability was found in Netis WF-2404 1.1.124EN. It has been declared as critical. This vulnerability affects unknown code of the component UART. The manipulation leads to hardware allows activation of test or debug logic at runtime. It is possible to launch the attack on the physical device. The exploit has been disclosed to the public and may be used. The vendor was contacted early about this disclosure but did not respond in any way.
{
"affected": [],
"aliases": [
"CVE-2025-2919"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-03-28T18:15:17Z",
"severity": "HIGH"
},
"details": "A vulnerability was found in Netis WF-2404 1.1.124EN. It has been declared as critical. This vulnerability affects unknown code of the component UART. The manipulation leads to hardware allows activation of test or debug logic at runtime. It is possible to launch the attack on the physical device. The exploit has been disclosed to the public and may be used. The vendor was contacted early about this disclosure but did not respond in any way.",
"id": "GHSA-rxhh-c759-8w6x",
"modified": "2025-03-28T18:33:37Z",
"published": "2025-03-28T18:33:37Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-2919"
},
{
"type": "WEB",
"url": "https://scoozi.substack.com/p/hacking-a-netis-wf-2404-router-with"
},
{
"type": "WEB",
"url": "https://vuldb.com/?ctiid.301894"
},
{
"type": "WEB",
"url": "https://vuldb.com/?id.301894"
},
{
"type": "WEB",
"url": "https://vuldb.com/?submit.521036"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:P/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-V3GR-MCR8-2WV5
Vulnerability from github – Published: 2024-12-23 03:30 – Updated: 2024-12-23 03:30Multiple SHARP routers leave the hidden debug function enabled. An arbitrary OS command may be executed with the root privilege by a remote unauthenticated attacker.
{
"affected": [],
"aliases": [
"CVE-2024-46873"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-12-23T01:15:07Z",
"severity": "CRITICAL"
},
"details": "Multiple SHARP routers leave the hidden debug function enabled. An arbitrary OS command may be executed with the root privilege by a remote unauthenticated attacker.",
"id": "GHSA-v3gr-mcr8-2wv5",
"modified": "2024-12-23T03:30:47Z",
"published": "2024-12-23T03:30:47Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-46873"
},
{
"type": "WEB",
"url": "https://jvn.jp/en/jp/JVN61635834"
},
{
"type": "WEB",
"url": "https://k-tai.sharp.co.jp/support/info/info083.html"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
GHSA-V532-7C4X-249V
Vulnerability from github – Published: 2025-10-31 00:30 – Updated: 2025-11-03 18:31A vulnerability was identified in certain UniFi Talk devices where internal debugging functionality remained unintentionally enabled. This issue could allow an attacker with access to the UniFi Talk management network to invoke internal debug operations through the device API.
Affected Products: UniFi Talk Touch (Version 1.21.16 and earlier) UniFi Talk Touch Max (Version 2.21.22 and earlier) UniFi Talk G3 Phones (Version 3.21.26 and earlier)
Mitigation: Update the UniFi Talk Touch to Version 1.21.17 or later. Update the UniFi Talk Touch Max to Version 2.21.23 or later. Update the UniFi Talk G3 Phones to Version 3.21.27 or later.
{
"affected": [],
"aliases": [
"CVE-2025-52663"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-10-31T00:15:36Z",
"severity": "HIGH"
},
"details": "A vulnerability was identified in certain UniFi Talk devices where internal debugging functionality remained unintentionally enabled. This issue could allow an attacker with access to the UniFi Talk management network to invoke internal debug operations through the device API.\n\n\nAffected Products:\nUniFi Talk Touch (Version 1.21.16 and earlier) \nUniFi Talk Touch Max (Version 2.21.22 and earlier) \nUniFi Talk G3 Phones (Version 3.21.26 and earlier) \n \nMitigation:\nUpdate the UniFi Talk Touch to Version 1.21.17 or later.\nUpdate the UniFi Talk Touch Max to Version 2.21.23 or later.\nUpdate the UniFi Talk G3 Phones to Version 3.21.27 or later.",
"id": "GHSA-v532-7c4x-249v",
"modified": "2025-11-03T18:31:51Z",
"published": "2025-10-31T00:30:35Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-52663"
},
{
"type": "WEB",
"url": "https://community.ui.com/releases/Security-Advisory-Bulletin-055-055/9b65527b-489c-4f16-ac34-2b887754db1e"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L",
"type": "CVSS_V3"
}
]
}
GHSA-VFJ7-WC6M-2F4V
Vulnerability from github – Published: 2024-11-12 06:30 – Updated: 2024-11-12 06:30Active debug code vulnerability exists in Mesh Wi-Fi router RP562B firmware version v1.0.2 and earlier. If this vulnerability is exploited, a network-adjacent authenticated attacker may obtain or alter the settings of the device .
{
"affected": [],
"aliases": [
"CVE-2024-29075"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-11-12T06:15:03Z",
"severity": "MODERATE"
},
"details": "Active debug code vulnerability exists in Mesh Wi-Fi router RP562B firmware version v1.0.2 and earlier. If this vulnerability is exploited, a network-adjacent authenticated attacker may obtain or alter the settings of the device .",
"id": "GHSA-vfj7-wc6m-2f4v",
"modified": "2024-11-12T06:30:34Z",
"published": "2024-11-12T06:30:34Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-29075"
},
{
"type": "WEB",
"url": "https://jvn.jp/en/vu/JVNVU90676195"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-VG9H-JX4V-CWX2
Vulnerability from github – Published: 2026-01-29 15:32 – Updated: 2026-01-29 15:32Summary
The Unfurl web app enables Flask debug mode even when configuration sets debug = False. The config value is read as a string and passed directly to app.run(debug=...), so any non-empty string evaluates truthy. This leaves the Werkzeug debugger active by default.
Details
unfurl/app.py:web_app()readsdebugviaconfig['UNFURL_APP'].get('debug'), which returns a string.UnfurlApp.__init__passes that string directly toapp.run(debug=unfurl_debug, ...).- If
unfurl.iniomitsdebug, the default argument is the string"True". - As a result, debug mode is effectively always on and cannot be reliably disabled via config.
PoC
- Create a local
unfurl.iniwithdebug = Falseunder[UNFURL_APP]. - Run the server using
unfurl_app(orpython -c 'from unfurl.app import web_app; web_app()'). - Observe server logs showing
Debug mode: on/Debugger is active!. - The included PoC script
security_poc/poc_debug_mode.py --spawnautomates this check.
PoC Script (inline)
#!/usr/bin/env python3
"""
Unfurl Debug Mode PoC (Corrected)
================================
This PoC demonstrates that Unfurl's Flask debug mode is effectively
**always enabled by default** due to string parsing of the `debug`
config value. Even `debug = False` in `unfurl.ini` evaluates truthy
when passed to `app.run(debug=...)`.
Two modes:
1) --spawn (default): launch a local Unfurl server with debug=False
in a temp config and inspect logs for "Debug mode: on".
2) --target: attempt a remote indicator check (best-effort; may be silent
if no exception is triggered).
"""
import argparse
import os
import subprocess
import sys
import tempfile
import textwrap
import time
def run_spawn_check() -> None:
repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
ini_contents = textwrap.dedent("""
[UNFURL_APP]
host = 127.0.0.1
port = 5055
debug = False
remote_lookups = false
[API_KEYS]
bitly =
macaddress_io =
""").strip() + "\n"
with tempfile.TemporaryDirectory() as tmp:
ini_path = os.path.join(tmp, 'unfurl.ini')
with open(ini_path, 'w') as f:
f.write(ini_contents)
env = os.environ.copy()
env['PYTHONPATH'] = repo_root
cmd = [sys.executable, '-c', 'from unfurl.app import web_app; web_app()']
proc = subprocess.Popen(
cmd,
cwd=tmp,
env=env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
# Allow server to start and emit logs
time.sleep(2)
proc.terminate()
try:
out, err = proc.communicate(timeout=2)
except subprocess.TimeoutExpired:
proc.kill()
out, err = proc.communicate()
output = (out or "") + (err or "")
print("\n[+] Debug mode spawn check")
print(" Config: debug = False")
if "Debug mode: on" in output or "Debugger is active" in output:
print(" ✅ Debug mode is ON despite debug=False (vulnerable)")
else:
print(" ⚠️ Debug mode not detected in logs (check output below)")
if output.strip():
print("\n--- server output (truncated) ---")
print("\n".join(output.splitlines()[:15]))
print("--- end ---")
def run_remote_probe(target: str) -> None:
import requests
print("\n[+] Remote debug indicator probe (best-effort)")
print(f" Target: {target}")
# This app does not easily throw exceptions from user input, so
# absence of indicators does NOT prove debug is off.
probe_urls = [
f"{target.rstrip('/')}/__nonexistent__",
]
detected = False
for url in probe_urls:
try:
resp = requests.get(url, timeout=10)
if "Werkzeug Debugger" in resp.text or "Traceback" in resp.text:
detected = True
print(" ✅ Debug indicators found")
break
except Exception as e:
print(f" ⚠️ Probe failed: {e}")
if not detected:
print(" ⚠️ No debug indicators found (this is not definitive)")
def main():
parser = argparse.ArgumentParser(description='Unfurl debug mode PoC (corrected)')
parser.add_argument('--spawn', action='store_true', help='Run local spawn check (default)')
parser.add_argument('--target', help='Target Unfurl URL for remote probe')
args = parser.parse_args()
if args.target:
run_remote_probe(args.target)
else:
run_spawn_check()
if __name__ == '__main__':
main()
Impact
If the service is exposed beyond localhost (bound to 0.0.0.0 or reverse-proxied), an attacker can access the Werkzeug debugger. This can disclose sensitive information and may allow remote code execution if a debugger PIN is obtained. At minimum, stack traces and environment details are exposed on errors.
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "dfir-unfurl"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "20250810"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": true,
"github_reviewed_at": "2026-01-29T15:32:33Z",
"nvd_published_at": null,
"severity": "CRITICAL"
},
"details": "### Summary\nThe Unfurl web app enables Flask debug mode even when configuration sets `debug = False`. The config value is read as a string and passed directly to `app.run(debug=...)`, so any non-empty string evaluates truthy. This leaves the Werkzeug debugger active by default.\n\n### Details\n- `unfurl/app.py:web_app()` reads `debug` via `config[\u0027UNFURL_APP\u0027].get(\u0027debug\u0027)`, which returns a string.\n- `UnfurlApp.__init__` passes that string directly to `app.run(debug=unfurl_debug, ...)`.\n- If `unfurl.ini` omits `debug`, the default argument is the string `\"True\"`.\n- As a result, debug mode is effectively always on and cannot be reliably disabled via config.\n\n### PoC\n1. Create a local `unfurl.ini` with `debug = False` under `[UNFURL_APP]`.\n2. Run the server using `unfurl_app` (or `python -c \u0027from unfurl.app import web_app; web_app()\u0027`).\n3. Observe server logs showing `Debug mode: on` / `Debugger is active!`.\n4. The included PoC script `security_poc/poc_debug_mode.py --spawn` automates this check.\n\n### PoC Script (inline)\n```python\n#!/usr/bin/env python3\n\"\"\"\nUnfurl Debug Mode PoC (Corrected)\n================================\n\nThis PoC demonstrates that Unfurl\u0027s Flask debug mode is effectively\n**always enabled by default** due to string parsing of the `debug`\nconfig value. Even `debug = False` in `unfurl.ini` evaluates truthy\nwhen passed to `app.run(debug=...)`.\n\nTwo modes:\n1) --spawn (default): launch a local Unfurl server with debug=False\n in a temp config and inspect logs for \"Debug mode: on\".\n2) --target: attempt a remote indicator check (best-effort; may be silent\n if no exception is triggered).\n\"\"\"\n\nimport argparse\nimport os\nimport subprocess\nimport sys\nimport tempfile\nimport textwrap\nimport time\n\n\ndef run_spawn_check() -\u003e None:\n repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), \u0027..\u0027))\n\n ini_contents = textwrap.dedent(\"\"\"\n [UNFURL_APP]\n host = 127.0.0.1\n port = 5055\n debug = False\n remote_lookups = false\n\n [API_KEYS]\n bitly =\n macaddress_io =\n \"\"\").strip() + \"\\n\"\n\n with tempfile.TemporaryDirectory() as tmp:\n ini_path = os.path.join(tmp, \u0027unfurl.ini\u0027)\n with open(ini_path, \u0027w\u0027) as f:\n f.write(ini_contents)\n\n env = os.environ.copy()\n env[\u0027PYTHONPATH\u0027] = repo_root\n\n cmd = [sys.executable, \u0027-c\u0027, \u0027from unfurl.app import web_app; web_app()\u0027]\n proc = subprocess.Popen(\n cmd,\n cwd=tmp,\n env=env,\n stdout=subprocess.PIPE,\n stderr=subprocess.PIPE,\n text=True\n )\n\n # Allow server to start and emit logs\n time.sleep(2)\n proc.terminate()\n try:\n out, err = proc.communicate(timeout=2)\n except subprocess.TimeoutExpired:\n proc.kill()\n out, err = proc.communicate()\n\n output = (out or \"\") + (err or \"\")\n\n print(\"\\n[+] Debug mode spawn check\")\n print(\" Config: debug = False\")\n\n if \"Debug mode: on\" in output or \"Debugger is active\" in output:\n print(\" \u2705 Debug mode is ON despite debug=False (vulnerable)\")\n else:\n print(\" \u26a0\ufe0f Debug mode not detected in logs (check output below)\")\n\n if output.strip():\n print(\"\\n--- server output (truncated) ---\")\n print(\"\\n\".join(output.splitlines()[:15]))\n print(\"--- end ---\")\n\n\ndef run_remote_probe(target: str) -\u003e None:\n import requests\n\n print(\"\\n[+] Remote debug indicator probe (best-effort)\")\n print(f\" Target: {target}\")\n\n # This app does not easily throw exceptions from user input, so\n # absence of indicators does NOT prove debug is off.\n probe_urls = [\n f\"{target.rstrip(\u0027/\u0027)}/__nonexistent__\",\n ]\n\n detected = False\n for url in probe_urls:\n try:\n resp = requests.get(url, timeout=10)\n if \"Werkzeug Debugger\" in resp.text or \"Traceback\" in resp.text:\n detected = True\n print(\" \u2705 Debug indicators found\")\n break\n except Exception as e:\n print(f\" \u26a0\ufe0f Probe failed: {e}\")\n\n if not detected:\n print(\" \u26a0\ufe0f No debug indicators found (this is not definitive)\")\n\n\ndef main():\n parser = argparse.ArgumentParser(description=\u0027Unfurl debug mode PoC (corrected)\u0027)\n parser.add_argument(\u0027--spawn\u0027, action=\u0027store_true\u0027, help=\u0027Run local spawn check (default)\u0027)\n parser.add_argument(\u0027--target\u0027, help=\u0027Target Unfurl URL for remote probe\u0027)\n args = parser.parse_args()\n\n if args.target:\n run_remote_probe(args.target)\n else:\n run_spawn_check()\n\n\nif __name__ == \u0027__main__\u0027:\n main()\n```\n\n### Impact\nIf the service is exposed beyond localhost (bound to 0.0.0.0 or reverse-proxied), an attacker can access the Werkzeug debugger. This can disclose sensitive information and may allow remote code execution if a debugger PIN is obtained. At minimum, stack traces and environment details are exposed on errors.",
"id": "GHSA-vg9h-jx4v-cwx2",
"modified": "2026-01-29T15:32:33Z",
"published": "2026-01-29T15:32:33Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/obsidianforensics/unfurl/security/advisories/GHSA-vg9h-jx4v-cwx2"
},
{
"type": "WEB",
"url": "https://github.com/obsidianforensics/unfurl/commit/4c0a07ab1e9af3a1ddf0e7f47153ec9ba77946dd"
},
{
"type": "PACKAGE",
"url": "https://github.com/obsidianforensics/unfurl"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Unfurl\u0027s debug mode cannot be disabled due to string config parsing (Werkzeug debugger exposure)"
}
GHSA-VW8Q-RCFX-XF52
Vulnerability from github – Published: 2023-11-11 00:30 – Updated: 2023-11-16 18:30An unauthorized user could access debug features in Quantum HD Unity products that were accidentally exposed.
{
"affected": [],
"aliases": [
"CVE-2023-4804"
],
"database_specific": {
"cwe_ids": [
"CWE-489"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2023-11-10T23:15:07Z",
"severity": "CRITICAL"
},
"details": "An\u00a0unauthorized user could access debug features in Quantum HD Unity products that were accidentally exposed.",
"id": "GHSA-vw8q-rcfx-xf52",
"modified": "2023-11-16T18:30:30Z",
"published": "2023-11-11T00:30:22Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2023-4804"
},
{
"type": "WEB",
"url": "https://www.cisa.gov/news-events/ics-advisories/icsa-23-313-01"
},
{
"type": "WEB",
"url": "https://www.johnsoncontrols.com/cyber-solutions/security-advisories"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
Mitigation
Remove debug code before deploying the application.
CAPEC-121: Exploit Non-Production Interfaces
An adversary exploits a sample, demonstration, test, or debug interface that is unintentionally enabled on a production system, with the goal of gleaning information or leveraging functionality that would otherwise be unavailable.
CAPEC-661: Root/Jailbreak Detection Evasion via Debugging
An adversary inserts a debugger into the program entry point of a mobile application to modify the application binary, with the goal of evading Root/Jailbreak detection. Mobile device users often Root/Jailbreak their devices in order to gain administrative control over the mobile operating system and/or to install third-party mobile applications that are not provided by authorized application stores (e.g. Google Play Store and Apple App Store). Rooting/Jailbreaking a mobile device also provides users with access to system debuggers and disassemblers, which can be leveraged to exploit applications by dumping the application's memory at runtime in order to remove or bypass signature verification methods. This further allows the adversary to evade Root/Jailbreak detection mechanisms, which can result in execution of administrative commands, obtaining confidential data, impersonating legitimate users of the application, and more.