<?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>Thu, 01 Oct 2026 10:58:28 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-53607</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-53607</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, when `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO feature for serving uploaded files at clean URLs), the public pretty-URL handler builds the upstream URL using the raw `Host` HTTP request header. That URL is then `fetch`&amp;#39;ed and the response body + headers are streamed straight back to the requester. Because `Host` is fully attacker-controlled, an unauthenticated remote attacker can pivot the apostrophe process to issue outbound HTTP requests against any host it can reach on the private network. The path component is constrained to `/uploads/attachments/&amp;lt;cuid&amp;gt;-&amp;lt;slug&amp;gt;.&amp;lt;ext&amp;gt;` (built from a local-DB lookup), which keeps the impact narrow: cross-instance data exfiltration is neutralized by cuid uniqueness, but blind-SSRF residuals remain (network-topology mapping via response-code / timing differences and verbose proxy/WAF 404 body disclosure). As of time of publication, no known patched versions exist.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, when `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO feature for serving uploaded files at clean URLs), the public pretty-URL handler builds the upstream URL using the raw `Host` HTTP request header. That URL is then `fetch`&amp;#39;ed and the response body + headers are streamed straight back to the requester. Because `Host` is fully attacker-controlled, an unauthenticated remote attacker can pivot the apostrophe process to issue outbound HTTP requests against any host it can reach on the private network. The path component is constrained to `/uploads/attachments/&amp;lt;cuid&amp;gt;-&amp;lt;slug&amp;gt;.&amp;lt;ext&amp;gt;` (built from a local-DB lookup), which keeps the impact narrow: cross-instance data exfiltration is neutralized by cuid uniqueness, but blind-SSRF residuals remain (network-topology mapping via response-code / timing differences and verbose proxy/WAF 404 body disclosure). As of time of publication, no known patched versions exist.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-53607</guid>
    </item>
    <item>
      <title>GHSA-34pj-2622-jvxq — @apostrophecms/file pretty-URL Vulnerable to Unauthenticated SSRF via Host header</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-34pj-2622-jvxq</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;When `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO
feature for serving uploaded files at clean URLs), the public pretty-URL
handler builds the upstream URL using the raw `Host` HTTP request header:&lt;/p&gt;
&lt;p&gt;```js
proxyUrl = `${req.protocol}://${req.get(&amp;#39;host&amp;#39;)}${uglyUrl}`
```&lt;/p&gt;
&lt;p&gt;That URL is then `fetch`&amp;#39;ed and the response body + headers are streamed
straight back to the requester. Because `Host` is fully attacker-controlled,
an **unauthenticated remote** attacker can pivot the apostrophe process to
issue outbound HTTP requests against any host it can reach on the private
network. The path component is constrained to
`/uploads/attachments/&amp;lt;cuid&amp;gt;-&amp;lt;slug&amp;gt;.&amp;lt;ext&amp;gt;` (built from a local-DB lookup),
which keeps the impact narrow: cross-instance data exfiltration is
neutralised by cuid uniqueness, but blind-SSRF residuals remain
(network-topology mapping via response-code / timing differences and
verbose proxy/WAF 404 body disclosure). Verified on `apostrophe@4.30.0`
(latest); no fixed release exists.&lt;/p&gt;
&lt;p&gt;- **Affected:** `apostrophe &amp;lt;= 4.30.0` when `@apostrophecms/file` is
  configured with `prettyUrls: true` and uploadfs is **local** (the default;
  S3/CDN deployments produce an absolute `uglyUrl` and are not affected).&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`modules/@apostrophecms/file/index.js` (excerpt; the public GET route
registered when `prettyUrls: true`):&lt;/p&gt;
&lt;p&gt;```js
if (!self.options.prettyUrls) return;
return {
  get: {
    async [`${self.options.prettyUrlDir}/*`](req, res) {…&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;When `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO
feature for serving uploaded files at clean URLs), the public pretty-URL
handler builds the upstream URL using the raw `Host` HTTP request header:&lt;/p&gt;
&lt;p&gt;```js
proxyUrl = `${req.protocol}://${req.get(&amp;#39;host&amp;#39;)}${uglyUrl}`
```&lt;/p&gt;
&lt;p&gt;That URL is then `fetch`&amp;#39;ed and the response body + headers are streamed
straight back to the requester. Because `Host` is fully attacker-controlled,
an **unauthenticated remote** attacker can pivot the apostrophe process to
issue outbound HTTP requests against any host it can reach on the private
network. The path component is constrained to
`/uploads/attachments/&amp;lt;cuid&amp;gt;-&amp;lt;slug&amp;gt;.&amp;lt;ext&amp;gt;` (built from a local-DB lookup),
which keeps the impact narrow: cross-instance data exfiltration is
neutralised by cuid uniqueness, but blind-SSRF residuals remain
(network-topology mapping via response-code / timing differences and
verbose proxy/WAF 404 body disclosure). Verified on `apostrophe@4.30.0`
(latest); no fixed release exists.&lt;/p&gt;
&lt;p&gt;- **Affected:** `apostrophe &amp;lt;= 4.30.0` when `@apostrophecms/file` is
  configured with `prettyUrls: true` and uploadfs is **local** (the default;
  S3/CDN deployments produce an absolute `uglyUrl` and are not affected).&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`modules/@apostrophecms/file/index.js` (excerpt; the public GET route
registered when `prettyUrls: true`):&lt;/p&gt;
&lt;p&gt;```js
if (!self.options.prettyUrls) return;
return {
  get: {
    async [`${self.options.prettyUrlDir}/*`](req, res) {…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-34pj-2622-jvxq</guid>
    </item>
  </channel>
</rss>
