CVE-2024-41964

8.1 HIGH

📋 TL;DR

This vulnerability in Kirby CMS allows attackers with Panel access to manipulate language definitions despite permission restrictions. Users with restricted roles could update existing language definitions even when language permissions were disabled. This affects all Kirby installations using vulnerable versions where role-based permissions are configured.

💻 Affected Systems

Products:
  • Kirby CMS
Versions: Kirby 3.x before 3.6.6.6, 3.7.x before 3.7.5.5, 3.8.x before 3.8.4.4, 3.9.x before 3.9.8.2, 3.10.x before 3.10.1.1, and Kirby 4.x before 4.3.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects installations where role-based permissions are used and language permissions are restricted.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could modify language definitions to inject malicious content, redirect users, or alter site functionality across all language versions of the site.

🟠

Likely Case

Unauthorized modification of language content leading to defacement, content manipulation, or minor functional changes.

🟢

If Mitigated

With proper access controls and monitoring, impact is limited to authorized users only making legitimate language updates.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Requires authenticated Panel access with any user role. Exploitation is straightforward once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Kirby 3.6.6.6, 3.7.5.5, 3.8.4.4, 3.9.8.2, 3.10.1.1, or 4.3.1

Vendor Advisory: https://github.com/getkirby/kirby/security/advisories/GHSA-jm9m-rqr3-wfmh

Restart Required: No

Instructions:

1. Backup your Kirby installation. 2. Update Kirby via Composer (composer update getkirby/cms) or manually replace core files. 3. Verify the update completed successfully. 4. Test language permission functionality.

🧯 If You Can't Patch

  • Restrict Panel access to only trusted administrators
  • Implement additional authentication factors for Panel users

🔍 How to Verify

Check if Vulnerable:

Check Kirby version in composer.json or site/config/config.php. Compare against affected version ranges.

Check Version:

Check composer.json for "getkirby/cms" version or view Kirby version in Panel footer.

Verify Fix Applied:

Verify Kirby version is 3.6.6.6, 3.7.5.5, 3.8.4.4, 3.9.8.2, 3.10.1.1, 4.3.1 or later. Test language update permissions with restricted user roles.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized language update attempts in Kirby logs
  • Language definition modifications by non-admin users

Network Indicators:

  • POST requests to language update endpoints from unauthorized roles

SIEM Query:

source="kirby_logs" AND (event="language_update" OR event="language_modified") AND user_role!="admin"

🔗 References

📤 Share & Export