CVE-2026-41232
PHP vulnerability analysis and mitigation

Overview

CVE-2026-41232 is an incorrect authorization vulnerability in Froxlor, an open-source server administration panel, that allows authenticated customers to add email sender aliases for domains belonging to other customers. The flaw exists in EmailSender::add() in all versions prior to 2.3.6, where a wrong array index causes domain ownership validation to be bypassed entirely. It was published on April 23, 2026, with a patch released in Froxlor 2.3.6. The vulnerability carries a CVSS v3.1 base score of 5.0 (Medium) (GitHub Advisory).

Technical details

The root cause is classified as CWE-863 (Incorrect Authorization): in lib/Froxlor/Api/Commands/EmailSender.php at line 100, when processing a full email address (e.g., admin@domain-b.com) as an allowed sender, the code calls explode("@", $allowed_sender)[0], which yields the local part (admin) instead of the domain (domain-b.com). This local part is then passed to validateLocalDomainOwnership(), which queries the panel_domains table for a domain matching that string; since no domain named admin exists, the query returns false and the ownership check silently passes. The resulting mail_sender_aliases entry is then consumed by Postfix's sender_login_maps, which authorizes the attacker's mail account to send as the spoofed address. The wildcard (@domain) code path is not affected, as it correctly passes the domain portion (GitHub Advisory, Patch Commit).

Impact

Any authenticated customer on a multi-tenant Froxlor instance can impersonate email addresses on domains owned by other customers, bypassing Postfix's smtpd_sender_login_maps restriction. Because spoofed emails originate from the legitimate mail server, they may pass SPF and DKIM checks for the target domain if those records point to the Froxlor server, making phishing attacks highly credible. This constitutes a multi-tenant isolation breach with significant integrity impact, enabling cross-customer email spoofing, phishing, and potential reputational damage to affected domain owners (GitHub Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, consisting of concrete curl commands demonstrating how to add a cross-customer sender alias via the Froxlor API. Exploitation requires only a valid authenticated customer account and that the mail.enable_allow_sender feature is enabled on the Froxlor instance. The EPSS score is approximately 0.025% (very low), and there is no evidence of active in-the-wild exploitation or CISA KEV catalog listing as of the time of publication (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify a multi-tenant Froxlor instance (version < 2.3.6) with mail.enable_allow_sender enabled. Obtain a valid customer account (Customer A) on the target instance.
  2. Identify target domain: Determine an email address on a domain owned by another customer (Customer B), e.g., ceo@domain-b.com.
  3. Send malicious API request: As Customer A, issue a POST request to the Froxlor API to add the cross-customer address as an allowed sender alias:
curl -X POST 'https://froxlor-host/api/v1/' \
  -H 'Authorization: Basic <Customer_A_credentials>' \
  -H 'Content-Type: application/json' \
  -d '{
    "command": "EmailSender.add",
    "params": {
      "emailaddr": "myaccount@domain-a.com",
      "allowed_sender": "ceo@domain-b.com"
    }
  }'
  1. Bypass validation: The server passes ceo (the local part) instead of domain-b.com to validateLocalDomainOwnership(). Since no domain named ceo exists, the check passes silently and the alias is inserted into mail_sender_aliases.
  2. Verify alias creation: Confirm the alias was created using EmailSender.listing via the API.
  3. Send spoofed email: Connect to the Froxlor mail server via SMTP as Customer A's mail account and set the MAIL FROM address to ceo@domain-b.com. Postfix's sender_login_maps authorizes this because the alias entry now maps ceo@domain-b.com to Customer A's account (GitHub Advisory).

Indicators of compromise

  • Network: Unexpected SMTP sessions from a customer mail account using a MAIL FROM address on a domain not owned by that customer; API POST requests to /api/v1/ with EmailSender.add command and allowed_sender values referencing foreign domains.
  • Logs: Froxlor application logs showing successful EmailSender.add calls where the allowed_sender domain does not match any domain owned by the requesting customer; Postfix logs (mail.log) showing sender_login_maps matches for cross-customer sender addresses.
  • Database: Rows in the mail_sender_aliases table where the domain portion of allowed_sender does not belong to the same customer as the associated email address.

Mitigation and workarounds

Upgrade Froxlor to version 2.3.6 or later, which fixes the issue by changing array index [0] to [1] on line 100 of lib/Froxlor/Api/Commands/EmailSender.php, ensuring the domain part of the email address is correctly passed to validateLocalDomainOwnership() (Patch Commit, Release Notes). As an interim measure for instances that cannot be immediately upgraded, administrators should audit the mail_sender_aliases database table for any entries where the allowed_sender domain does not belong to the same customer as the associated email account, and remove unauthorized aliases. Disabling the mail.enable_allow_sender feature entirely will also prevent exploitation until the patch is applied.

Community reactions

The vulnerability was disclosed via a GitHub Security Advisory by Froxlor maintainer d00p on April 15, 2026, and patched in the same release cycle. The 2.3.6 release was labeled a "security release" and addressed multiple security issues simultaneously (Release Notes). No significant broader media coverage or notable researcher commentary beyond the official advisory has been identified.

Additional resources


SourceThis report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-84361HIGH7.7
  • PHP logoPHP
  • composer
NoYesSep 01, 2026
GHSA-8rr7-cvq3-gmfhHIGH7.5
  • PHP logoPHP
  • league/commonmark
NoYesSep 01, 2026
GHSA-jjv6-8j6v-6j52HIGH7.5
  • PHP logoPHP
  • league/commonmark
NoYesSep 01, 2026
GHSA-j8pm-gj4c-rq4xHIGH7.5
  • PHP logoPHP
  • league/commonmark
NoYesSep 01, 2026
GHSA-f8fg-pg57-v4j8HIGH7.2
  • PHP logoPHP
  • league/commonmark
NoYesSep 01, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management