<?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 20:20:39 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-321458</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-321458</link>
      <description>EUVD-2026-321458</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-321458</guid>
    </item>
    <item>
      <title>fkie_cve-2026-48126</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-48126</link>
      <description>&lt;p&gt;Algernon is a small self-contained pure-Go web server. Prior to 1.17.8, when algernon is started with --domain (or --letsencrypt, which silently turns on --domain at engine/flags.go:372), the request handler resolves the served directory by joining the configured --dir with the value of the client-supplied Host header. The join is performed by filepath.Join with no validation, so a Host: .. header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any .lua file is present, server-side Lua execution. This vulnerability is fixed in 1.17.8.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Algernon is a small self-contained pure-Go web server. Prior to 1.17.8, when algernon is started with --domain (or --letsencrypt, which silently turns on --domain at engine/flags.go:372), the request handler resolves the served directory by joining the configured --dir with the value of the client-supplied Host header. The join is performed by filepath.Join with no validation, so a Host: .. header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any .lua file is present, server-side Lua execution. This vulnerability is fixed in 1.17.8.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-48126</guid>
    </item>
    <item>
      <title>GHSA-jc3j-x6pg-4hmv — Algernon: Host header path traversal in --domain mode reads files and runs Lua from parent dir</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-jc3j-x6pg-4hmv</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/xyproto/algernon&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When algernon is started with `--domain` (or `--letsencrypt`, which silently turns on `--domain` at `engine/flags.go:372`), the request handler resolves the served directory by joining the configured `--dir` with the value of the client-supplied `Host` header. The join is performed by `filepath.Join` with no validation, so a `Host: ..` header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any `.lua` file is present, server-side Lua execution. Algernon 1.17.7 and earlier are affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`engine/handlers.go` (function `RegisterHandlers`, around line 510):&lt;/p&gt;
&lt;p&gt;```go
allRequests := func(w http.ResponseWriter, req *http.Request) {
    ...
    servedir := servedir
    if addDomain {
        servedir = filepath.Join(servedir, utils.GetDomain(req))   // &amp;lt;— line 531
    }
    ...
    filename := utils.URL2filename(servedir, urlpath)
```&lt;/p&gt;
&lt;p&gt;`utils/web.go` (`GetDomain`):&lt;/p&gt;
&lt;p&gt;```go
func GetDomain(req *http.Request) string {
    host, _, err := net.SplitHostPort(req.Host)
    if err != nil {
        return req.Host          // &amp;lt;— Host header returned verbatim
    }
    return host
}
```&lt;/p&gt;
&lt;p&gt;`utils/files.go` (`URL2filename`) only sanitises the URL path — it never inspects `dirname`:&lt;/p&gt;
&lt;p&gt;```go
func URL2filename(dirname, urlpath string) string {
    if strings.Contains(urlpath, &amp;#34;..&amp;#34;) {
        return dirname + Pathsep         // dirname is trusted here…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/xyproto/algernon&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When algernon is started with `--domain` (or `--letsencrypt`, which silently turns on `--domain` at `engine/flags.go:372`), the request handler resolves the served directory by joining the configured `--dir` with the value of the client-supplied `Host` header. The join is performed by `filepath.Join` with no validation, so a `Host: ..` header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any `.lua` file is present, server-side Lua execution. Algernon 1.17.7 and earlier are affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`engine/handlers.go` (function `RegisterHandlers`, around line 510):&lt;/p&gt;
&lt;p&gt;```go
allRequests := func(w http.ResponseWriter, req *http.Request) {
    ...
    servedir := servedir
    if addDomain {
        servedir = filepath.Join(servedir, utils.GetDomain(req))   // &amp;lt;— line 531
    }
    ...
    filename := utils.URL2filename(servedir, urlpath)
```&lt;/p&gt;
&lt;p&gt;`utils/web.go` (`GetDomain`):&lt;/p&gt;
&lt;p&gt;```go
func GetDomain(req *http.Request) string {
    host, _, err := net.SplitHostPort(req.Host)
    if err != nil {
        return req.Host          // &amp;lt;— Host header returned verbatim
    }
    return host
}
```&lt;/p&gt;
&lt;p&gt;`utils/files.go` (`URL2filename`) only sanitises the URL path — it never inspects `dirname`:&lt;/p&gt;
&lt;p&gt;```go
func URL2filename(dirname, urlpath string) string {
    if strings.Contains(urlpath, &amp;#34;..&amp;#34;) {
        return dirname + Pathsep         // dirname is trusted here…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-jc3j-x6pg-4hmv</guid>
    </item>
  </channel>
</rss>
