<?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://vulnerability.circl.lu</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>Sat, 10 Oct 2026 08:43:11 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-21644 — pyLoad unauthenticated flask configuration leakage</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-21644</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pyload&lt;/p&gt;
&lt;p&gt;pyLoad is the free and open-source Download Manager written in pure Python. Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable. This issue has been patched in version 0.5.0b3.dev77.&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 the free and open-source Download Manager written in pure Python. Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable. This issue has been patched in version 0.5.0b3.dev77.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-21644</guid>
    </item>
    <item>
      <title>PYSEC-2026-1820 — pyload Unauthenticated Flask Configuration Leakage vulnerability</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-1820</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pyload-ng&lt;/p&gt;
&lt;p&gt;### Summary
Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable.&lt;/p&gt;
&lt;p&gt;### Details
Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable.&lt;/p&gt;
&lt;p&gt;### PoC
Run `pyload` in the default configuration by running the following command
```
pyload
```&lt;/p&gt;
&lt;p&gt;Now browse to `http://localhost:8000/render/info.html`. Notice how the Flask configuration gets displayed.
![PoC](https://user-images.githubusercontent.com/44903767/294522246-4cc19c49-b315-4926-8fd6-ec3c3fdb7c1f.png)&lt;/p&gt;
&lt;p&gt;I was quite amused by this finding. I think it&amp;#39;s a very interesting coming together of things that is so unlikely to happen. Below I will detail my process a bit more.&lt;/p&gt;
&lt;p&gt;I was looking through the code to see how the authorization mechanism is implemented when I spotted this route, which can be accessed by any unauthenticated actor
- https://github.com/pyload/pyload/blob/57d81930edb59177c60830ad8ac36a91d0ec4c4e/src/pyload/webui/app/blueprints/app_blueprint.py#L33C1-L37C51
```python
@bp.route(&amp;#34;/render/&amp;lt;path:filename&amp;gt;&amp;#34;, endpoint=&amp;#34;render&amp;#34;)
def render(filename):
    mimetype = mimetypes.guess_type(filename)[0] or &amp;#34;text/html&amp;#34;
    data = render_template(filename)
    return flask.Response(data, mimetype=mimetype)
 ```&lt;/p&gt;
&lt;p&gt;This route allows me to load in any of the predefined templates. However, these templates will be lacking any form of context, and as such it doesn&amp;#39;t seem too useful. That is until I loaded the `in…&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
Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable.&lt;/p&gt;
&lt;p&gt;### Details
Any unauthenticated user can browse to a specific URL to expose the Flask config, including the `SECRET_KEY` variable.&lt;/p&gt;
&lt;p&gt;### PoC
Run `pyload` in the default configuration by running the following command
```
pyload
```&lt;/p&gt;
&lt;p&gt;Now browse to `http://localhost:8000/render/info.html`. Notice how the Flask configuration gets displayed.
![PoC](https://user-images.githubusercontent.com/44903767/294522246-4cc19c49-b315-4926-8fd6-ec3c3fdb7c1f.png)&lt;/p&gt;
&lt;p&gt;I was quite amused by this finding. I think it&amp;#39;s a very interesting coming together of things that is so unlikely to happen. Below I will detail my process a bit more.&lt;/p&gt;
&lt;p&gt;I was looking through the code to see how the authorization mechanism is implemented when I spotted this route, which can be accessed by any unauthenticated actor
- https://github.com/pyload/pyload/blob/57d81930edb59177c60830ad8ac36a91d0ec4c4e/src/pyload/webui/app/blueprints/app_blueprint.py#L33C1-L37C51
```python
@bp.route(&amp;#34;/render/&amp;lt;path:filename&amp;gt;&amp;#34;, endpoint=&amp;#34;render&amp;#34;)
def render(filename):
    mimetype = mimetypes.guess_type(filename)[0] or &amp;#34;text/html&amp;#34;
    data = render_template(filename)
    return flask.Response(data, mimetype=mimetype)
 ```&lt;/p&gt;
&lt;p&gt;This route allows me to load in any of the predefined templates. However, these templates will be lacking any form of context, and as such it doesn&amp;#39;t seem too useful. That is until I loaded the `in…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-1820</guid>
    </item>
  </channel>
</rss>
