Missing AuthorizationWeakness · CWE-862

CVE-2026-11990

MEDIUM · 5.3 CVSS v3.1 Published 2026-07-10
Mitigation only
No fix yet — a mitigation exists. There is no fixed release. A documented workaround reduces exposure in the meantime.
See remediation →
62/100
Remediation priority · Elevated
Remotely reachable No privileges Zero-click 6 weeks old

Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.

NVD · unedited
The KiviCare – Clinic & Patient Management System (EHR) plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 4.4.0. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for unauthenticated attackers to mark arbitrary pending appointments as Confirmed and forge an associated completed payment record in wp_kc_payments_appointment_mappings using an attacker-supplied payment ID, bypassing payment entirely. This exploit is achievable on a default installation because the gateway resolution logic returns all registered gateways regardless of admin-enabled status, making the manual (KCPayLater) gateway always selectable.

Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.

dbcve analysis · high confidence

The KiviCare WordPress plugin fails to properly verify user authorization before allowing appointment status changes and payment record creation. Unauthenticated attackers can manipulate pending appointments to Confirmed status and create forged payment records in the wp_kc_payments_appointment_mappings table using arbitrary payment IDs. The vulnerability stems from the gateway resolution logic returning all registered gateways regardless of admin configuration, allowing the manual KCPayLater gateway to always be selectable.

MitigationApply the latest plugin update which should include proper authorization checks before appointment status modifications and validation that gateways are admin-enabled before allowing selection. Until patched, restrict public appointment booking forms or disable the KCPayLater gateway if possible.

Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.

CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.

From the vector
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.

dbcve checks

Work through these to decide whether this CVE applies to you.

  1. Confirm KiviCare plugin installation
    In WordPress admin, go to Plugins > Installed Plugins and locate KiviCare. Note the version number displayed. Alternatively, check the plugin header in wp-content/plugins/kivicare-server-version.php or the main plugin file.
    Affected if KiviCare plugin is installed and the version has not yet received the CVE-2026-11990 patch.
  2. Verify public appointment booking is enabled
    Check if any KiviCare appointment booking form or public-facing widget is active on the site. Inspect page content or widget settings for KiviCare booking forms.
    Affected if Public booking forms are exposed, allowing unauthenticated access to the vulnerable endpoint.
  3. Inspect payment records for forged entries
    Query the wp_kc_payments_appointment_mappings table in the database: SELECT * FROM wp_kc_payments_appointment_mappings WHERE payment_id NOT IN (SELECT id FROM wp_kc_payments); Look for records with payment IDs that do not correspond to actual payment entries, or records created at unexpected times.
    Affected if Records exist with payment IDs that do not match valid payments, indicating forged payment data from exploitation.
  4. Check for unauthorized appointment status changes
    Query the appointments table (typically wp_kc_appointments) for records where status changed from 'Pending' to 'Confirmed' at unexpected times or in bulk, especially if correlated with suspicious payment mapping entries.
    Affected if Appointments show unauthorized status changes to Confirmed without corresponding legitimate payment processing.
  5. Review access logs for vulnerable endpoint access
    Examine web server access logs for POST requests to KiviCare AJAX endpoints (typically /wp-admin/admin-ajax.php?action=kc_...) that modify appointment status or create payment mappings without valid authentication cookies.
    Affected if Requests to status change or payment creation endpoints originate from unauthenticated IP addresses.

A user is affected if KiviCare is installed with an unpatched version and has public booking forms enabled, especially if suspicious payment mapping records or unauthorized appointment status changes are found in the database.

Generated from the published advisory. Verify against your own configuration.

Check your environment

Paste your version and any relevant configuration and it will be compared against the affected criteria above. Do not include secrets or credentials.

AI-assisted, checked against the advisory. Informational, not a guarantee.

Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.

dbcve · scoped
Mitigation available No clean upgrade yet — mitigate in the meantime
Mitigation

Apply the latest plugin update which should include proper authorization checks before appointment status modifications and validation that gateways are admin-enabled before allowing selection. Until patched, restrict public appointment booking forms or disable the KCPayLater gateway if possible.

Recommended fix Moderate confidence

4.4.1

  1. Log in to the WordPress admin dashboard
  2. Navigate to Plugins > Installed Plugins
  3. Find KiviCare – Clinic & Patient Management System (EHR) in the plugin list
  4. If the plugin shows a new version available, click 'Update Now' to upgrade to version 4.4.1
  5. Alternatively, download version 4.4.1 from the WordPress plugin repository and upload/install it manually
  6. After upgrading, verify the plugin is running version 4.4.1 under Plugins > Installed Plugins
  7. Test that appointment and payment functionality works correctly with the update

Generated from the published advisory — verify against the referenced sources before acting.

Have this fixed Scoped from the published advisory
  • Consultation4.0 h
  • Implementation8.0 h
  • Testing4.0 h
  • Review / QA3.0 h
19.0 hours of engineering $3,380
Get help mitigating

An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $5,408.

Scan for this in your stack

Free · runs locally
dbcve dependency scanner

Check whether your project pulls in CVE-2026-11990 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.

References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.

Primary sources

Practitioner notes

Contributed

Peer-ranked notes from engineers who’ve handled CVE-2026-11990 in production — separate from our analysis above.

No notes yet

Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.

What this is

A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.

What belongs here
  • Verified mitigations, workarounds, and config changes
  • Version or environment caveats, and links to real fixes
  • No weaponised exploit code, or anything meant to cause harm
  • No spam, self-promotion, credentials, or personal data