<?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>Thu, 01 Oct 2026 18:37:43 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-97875</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-97875</link>
      <description>&lt;p&gt;Rojo&amp;#39;s &amp;#34;rojo serve&amp;#34; HTTP API (default port 34872) has no Host/Origin header validation, making it vulnerable to DNS rebinding. A malicious webpage can read all project source, write malicious code to files on disk, and launch local programs via opener::open() with no user interaction beyond visiting the page.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Rojo&amp;#39;s &amp;#34;rojo serve&amp;#34; HTTP API (default port 34872) has no Host/Origin header validation, making it vulnerable to DNS rebinding. A malicious webpage can read all project source, write malicious code to files on disk, and launch local programs via opener::open() with no user interaction beyond visiting the page.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-97875</guid>
    </item>
    <item>
      <title>RUSTSEC-2026-0279 — Rojo development server vulnerable to DNS rebinding, allowing unauthenticated read/write access and local program execu…</title>
      <link>https://db.gcve.eu/vuln/rustsec-2026-0279</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: rojo&lt;/p&gt;
&lt;p&gt;Rojo&amp;#39;s `rojo serve` command starts an unauthenticated HTTP API on localhost
(default port 34872) with no `Host` or `Origin` header validation. While
direct cross-origin `fetch()` requests from a malicious website are blocked by
the browser&amp;#39;s default CORS policy, an attacker can use DNS rebinding to bypass
this restriction entirely.
 
The serve API is a two-way sync protocol. Once a DNS rebind is established, a
malicious webpage visited by a developer running `rojo serve` can, without any
further user interaction:
 
- **Read the full project source:** `GET /api/rojo` returns the session ID,
  root instance ID, and project name. `GET /api/read/{id}` enumerates the
  complete instance tree including all script contents, exposing proprietary
  game logic, configuration, and any secrets embedded in source files.
- **Write to project files on disk:** `POST /api/write` pushes changes back
  through Rojo&amp;#39;s sync pipeline, allowing an attacker to inject arbitrary Lua
  into the developer&amp;#39;s project. If the developer then publishes their game,
  the injected code executes on every player&amp;#39;s client — a supply chain attack
  vector.
- **Launch local programs:** `POST /api/open/{id}` calls the OS-level
  `opener::open()` function, which invokes the platform&amp;#39;s default handler
  (`open` on macOS, `xdg-open` on Linux, `start` on Windows) for the target
  file.
Exploitation requires only that `rojo serve` is running (the standard Roblox
development workflow) and that the developer visits an att…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: rojo&lt;/p&gt;
&lt;p&gt;Rojo&amp;#39;s `rojo serve` command starts an unauthenticated HTTP API on localhost
(default port 34872) with no `Host` or `Origin` header validation. While
direct cross-origin `fetch()` requests from a malicious website are blocked by
the browser&amp;#39;s default CORS policy, an attacker can use DNS rebinding to bypass
this restriction entirely.
 
The serve API is a two-way sync protocol. Once a DNS rebind is established, a
malicious webpage visited by a developer running `rojo serve` can, without any
further user interaction:
 
- **Read the full project source:** `GET /api/rojo` returns the session ID,
  root instance ID, and project name. `GET /api/read/{id}` enumerates the
  complete instance tree including all script contents, exposing proprietary
  game logic, configuration, and any secrets embedded in source files.
- **Write to project files on disk:** `POST /api/write` pushes changes back
  through Rojo&amp;#39;s sync pipeline, allowing an attacker to inject arbitrary Lua
  into the developer&amp;#39;s project. If the developer then publishes their game,
  the injected code executes on every player&amp;#39;s client — a supply chain attack
  vector.
- **Launch local programs:** `POST /api/open/{id}` calls the OS-level
  `opener::open()` function, which invokes the platform&amp;#39;s default handler
  (`open` on macOS, `xdg-open` on Linux, `start` on Windows) for the target
  file.
Exploitation requires only that `rojo serve` is running (the standard Roblox
development workflow) and that the developer visits an att…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/rustsec-2026-0279</guid>
    </item>
  </channel>
</rss>
