<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-06T14:36:34.555458+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/euvd-2026-290511</id>
    <title>EUVD-2026-290511</title>
    <updated>2026-10-06T14:36:34.609237+00:00</updated>
    <content>EUVD-2026-290511</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-290511"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-39859</id>
    <title>fkie_cve-2026-39859</title>
    <updated>2026-10-06T14:36:34.609274+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.3, liquidjs 10.25.0 documents root as constraining filenames passed to renderFile() and parseFile(), but top-level file loads do not enforce that boundary. A Liquid instance configured with an empty temporary directory as root can return the contents of arbitrary files. This vulnerability is fixed in 10.25.3.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-39859"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-v273-448j-v4qj</id>
    <title>GHSA-v273-448j-v4qj — LiquidJS: `renderFile()` / `parseFile()` bypass configured `root` and allow arbitrary file read</title>
    <updated>2026-10-06T14:36:34.609308+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: liquidjs</p>
<p>`liquidjs` 10.25.0 documents `root` as constraining filenames passed to `renderFile()` and `parseFile()`, but top-level file loads do not enforce that boundary.</p>
<p>The published npm package `liquidjs@10.25.0` on Linux 6.17.0 with Node v22.22.1. A `Liquid` instance configured with an empty temporary directory as `root` still returned the contents of `/etc/hosts` when `renderFile('/etc/hosts')` was called. I have not exhaustively checked older releases yet; 10.25.0 is the latest tested version.</p>
<p>Root cause:
- `src/parser/parser.ts:83-85` calls `loader.lookup(file, LookupType.Root, ...)` and then reads the returned file.
- `src/fs/loader.ts:38` passes `type !== LookupType.Root` into `candidates()`.
- For `LookupType.Root`, `enforceRoot` is false, so `src/fs/loader.ts:47-66` accepts resolved absolute paths and fallback results without any `contains()` check.</p>
<p>This appears adjacent to the March 10, 2026 fix for CVE-2026-30952, which hardened `include` / `render` / `layout` but not the top-level file-loading APIs.</p>
<p>Proof of concept:
```javascript
const fs = require('fs');
const os = require('os');
const path = require('path');
const { Liquid } = require('liquidjs');</p>
<p>const safeRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'liquidjs-safe-root-'));
const engine = new Liquid({ root: [safeRoot], extname: '.liquid' });</p>
<p>engine.renderFile('/etc/hosts').then(console.log);
```</p>
<p>Expected result: a path outside `root` should be rejected.
Actual result: `/etc/hosts` is rendered successfully.</p>
<p>I…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-v273-448j-v4qj"/>
  </entry>
</feed>
