<?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>Wed, 14 Oct 2026 21:19:38 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-277284</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-277284</link>
      <description>EUVD-2026-277284</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-277284</guid>
    </item>
    <item>
      <title>fkie_cve-2026-33344</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-33344</link>
      <description>&lt;p&gt;Dagu is a workflow engine with a built-in Web user interface. From version 2.0.0 to before version 2.3.1, the fix for CVE-2026-27598 added ValidateDAGName to CreateNewDAG and rewrote generateFilePath to use filepath.Base. This patched the CREATE path. The remaining API endpoints - GET, DELETE, RENAME, EXECUTE - all pass the {fileName} URL path parameter to locateDAG without calling ValidateDAGName. %2F-encoded forward slashes in the {fileName} segment traverse outside the DAGs directory. This issue has been patched in version 2.3.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Dagu is a workflow engine with a built-in Web user interface. From version 2.0.0 to before version 2.3.1, the fix for CVE-2026-27598 added ValidateDAGName to CreateNewDAG and rewrote generateFilePath to use filepath.Base. This patched the CREATE path. The remaining API endpoints - GET, DELETE, RENAME, EXECUTE - all pass the {fileName} URL path parameter to locateDAG without calling ValidateDAGName. %2F-encoded forward slashes in the {fileName} segment traverse outside the DAGs directory. This issue has been patched in version 2.3.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-33344</guid>
    </item>
    <item>
      <title>GHSA-ph8x-4jfv-v9v8 — Dagu has an incomplete fix for CVE-2026-27598: path traversal via %2F-encoded slashes in locateDAG</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-ph8x-4jfv-v9v8</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/dagu-org/dagu&lt;/p&gt;
&lt;p&gt;The fix for CVE-2026-27598 (commit e2ed589, PR #1691) added `ValidateDAGName` to `CreateNewDAG` and rewrote `generateFilePath` to use `filepath.Base`. This patched the CREATE path. The remaining API endpoints - GET, DELETE, RENAME, EXECUTE - all pass the `{fileName}` URL path parameter to `locateDAG` without calling `ValidateDAGName`. `%2F`-encoded forward slashes in the `{fileName}` segment traverse outside the DAGs directory.&lt;/p&gt;
&lt;p&gt;### Vulnerable code&lt;/p&gt;
&lt;p&gt;`internal/persis/filedag/store.go`, lines 508-513:&lt;/p&gt;
&lt;p&gt;```go
func (store *Storage) locateDAG(nameOrPath string) (string, error) {
    if strings.Contains(nameOrPath, string(filepath.Separator)) {
        foundPath, err := findDAGFile(nameOrPath)
        if err == nil {
            return foundPath, nil  // returns arbitrary resolved path
        }
    }
    // ...safe searchPaths branch follows
```&lt;/p&gt;
&lt;p&gt;`findDAGFile` resolves the path with `filepath.Abs` and checks only that the file exists with a YAML extension. No containment check against `baseDir`.&lt;/p&gt;
&lt;p&gt;Chi v5 routes using `r.URL.RawPath` when set. The pattern `/dags/{fileName}/spec` captures `..%2F..%2Fetc%2Ftarget.yaml` as a single path segment. The oapi-codegen runtime calls `url.PathUnescape`, producing `../../etc/target.yaml`. This decoded string reaches `locateDAG` with the `/` separator intact.&lt;/p&gt;
&lt;p&gt;Go&amp;#39;s `net/http.ServeMux` would normally redirect paths containing `..`, but dagu binds the chi mux directly to `&amp;amp;http.Server{Handler: r}` (server.go:833-834), so no path cleaning fires.…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/dagu-org/dagu&lt;/p&gt;
&lt;p&gt;The fix for CVE-2026-27598 (commit e2ed589, PR #1691) added `ValidateDAGName` to `CreateNewDAG` and rewrote `generateFilePath` to use `filepath.Base`. This patched the CREATE path. The remaining API endpoints - GET, DELETE, RENAME, EXECUTE - all pass the `{fileName}` URL path parameter to `locateDAG` without calling `ValidateDAGName`. `%2F`-encoded forward slashes in the `{fileName}` segment traverse outside the DAGs directory.&lt;/p&gt;
&lt;p&gt;### Vulnerable code&lt;/p&gt;
&lt;p&gt;`internal/persis/filedag/store.go`, lines 508-513:&lt;/p&gt;
&lt;p&gt;```go
func (store *Storage) locateDAG(nameOrPath string) (string, error) {
    if strings.Contains(nameOrPath, string(filepath.Separator)) {
        foundPath, err := findDAGFile(nameOrPath)
        if err == nil {
            return foundPath, nil  // returns arbitrary resolved path
        }
    }
    // ...safe searchPaths branch follows
```&lt;/p&gt;
&lt;p&gt;`findDAGFile` resolves the path with `filepath.Abs` and checks only that the file exists with a YAML extension. No containment check against `baseDir`.&lt;/p&gt;
&lt;p&gt;Chi v5 routes using `r.URL.RawPath` when set. The pattern `/dags/{fileName}/spec` captures `..%2F..%2Fetc%2Ftarget.yaml` as a single path segment. The oapi-codegen runtime calls `url.PathUnescape`, producing `../../etc/target.yaml`. This decoded string reaches `locateDAG` with the `/` separator intact.&lt;/p&gt;
&lt;p&gt;Go&amp;#39;s `net/http.ServeMux` would normally redirect paths containing `..`, but dagu binds the chi mux directly to `&amp;amp;http.Server{Handler: r}` (server.go:833-834), so no path cleaning fires.…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-ph8x-4jfv-v9v8</guid>
    </item>
  </channel>
</rss>
