CVE-2026-35507
Received Received - Intake
Host Header Injection in Shynet Password Reset Flow

Publication date: 2026-04-03

Last updated on: 2026-04-10

Assigner: MITRE

Description
Shynet before 0.14.0 allows Host header injection in the password reset flow.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-04-03
Last Modified
2026-04-10
Generated
2026-05-07
AI Q&A
2026-04-03
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
shynet shynet to 0.13.1 (inc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-348 The product has two different sources of the same data or information, but it uses the source that has less support for verification, is less trusted, or is less resistant to attack.
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

The vulnerability allows an attacker to poison password reset emails with malicious URLs, potentially leading to account compromise through token leakage.

Such unauthorized access risks exposing personal or sensitive data, which could impact compliance with data protection regulations like GDPR and HIPAA that require safeguarding user credentials and preventing unauthorized access.

However, the provided information does not explicitly discuss compliance implications or how this vulnerability directly affects adherence to these standards.


Can you explain this vulnerability to me?

CVE-2026-35507 is a Host header injection vulnerability in the Shynet project before version 0.14.0, specifically in the password reset flow.

The root cause is that the Django setting ALLOWED_HOSTS was set to a wildcard "*", which disables Host header validation. This allowed an attacker to send password reset requests with a spoofed Host header.

As a result, password reset emails sent to users contained URLs pointing to the attacker's domain instead of the legitimate site.

If a victim clicks the malicious link or an automated email scanner previews it, the valid password reset token can be leaked to the attacker, enabling account compromise.

The vulnerability was fixed by removing the wildcard from ALLOWED_HOSTS and requiring explicit allowed hosts, which restores proper Host header validation.


How can this vulnerability impact me? :

This vulnerability can lead to account compromise by leaking valid password reset tokens to attackers.

An attacker can craft password reset requests with a spoofed Host header so that victims receive password reset emails containing malicious URLs.

If victims or automated systems click these malicious links, the attacker gains access to valid reset tokens, allowing unauthorized password resets and account takeover.

This undermines the security of user accounts and can lead to unauthorized access to sensitive information or services.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by testing whether the Shynet instance accepts password reset requests with spoofed Host headers and whether the password reset emails contain URLs pointing to attacker-controlled domains.

A practical detection method is to send a crafted POST request to the password reset endpoint with a manipulated Host header and observe the response and resulting email behavior.

For example, you can use the following curl command to test for the vulnerability:

  • curl -X POST http://<shynet-ip>/accounts/password/reset/ -H "Host: attacker.com" -d "email=admin@..."

If the password reset email contains a URL with the spoofed domain (e.g., http://attacker.com/accounts/password/reset/key/<valid-token>/), the system is vulnerable.


What immediate steps should I take to mitigate this vulnerability?

To mitigate this vulnerability immediately, you should remove the wildcard "*" from the Django ALLOWED_HOSTS setting and replace it with a restrictive list of allowed hostnames.

Specifically, update your settings.py to set ALLOWED_HOSTS to explicit values such as "localhost" and "127.0.0.1", or your legitimate domain names.

This change ensures that Django's CommonMiddleware rejects requests with spoofed Host headers by returning HTTP 400 errors before any view logic executes.

Additional steps include:

  • Upgrade to Shynet version 0.14.0 or later, which includes this fix.
  • Avoid using wildcard or overly broad host settings in deployment configurations, including Kubernetes secrets and Heroku app.json.
  • Review and update deployment environment variables to ensure ALLOWED_HOSTS is explicitly set.

Following these steps will prevent Host header injection attacks in the password reset flow and protect against token leakage.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart