<?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://db.gcve.eu</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>Fri, 30 Oct 2026 08:42:42 +0000</lastBuildDate>
    <item>
      <title>GHSA-v753-g4cw-jm48 — Echo has Open Redirect via Control-Character Prefix Defeating sanitizeURI</title>
      <link>https://db.gcve.eu/vuln/ghsa-v753-g4cw-jm48</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/labstack/echo/v5, Go: github.com/labstack/echo/v4&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;Echo&amp;#39;s dedicated open-redirect guard, `sanitizeURI`, decides whether a redirect target is a local path by inspecting exactly two byte positions: `uri[0]` and `uri[1]`. If the value begins with a control character such as a tab or a newline, followed by a separator pair, the guard does not fire and the value is written to the `Location` header unchanged.&lt;/p&gt;
&lt;p&gt;Browsers remove tab and newline characters from URLs before parsing them, and treat a backslash as a forward slash for HTTP and HTTPS URLs. A `Location` value of ``/\t/attacker.example`` is therefore resolved by the browser as an absolute URL on `attacker.example`. Confirmed end to end in a headless browser.&lt;/p&gt;
&lt;p&gt;## Technical background&lt;/p&gt;
&lt;p&gt;### The guard&lt;/p&gt;
&lt;p&gt;`middleware/slash.go:144` (duplicated verbatim at `echo.go:958`):&lt;/p&gt;
&lt;p&gt;```go
func sanitizeURI(uri string) string {
	// double slash `\\`, `//` or even `\/` is absolute uri for browsers and by redirecting request to that uri
	// we are vulnerable to open redirect attack. so replace all slashes from the beginning with single slash
	if len(uri) &amp;gt; 1 &amp;amp;&amp;amp; (uri[0] == &amp;#39;\\&amp;#39; || uri[0] == &amp;#39;/&amp;#39;) &amp;amp;&amp;amp; (uri[1] == &amp;#39;\\&amp;#39; || uri[1] == &amp;#39;/&amp;#39;) {
		uri = &amp;#34;/&amp;#34; + strings.TrimLeft(uri, `/\`)
	}
	return uri
}
```&lt;/p&gt;
&lt;p&gt;The condition is anchored at absolute offsets 0 and 1. It cannot see a separator that has been shifted by one byte.&lt;/p&gt;
&lt;p&gt;### Data flow&lt;/p&gt;
&lt;p&gt;1. `RemoveTrailingSlash` (`middleware/slash.go:112-140`) reads `url.Path`, which `net/http` has already percent-decoded, strips the trailing slash, and appends the…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/labstack/echo/v5, Go: github.com/labstack/echo/v4&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;Echo&amp;#39;s dedicated open-redirect guard, `sanitizeURI`, decides whether a redirect target is a local path by inspecting exactly two byte positions: `uri[0]` and `uri[1]`. If the value begins with a control character such as a tab or a newline, followed by a separator pair, the guard does not fire and the value is written to the `Location` header unchanged.&lt;/p&gt;
&lt;p&gt;Browsers remove tab and newline characters from URLs before parsing them, and treat a backslash as a forward slash for HTTP and HTTPS URLs. A `Location` value of ``/\t/attacker.example`` is therefore resolved by the browser as an absolute URL on `attacker.example`. Confirmed end to end in a headless browser.&lt;/p&gt;
&lt;p&gt;## Technical background&lt;/p&gt;
&lt;p&gt;### The guard&lt;/p&gt;
&lt;p&gt;`middleware/slash.go:144` (duplicated verbatim at `echo.go:958`):&lt;/p&gt;
&lt;p&gt;```go
func sanitizeURI(uri string) string {
	// double slash `\\`, `//` or even `\/` is absolute uri for browsers and by redirecting request to that uri
	// we are vulnerable to open redirect attack. so replace all slashes from the beginning with single slash
	if len(uri) &amp;gt; 1 &amp;amp;&amp;amp; (uri[0] == &amp;#39;\\&amp;#39; || uri[0] == &amp;#39;/&amp;#39;) &amp;amp;&amp;amp; (uri[1] == &amp;#39;\\&amp;#39; || uri[1] == &amp;#39;/&amp;#39;) {
		uri = &amp;#34;/&amp;#34; + strings.TrimLeft(uri, `/\`)
	}
	return uri
}
```&lt;/p&gt;
&lt;p&gt;The condition is anchored at absolute offsets 0 and 1. It cannot see a separator that has been shifted by one byte.&lt;/p&gt;
&lt;p&gt;### Data flow&lt;/p&gt;
&lt;p&gt;1. `RemoveTrailingSlash` (`middleware/slash.go:112-140`) reads `url.Path`, which `net/http` has already percent-decoded, strips the trailing slash, and appends the…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-v753-g4cw-jm48</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-118656</title>
      <link>https://db.gcve.eu/vuln/ubuntu-cve-2026-118656</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:20.04:LTS: golang-github-labstack-echo.v2, Ubuntu:20.04:LTS: golang-github-labstack-echo.v3, Ubuntu:22.04:LTS: golang-github-labstack-echo, Ubuntu:22.04:LTS: golang-github-labstack-echo.v2, Ubuntu:22.04:LTS: golang-github-labstack-echo.v3, Ubuntu:24.04:LTS: golang-github-labstack-echo, Ubuntu:26.10: golang-github-labstack-echo, Ubuntu:26.04:LTS: golang-github-labstack-echo&lt;/p&gt;
&lt;p&gt;Echo is a Go web framework. Prior to 4.16.0 and 5.4.0, sanitizeURI checks only the first two bytes of a redirect target before deciding whether it begins with an absolute-path separator pair. When AddTrailingSlash or RemoveTrailingSlash is configured with a redirect status, a slash, TAB, separator path form can evade the guard, be emitted in the Location header, and be normalized by a browser into an attacker-controlled host. This issue is fixed in 4.16.0 and 5.4.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:20.04:LTS: golang-github-labstack-echo.v2, Ubuntu:20.04:LTS: golang-github-labstack-echo.v3, Ubuntu:22.04:LTS: golang-github-labstack-echo, Ubuntu:22.04:LTS: golang-github-labstack-echo.v2, Ubuntu:22.04:LTS: golang-github-labstack-echo.v3, Ubuntu:24.04:LTS: golang-github-labstack-echo, Ubuntu:26.10: golang-github-labstack-echo, Ubuntu:26.04:LTS: golang-github-labstack-echo&lt;/p&gt;
&lt;p&gt;Echo is a Go web framework. Prior to 4.16.0 and 5.4.0, sanitizeURI checks only the first two bytes of a redirect target before deciding whether it begins with an absolute-path separator pair. When AddTrailingSlash or RemoveTrailingSlash is configured with a redirect status, a slash, TAB, separator path form can evade the guard, be emitted in the Location header, and be normalized by a browser into an attacker-controlled host. This issue is fixed in 4.16.0 and 5.4.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ubuntu-cve-2026-118656</guid>
    </item>
  </channel>
</rss>
