<?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>Tue, 06 Oct 2026 08:22:30 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-326980</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-326980</link>
      <description>EUVD-2026-326980</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-326980</guid>
    </item>
    <item>
      <title>fkie_cve-2026-45013</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-45013</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Versions up to and including 4.29.0 have a password reset flow that constructs the reset URL using `req.hostname`, which is derived directly from the attacker-controlled HTTP `Host` header when `apos.baseUrl` is not explicitly configured. An unauthenticated attacker who knows a victim&amp;#39;s email address can send a crafted reset request that causes the application to email the victim a reset link pointing to the attacker&amp;#39;s domain. When the victim clicks the link, the valid reset token is delivered to the attacker, enabling full account takeover. As of time of publication, no known patched versions are available.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. Versions up to and including 4.29.0 have a password reset flow that constructs the reset URL using `req.hostname`, which is derived directly from the attacker-controlled HTTP `Host` header when `apos.baseUrl` is not explicitly configured. An unauthenticated attacker who knows a victim&amp;#39;s email address can send a crafted reset request that causes the application to email the victim a reset link pointing to the attacker&amp;#39;s domain. When the victim clicks the link, the valid reset token is delivered to the attacker, enabling full account takeover. As of time of publication, no known patched versions are available.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-45013</guid>
    </item>
    <item>
      <title>GHSA-gf43-24g3-5hw2 — Apostrophe has a Weak Password Recovery Mechanism for Forgotten Password and Improper Input Validation</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-gf43-24g3-5hw2</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;ApostropheCMS&amp;#39;s password reset flow constructs the reset URL using `req.hostname`, 
which is derived directly from the attacker-controlled HTTP `Host` header when 
`apos.baseUrl` is not explicitly configured. An unauthenticated attacker who knows 
a victim&amp;#39;s email address can send a crafted reset request that causes the application 
to email the victim a reset link pointing to the attacker&amp;#39;s domain. When the victim 
clicks the link, the valid reset token is delivered to the attacker, enabling full 
account takeover.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;`modules/@apostrophecms/login/index.js` — `resetRequest` route  
Precondition: `passwordReset: true` is set **and** `apos.baseUrl` is not configured.&lt;/p&gt;
&lt;p&gt;## Vulnerability Details&lt;/p&gt;
&lt;p&gt;The `setPrefixUrls` middleware (i18n layer) builds `req.baseUrl` using `req.hostname`:&lt;/p&gt;
&lt;p&gt;```js
// Simplified from i18n middleware
req.baseUrl = `${req.protocol}://${req.hostname}`;
req.absoluteUrl = req.baseUrl + req.url;
```&lt;/p&gt;
&lt;p&gt;The `resetRequest` handler then passes this tainted value directly into URL construction:&lt;/p&gt;
&lt;p&gt;```js
const parsed = new URL(
  req.absoluteUrl,           // ← tainted by attacker&amp;#39;s Host header
  self.apos.baseUrl
    ? undefined
    : `${req.protocol}://${req.hostname}${port}`  // ← also tainted
);
parsed.pathname = &amp;#39;/login&amp;#39;;
parsed.searchParams.append(&amp;#39;reset&amp;#39;, reset);   // real, valid token
parsed.searchParams.append(&amp;#39;email&amp;#39;, user.email);
await self.email(..., { url: parsed.toString() }, ...);
// Email sent to victim with URL pointing…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: apostrophe&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;ApostropheCMS&amp;#39;s password reset flow constructs the reset URL using `req.hostname`, 
which is derived directly from the attacker-controlled HTTP `Host` header when 
`apos.baseUrl` is not explicitly configured. An unauthenticated attacker who knows 
a victim&amp;#39;s email address can send a crafted reset request that causes the application 
to email the victim a reset link pointing to the attacker&amp;#39;s domain. When the victim 
clicks the link, the valid reset token is delivered to the attacker, enabling full 
account takeover.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;`modules/@apostrophecms/login/index.js` — `resetRequest` route  
Precondition: `passwordReset: true` is set **and** `apos.baseUrl` is not configured.&lt;/p&gt;
&lt;p&gt;## Vulnerability Details&lt;/p&gt;
&lt;p&gt;The `setPrefixUrls` middleware (i18n layer) builds `req.baseUrl` using `req.hostname`:&lt;/p&gt;
&lt;p&gt;```js
// Simplified from i18n middleware
req.baseUrl = `${req.protocol}://${req.hostname}`;
req.absoluteUrl = req.baseUrl + req.url;
```&lt;/p&gt;
&lt;p&gt;The `resetRequest` handler then passes this tainted value directly into URL construction:&lt;/p&gt;
&lt;p&gt;```js
const parsed = new URL(
  req.absoluteUrl,           // ← tainted by attacker&amp;#39;s Host header
  self.apos.baseUrl
    ? undefined
    : `${req.protocol}://${req.hostname}${port}`  // ← also tainted
);
parsed.pathname = &amp;#39;/login&amp;#39;;
parsed.searchParams.append(&amp;#39;reset&amp;#39;, reset);   // real, valid token
parsed.searchParams.append(&amp;#39;email&amp;#39;, user.email);
await self.email(..., { url: parsed.toString() }, ...);
// Email sent to victim with URL pointing…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-gf43-24g3-5hw2</guid>
    </item>
  </channel>
</rss>
