CVE-2026-25561

N/A Unknown

📋 TL;DR

This vulnerability in WeKan allows attackers to upload attachments to arbitrary locations by exploiting inconsistent validation of object relationships in the attachment upload API. Attackers can bypass authorization checks by providing mismatched board, card, swimlane, and list identifiers. All WeKan instances running versions before 8.19 are affected.

💻 Affected Systems

Products:
  • WeKan
Versions: All versions prior to 8.19
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: All WeKan deployments with attachment upload functionality enabled are vulnerable.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could upload malicious files to any board/card in the system, potentially leading to data exfiltration, unauthorized access to sensitive information, or serving malicious content to users.

🟠

Likely Case

Unauthorized users could upload attachments to boards/cards they shouldn't have access to, compromising data integrity and potentially exposing sensitive information.

🟢

If Mitigated

With proper network segmentation and access controls, impact would be limited to the WeKan application itself without lateral movement to other systems.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access but the vulnerability is in authorization logic, making it relatively easy to exploit once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 8.19 and later

Vendor Advisory: https://github.com/wekan/wekan/commit/1d16955b6d4f0a0282e89c2c1b0415c7597019b8

Restart Required: Yes

Instructions:

1. Backup your WeKan instance and data. 2. Update WeKan to version 8.19 or later using your deployment method (Docker, Snap, or source). 3. Restart the WeKan service. 4. Verify the update was successful.

🔧 Temporary Workarounds

Disable Attachment Uploads

all

Temporarily disable attachment upload functionality in WeKan configuration

Edit WeKan configuration to set ATTACHMENTS_UPLOAD_ENABLED=false

Restrict API Access

all

Implement network-level restrictions to limit access to the attachment upload API endpoints

Configure firewall rules to restrict access to /api/boards/*/cards/*/attachments endpoints

🧯 If You Can't Patch

  • Implement strict access controls and monitor for unusual attachment upload patterns
  • Deploy a web application firewall (WAF) with rules to detect and block suspicious API calls to attachment endpoints

🔍 How to Verify

Check if Vulnerable:

Check WeKan version via admin panel or by examining the running container/process. If version is below 8.19, the system is vulnerable.

Check Version:

docker exec wekan-container node -p "require('./package.json').version" or check Admin Panel → Version

Verify Fix Applied:

After updating, verify the version is 8.19 or higher and test that attachment uploads now properly validate object relationships.

📡 Detection & Monitoring

Log Indicators:

  • Unusual attachment upload patterns
  • API calls to /api/boards/*/cards/*/attachments with mismatched IDs
  • Failed authorization attempts on attachment endpoints

Network Indicators:

  • HTTP POST requests to attachment upload endpoints with inconsistent board/card/swimlane/list parameters

SIEM Query:

source="wekan" AND (uri_path="/api/boards/*/cards/*/attachments" OR message="attachment upload") AND (status=200 OR status=403)

🔗 References

📤 Share & Export