<?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>Tue, 29 Sep 2026 06:33:19 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-50158</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-50158</link>
      <description>&lt;p&gt;yutu is an AI-powered toolkit for managing and growing YouTube channels. Prior to 0.10.9, the caption-download MCP tool accepts a caller-controlled file parameter through cmd/caption/download.go and passes it to Caption.Download() in pkg/caption/caption.go, where os.Create() creates or truncates that path without using the pkg.Root confinement boundary backed by YUTU_ROOT. A principal able to invoke caption-download, including a local HTTP client when the MCP server runs with its default authentication-disabled configuration, can write downloaded caption bytes to any path writable by the yutu process outside YUTU_ROOT. This can overwrite application files, configuration, shell startup files, logs, or data and can cause persistent code execution or denial of service depending on the selected writable target. Live caption retrieval also requires usable service credentials and an accessible caption identifier. This issue is fixed in version 0.10.9.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;yutu is an AI-powered toolkit for managing and growing YouTube channels. Prior to 0.10.9, the caption-download MCP tool accepts a caller-controlled file parameter through cmd/caption/download.go and passes it to Caption.Download() in pkg/caption/caption.go, where os.Create() creates or truncates that path without using the pkg.Root confinement boundary backed by YUTU_ROOT. A principal able to invoke caption-download, including a local HTTP client when the MCP server runs with its default authentication-disabled configuration, can write downloaded caption bytes to any path writable by the yutu process outside YUTU_ROOT. This can overwrite application files, configuration, shell startup files, logs, or data and can cause persistent code execution or denial of service depending on the selected writable target. Live caption retrieval also requires usable service credentials and an accessible caption identifier. This issue is fixed in version 0.10.9.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-50158</guid>
    </item>
    <item>
      <title>GHSA-2c7f-fxww-6w6c — yutu: Arbitrary File Write via MCP `caption-download` Tool</title>
      <link>https://db.gcve.eu/vuln/ghsa-2c7f-fxww-6w6c</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/eat-pray-ai/yutu&lt;/p&gt;
&lt;p&gt;## Arbitrary File Write via MCP `caption-download` Tool&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `caption-download` MCP tool in yutu passes the caller-supplied `file` parameter directly to `os.Create()` at `pkg/caption/caption.go:272` without any path validation, canonicalization, or confinement to the `pkg.Root` boundary (`YUTU_ROOT`). A local attacker — or any process able to reach the HTTP MCP server — can write arbitrary content to any path writable by the yutu process, entirely outside the intended working directory. This is a **High** severity vulnerability (CVSS 7.7) with high integrity and availability impact.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;yutu uses `pkg.Root` (backed by Go 1.24&amp;#39;s `os.OpenRoot`) to restrict all file I/O to the `YUTU_ROOT` directory. Every other caption file-write path honours this boundary:&lt;/p&gt;
&lt;p&gt;| Method | Sink | Confined? |
|--------|------|-----------|
| `Caption.Insert()` | `pkg.Root.Open(c.File)` (`caption.go:109`) | Yes |
| `Caption.Update()` | `pkg.Root.Open(c.File)` (`caption.go:193`) | Yes |
| `Caption.Download()` | `os.Create(c.File)` (`caption.go:272`) | **No** |&lt;/p&gt;
&lt;p&gt;`Caption.Download()` is the sole outlier. The attacker-controlled `file` field flows without restriction from the MCP tool input schema to a raw `os.Create()` call:&lt;/p&gt;
&lt;p&gt;1. **Source** — `cmd/caption/download.go:32–41`: `downloadInSchema` declares `file` as a required `string` field in the MCP JSON input schema.
2. **Binding** — `cmd/caption/download.go:61–64`: `cobramcp.GenToolHandler` maps MCP input to `input.Download(writer)…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/eat-pray-ai/yutu&lt;/p&gt;
&lt;p&gt;## Arbitrary File Write via MCP `caption-download` Tool&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `caption-download` MCP tool in yutu passes the caller-supplied `file` parameter directly to `os.Create()` at `pkg/caption/caption.go:272` without any path validation, canonicalization, or confinement to the `pkg.Root` boundary (`YUTU_ROOT`). A local attacker — or any process able to reach the HTTP MCP server — can write arbitrary content to any path writable by the yutu process, entirely outside the intended working directory. This is a **High** severity vulnerability (CVSS 7.7) with high integrity and availability impact.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;yutu uses `pkg.Root` (backed by Go 1.24&amp;#39;s `os.OpenRoot`) to restrict all file I/O to the `YUTU_ROOT` directory. Every other caption file-write path honours this boundary:&lt;/p&gt;
&lt;p&gt;| Method | Sink | Confined? |
|--------|------|-----------|
| `Caption.Insert()` | `pkg.Root.Open(c.File)` (`caption.go:109`) | Yes |
| `Caption.Update()` | `pkg.Root.Open(c.File)` (`caption.go:193`) | Yes |
| `Caption.Download()` | `os.Create(c.File)` (`caption.go:272`) | **No** |&lt;/p&gt;
&lt;p&gt;`Caption.Download()` is the sole outlier. The attacker-controlled `file` field flows without restriction from the MCP tool input schema to a raw `os.Create()` call:&lt;/p&gt;
&lt;p&gt;1. **Source** — `cmd/caption/download.go:32–41`: `downloadInSchema` declares `file` as a required `string` field in the MCP JSON input schema.
2. **Binding** — `cmd/caption/download.go:61–64`: `cobramcp.GenToolHandler` maps MCP input to `input.Download(writer)…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-2c7f-fxww-6w6c</guid>
    </item>
  </channel>
</rss>
