<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 02 Oct 2026 22:05:18 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-40594 — pyLoad: Session Cookie Security Downgrade via Untrusted X-Forwarded-Proto Header Spoofing (Global State Race Condition)</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-40594</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pyload&lt;/p&gt;
&lt;p&gt;pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev98, the set_session_cookie_secure before_request handler in src/pyload/webui/app/__init__.py reads the X-Forwarded-Proto header from any HTTP request without validating that the request originates from a trusted proxy, then mutates the global Flask configuration SESSION_COOKIE_SECURE on every request. Because pyLoad uses the multi-threaded Cheroot WSGI server (request_queue_size=512), this creates a race condition where an attacker&amp;#39;s request can influence the Secure flag on other users&amp;#39; session cookies — either downgrading cookie security behind a TLS proxy or causing a session denial-of-service on plain HTTP deployments. This vulnerability is fixed in 0.5.0b3.dev98.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pyload&lt;/p&gt;
&lt;p&gt;pyLoad is a free and open-source download manager written in Python. Prior to 0.5.0b3.dev98, the set_session_cookie_secure before_request handler in src/pyload/webui/app/__init__.py reads the X-Forwarded-Proto header from any HTTP request without validating that the request originates from a trusted proxy, then mutates the global Flask configuration SESSION_COOKIE_SECURE on every request. Because pyLoad uses the multi-threaded Cheroot WSGI server (request_queue_size=512), this creates a race condition where an attacker&amp;#39;s request can influence the Secure flag on other users&amp;#39; session cookies — either downgrading cookie security behind a TLS proxy or causing a session denial-of-service on plain HTTP deployments. This vulnerability is fixed in 0.5.0b3.dev98.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-40594</guid>
    </item>
    <item>
      <title>GHSA-mp82-fmj6-f22v — pyLoad has a Session Cookie Security Downgrade via Untrusted X-Forwarded-Proto Header Spoofing (Global State Race Condi…</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-mp82-fmj6-f22v</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pyload-ng&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `set_session_cookie_secure` `before_request` handler in `src/pyload/webui/app/__init__.py` reads the `X-Forwarded-Proto` header from any HTTP request without validating that the request originates from a trusted proxy, then mutates the **global** Flask configuration `SESSION_COOKIE_SECURE` on every request. Because pyLoad uses the multi-threaded Cheroot WSGI server (`request_queue_size=512`), this creates a race condition where an attacker&amp;#39;s request can influence the `Secure` flag on other users&amp;#39; session cookies — either downgrading cookie security behind a TLS proxy or causing a session denial-of-service on plain HTTP deployments.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;The vulnerable code is in `src/pyload/webui/app/__init__.py:75-84`:&lt;/p&gt;
&lt;p&gt;```python
# Dynamically set SESSION_COOKIE_SECURE according to the value of X-Forwarded-Proto
# TODO: Add trusted proxy check
@app.before_request
def set_session_cookie_secure():
    x_forwarded_proto = flask.request.headers.get(&amp;#34;X-Forwarded-Proto&amp;#34;, &amp;#34;&amp;#34;)
    is_secure = (
        x_forwarded_proto.split(&amp;#39;,&amp;#39;)[0].strip() == &amp;#34;https&amp;#34; or
        app.config[&amp;#34;PYLOAD_API&amp;#34;].get_config_value(&amp;#34;webui&amp;#34;, &amp;#34;use_ssl&amp;#34;)
    )
    flask.current_app.config[&amp;#39;SESSION_COOKIE_SECURE&amp;#39;] = is_secure
```&lt;/p&gt;
&lt;p&gt;The root cause has two components:&lt;/p&gt;
&lt;p&gt;1. **No origin validation (CWE-346):** The `X-Forwarded-Proto` header is read from any client request. This header is only trustworthy when set by a known reverse proxy. Without `ProxyFix` middleware or a trusted proxy allowlist, any client can…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pyload-ng&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `set_session_cookie_secure` `before_request` handler in `src/pyload/webui/app/__init__.py` reads the `X-Forwarded-Proto` header from any HTTP request without validating that the request originates from a trusted proxy, then mutates the **global** Flask configuration `SESSION_COOKIE_SECURE` on every request. Because pyLoad uses the multi-threaded Cheroot WSGI server (`request_queue_size=512`), this creates a race condition where an attacker&amp;#39;s request can influence the `Secure` flag on other users&amp;#39; session cookies — either downgrading cookie security behind a TLS proxy or causing a session denial-of-service on plain HTTP deployments.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;The vulnerable code is in `src/pyload/webui/app/__init__.py:75-84`:&lt;/p&gt;
&lt;p&gt;```python
# Dynamically set SESSION_COOKIE_SECURE according to the value of X-Forwarded-Proto
# TODO: Add trusted proxy check
@app.before_request
def set_session_cookie_secure():
    x_forwarded_proto = flask.request.headers.get(&amp;#34;X-Forwarded-Proto&amp;#34;, &amp;#34;&amp;#34;)
    is_secure = (
        x_forwarded_proto.split(&amp;#39;,&amp;#39;)[0].strip() == &amp;#34;https&amp;#34; or
        app.config[&amp;#34;PYLOAD_API&amp;#34;].get_config_value(&amp;#34;webui&amp;#34;, &amp;#34;use_ssl&amp;#34;)
    )
    flask.current_app.config[&amp;#39;SESSION_COOKIE_SECURE&amp;#39;] = is_secure
```&lt;/p&gt;
&lt;p&gt;The root cause has two components:&lt;/p&gt;
&lt;p&gt;1. **No origin validation (CWE-346):** The `X-Forwarded-Proto` header is read from any client request. This header is only trustworthy when set by a known reverse proxy. Without `ProxyFix` middleware or a trusted proxy allowlist, any client can…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-mp82-fmj6-f22v</guid>
    </item>
  </channel>
</rss>
