CVE-2026-52891

Wekan: Shell Injection via Avatar Upload

Published Jul 15, 2026 CVSS 3.1 · 9.9 Critical EPSS < 1% KEV · Not listed
Description
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.

Analysis

AI-generated

Technical impact

The vulnerability in Wekan allows an attacker to inject arbitrary shell commands through the avatar upload feature. Prior to version 9.07, the application embeds the user‑supplied filename into a command passed to child_process.exec() for MIME‑type detection via models/avatars.js and models/fileValidation.js. If the filename contains shell metacharacters such as backticks or $(), the command executes with the process’s privileges, enabling complete compromise of the server. This flaw is a classic system command injection (CWE‑78) and a generic command injection vulnerability (CWE‑88).

Affected Systems

All installations of the Wekan kanban application running a version prior to 9.07 are affected. The issue resides in the avatar handling code in models/avatars.js and models/fileValidation.js. Users deploying the open‑source version of Wekan on their own servers may be at risk until they upgrade to v9.07 or later.

Risk and Exploitability

With a CVSS score of 9.9 the severity is critical, yet the EPSS score is less than 1 %, suggesting very low exploitation probability at present. The flaw is not listed in the CISA KEV catalog. The likely attack vector is the web interface, where an attacker who can upload an avatar—typically an authenticated user or any user capable of setting an avatar—can craft a malicious filename. Successful exploitation would give the attacker arbitrary code execution on the host. Based on the description, it is inferred that the vulnerability requires the ability to upload an avatar, but it does not explicitly state authentication requirements. Both the exploit and its impact are limited to the server where Wekan is hosted.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Wekan to version 9.07 or later
  • If an upgrade is not immediately possible, temporarily disable avatar uploads or enforce strict filename validation that allows only safe characters
  • Modify the avatar upload code to remove the use of child_process.exec and replace it with a safer MIME‑type detection method

Generated by OpenCVE AI on July 31, 2026 at 02:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Wekan
Wekan wekan
Vendors & Products Wekan
Wekan wekan
Type Values Removed Values Added
Description 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.
Title Wekan: Shell Injection via Avatar Upload
Weaknesses CWE-78
CWE-88
References
Metrics cvssV3_1

{'score': 9.9, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'}

Weaknesses
  • CWE-78

    Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

  • CWE-88

    Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 17, 2026, 6:23 PM
Reserved
Jun 8, 2026, 9:44 PM
Status
Deferred
Published
Jul 15, 2026, 10:17 PM
Modified
Jul 17, 2026, 7:17 PM