Unpatched RCE flaw hits ComfyUI-Easy-Use extension
CVE-2026-123790 lets unauthenticated attackers overwrite a ComfyUI-Easy-Use custom node to achieve remote code execution; no patch exists.
Sourcekb.cert.org — open the original
What to check
- Applies to
- The 1 CVE named below. Whether you run an affected version is not assessed: check the versions the source lists.
- Exploitation
- No exploitation in the wild and no public exploit is recorded for the CVEs named.
CERT/CC published VU#944667 describing an unauthenticated remote code execution vulnerability in ComfyUI-Easy-Use version 1.3.6, a popular extension for the ComfyUI generative AI workflow interface. The flaw resides in the save_preview() handler, which can be abused by an attacker to upload a malicious Python file into ComfyUI's input directory and then overwrite an installed custom node's __init__.py file. When ComfyUI restarts, it automatically imports and executes the attacker-controlled Python code.
Exploitation requires no authentication or user interaction, only network reachability to the affected routes. A successful attack grants arbitrary Python and OS command execution with the privileges of the ComfyUI process, enabling an attacker to read/modify models and workflows and harvest credentials from the process environment. The maintainer of ComfyUI-Easy-Use could not be reached to coordinate a fix, so no patch is currently available.
Defenders running ComfyUI with the ComfyUI-Easy-Use extension should either remove the extension entirely or ensure the ComfyUI instance is not exposed to untrusted networks — restricting access to trusted users/IPs is the only mitigation offered. There is no indication in this advisory of active in-the-wild exploitation; this is a disclosure of a researcher-reported flaw (credited to Nguyen Huy Hoang) rather than a report of observed attacks.
Mentioned in this report
Detection guidance
Python Process Writes Custom Node __init__.py Under ComfyUI
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
Detects a python process overwriting an __init__.py inside a ComfyUI custom_nodes directory, the code-injection step of the ComfyUI-Easy-Use save_preview() RCE chain. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: Python Process Writes Custom Node __init__.py Under ComfyUI
description: Detects python.exe or pythonw.exe writing an __init__.py inside a ComfyUI
custom_nodes directory. The ComfyUI-Easy-Use save_preview() flaw lets an attacker
overwrite a custom node __init__.py so that attacker Python code is imported when
ComfyUI restarts.
tags:
- attack.execution
- attack.t1059.006
- attack.persistence
logsource:
category: file_event
product: windows
detection:
selection:
Image|endswith:
- \python.exe
- \pythonw.exe
TargetFilename|contains|all:
- comfyui
- \custom_nodes\
TargetFilename|endswith: \__init__.py
condition: selection
falsepositives:
- Custom node installation or update through ComfyUI-Manager or pip-based install
scripts
- Developers editing their own custom nodes with Python tooling
level: medium
id: d3fd0a2a-0026-584e-899d-ef350c84cbd1
status: experimental
author: Vorant
references:
- https://kb.cert.org/vuls/id/944667
Python Script Written Into ComfyUI Input Directory
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
Detects a Python source file being written into the ComfyUI input directory, the staging step of the ComfyUI-Easy-Use RCE exploit. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: Python Script Written Into ComfyUI Input Directory
description: Detects a .py file created in the ComfyUI input directory by a python
process. In the ComfyUI-Easy-Use save_preview() exploit, the attacker uploads a
malicious Python file there before using it to overwrite a custom node __init__.py.
The input directory normally holds images, video and audio.
tags:
- attack.command-and-control
- attack.t1105
- attack.execution
logsource:
category: file_event
product: windows
detection:
selection:
Image|endswith:
- \python.exe
- \pythonw.exe
TargetFilename|contains|all:
- comfyui
- \input\
TargetFilename|endswith: .py
condition: selection
falsepositives:
- Users uploading Python helper scripts through the ComfyUI UI for workflow experiments
level: medium
id: 8ee6fac7-e22c-5103-8be6-511730552b4a
status: experimental
author: Vorant
references:
- https://kb.cert.org/vuls/id/944667
ComfyUI Python Process Spawning Shell or Download Utility
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
Detects the ComfyUI main.py Python process spawning a command shell or download utility, indicating post-exploitation OS command execution via injected node code. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: ComfyUI Python Process Spawning Shell or Download Utility
description: Detects a python process running ComfyUI main.py that spawns cmd, PowerShell,
script hosts or common download utilities. After a custom node __init__.py is overwritten,
the attacker code runs with the ComfyUI process privileges and can execute arbitrary
OS commands.
tags:
- attack.execution
- attack.t1059.006
- attack.t1059.003
- attack.t1059.001
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- \python.exe
- \pythonw.exe
ParentCommandLine|contains|all:
- comfyui
- main.py
selection_child:
Image|endswith:
- \cmd.exe
- \powershell.exe
- \pwsh.exe
- \wscript.exe
- \cscript.exe
- \mshta.exe
- \certutil.exe
- \bitsadmin.exe
- \curl.exe
condition: selection_parent and selection_child
falsepositives:
- Custom nodes that legitimately shell out to cmd or curl for model downloads
- Administrators using ComfyUI-Manager scripts that invoke a shell
level: medium
id: 249533ed-fdb7-5c54-b52f-50d23177084c
status: experimental
author: Vorant
references:
- https://kb.cert.org/vuls/id/944667
Behavioural rules are generated from public reporting — validate in your environment before deploying.
Source reporting: https://kb.cert.org/vuls/id/944667
Free public brief. The detections with Splunk SPL already written (plus Elastic and KQL where they apply) are in the app with a free account, no card. Slack alerts on the vendors you run come with the paid plans, and a new account gets three days of them.
What this brief leaves out
This page is the free tier: the write-up, the severity, the names. In the app the same report carries its detections (Splunk SPL already written, plus Elastic and Microsoft KQL where they apply) and live profiles of the CVEs it names. The paid plans add the security research and news reporting the free tier leaves out.
It sits in a corpus of 16,572 reports from 147 sources, 724 of them written in the last seven days, and it grows through the day.
A new account starts with three days of all of it, no card, then keeps the government and CERT reporting free. Slack alerts are a paid-plan feature: name the vendors you run and Slack hears about the reports that touch them, not the rest of the week's. Nothing is charged unless you subscribe.
Create a free account What it costs