Skip to main content

Koalix CRM CVE-2026-112289

| EUVDEUVD-2026-104284 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-19 disclosure@vulncheck.com GHSA-3rx2-qcp6-mwjp
5.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privileged staff user
  2. Delivery
    Store script payload in task title
  3. Exploit
    Administrator opens task changelist/change form
  4. Execution
    Payload executes in admin session
  5. Impact
    Create superuser / hijack admin actions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, 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 staff-level account in Koalix CRM (through 1.14.0) with permission to create or edit tasks, so the attacker must already be an insider or have compromised staff credentials. The injected payload is inert until an administrator opens the task changelist or task change form in the Django admin - this required admin interaction (UI:P) is the primary limiting factor. Exploitation is confined to deployments exposing the Django admin task views and does not affect anonymous or read-only users; there is no path for unauthenticated remote triggering.

Impact

This is a medium-severity stored XSS (CVSS 4.0 base 5.1) that should be treated as a low-to-moderate real-world priority rather than an emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N) shows that while the attack is network-deliverable with low complexity, it explicitly requires existing privileges (PR:L - a staff-level account) and passive victim interaction (UI:P - an administrator must open the affected task view). This is therefore a privilege-escalation path for an already-trusted insider, not a path for anonymous internet attackers. No EPSS score, CISA KEV listing, or public POC is present in the provided data, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the finding originates from a VulnCheck advisory and a GitHub issue rather than incident reporting. The limited-but-non-zero integrity/confidentiality impact plus the plausible superuser-creation escalation keeps it worth patching, but the authentication precondition and reliance on admin interaction substantially constrain practical risk. No signals conflict; the main gap is the absence of exploitation-probability data (EPSS) and any POC confirmation.

Exploit ScenarioDerived

A low-privileged staff user with access to the Koalix CRM task module creates or edits a task whose title contains a malicious script payload. Because Task.link_to_task() renders the title unescaped, the script executes in the browser of any administrator who later opens the task changelist or change form in the Django admin, running in that admin's authenticated session. No public POC is referenced, but the attacker could use the executed script to perform admin-level actions such as creating a new superuser account.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 19, 2026

Stored cross-site scripting in Koalix CRM through 1.14.0 allows authenticated staff users who can create or edit tasks to persist HTML or JavaScript in a task title, which the Task.link_to_task() helper renders unescaped inside the Django admin task changelist and change form. The payload stays inert until an administrator views the affected list or record, so successful abuse requires admin interaction and, at minimum, a valid staff-level account - meaning the realistic threat is a malicious or compromised insider rather than an anonymous remote attacker. Impact is rated medium (CVSS 4.0 base 5.1; assessed CVSS 3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) and no public exploit code or confirmed active exploitation was identified at time of analysis; an attacker who does land the payload could perform admin-context actions such as creating a superuser account.

RemediationAI

No vendor-released patch version is identified at time of analysis - the 1.14.0 tag still contains the vulnerable helper, so remediation depends on tracking https://github.com/KoalixSwitzerland/koalixcrm/issues/444 for a fixed release and upgrading as soon as one is published. In the interim, the most direct control is a code-level fix in your own deployment: change Task.link_to_task() to build the anchor with django.utils.html.format_html() or escape the title with django.utils.html.escape() and drop any mark_safe() on the interpolated title; the trade-off is that this is a locally maintained fork that must be rebased on each upstream update. Operationally, restrict the Django admin task changelist and change form to a small trusted administrator group, and review which staff roles retain task create/edit permission, since any such account is a valid injection source - the trade-off is reduced workflow flexibility for non-admin staff. Network-restricting the admin interface to a VPN or management IP range reduces exposure to any authenticated-but-remote attacker at the cost of convenience for distributed admins. Deploying a Content-Security-Policy without 'unsafe-inline' on the admin origin can neutralize the payload, but may break existing inline admin widgets and requires testing. Finally, audit and sanitize existing task titles containing HTML tags or script fragments before enabling stricter escaping, to clear any already-stored payloads. Refer to https://www.vulncheck.com/advisories/koalixcrm-through-1.14.0-stored-xss-via-task-title-in-django-admin and the vendor issue for further guidance.

Affected VersionsENISA

koalixcrm 0 ≤1.14.0

Affected Packages

euvd koalixcrm no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

Koalix CRM is a Django-based business application whose admin interface is served by the standard Django admin site. Task.link_to_task() is a model helper that builds an HTML anchor for a task record and returns it as a marked-safe string; because the task title is interpolated directly into that markup instead of being passed through django.utils.html.format_html() or escape(), Django's automatic template escaping is bypassed and the title is emitted as raw HTML. This is the classic CWE-79 stored/persistent variant: the tainted value is committed to the database through ordinary staff edit workflows and is only detonated when a higher-privileged user loads the task changelist or change form, giving the script the administrator's session context. A secondary weakness, implied by the described ability to create a superuser, is the absence of adequate CSRF/privilege-separation defenses around admin write actions once same-origin script execution is achieved. The vulnerability affects the source tree at tag 1.14.0 (koalixcrm/crm/reporting/task.py) and is tracked upstream as GitHub issue #444; deployments that do not expose the Django admin task views are not reachable through this path.

Know when Django 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 (vulncheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Staff account needed so PR:L; admin must view the task so UI:R; script runs in the admin's browser context crossing a trust boundary so S:C; limited confidentiality/integrity impact and no availability loss.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

Koalixcrm through 1.14.0 contains a stored cross-site scripting vulnerability that allows staff users to inject script by storing malicious task titles rendered unescaped by Task.link_to_task(). Attackers can embed HTML or script that executes when administrators open the task changelist or change form, enabling actions like creating a superuser.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Rare
obscure open-source Django CRM, negligible enterprise deployment footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Django

View all
CVE-2021-23336 MEDIUM POC
5.9 Feb 15

The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9

CVE-2017-12794 MEDIUM POC
6.1 Sep 07

In Django 1.10.x before 1.10.8 and 1.11.x before 1.11.5, HTML autoescaping was disabled in a portion of the template for

CVE-2022-34265 CRITICAL POC
9.8 Jul 04

An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6. Rated critical severity (CVSS 9.8), this vulne

CVE-2021-35042 CRITICAL POC
9.8 Jul 02

Django 3.1.x before 3.1.13 and 3.2.x before 3.2.5 allows QuerySet.order_by SQL injection if order_by is untrusted input

CVE-2019-19844 CRITICAL POC
9.8 Dec 18

Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. Rated critical severity (CVSS 9.8

CVE-2026-61594 CRITICAL POC
9.1 Sep 16

An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti

CVE-2026-61599 HIGH POC
8.8 Sep 16

Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE

CVE-2020-9402 HIGH POC
8.8 Mar 05

Django 1.11 before 1.11.29, 2.2 before 2.2.11, and 3.0 before 3.0.4 allows SQL Injection if untrusted data is used as a

CVE-2016-6186 MEDIUM POC
6.1 Aug 05

Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j

CVE-2026-93456 HIGH POC
8.4 Sep 18

Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex

CVE-2026-61593 HIGH POC
8.1 Sep 16

Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros

CVE-2026-61590 HIGH POC
7.4 Sep 16

Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju

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