Skip to main content

Rojo CVE-2026-97875

| EUVDEUVD-2026-86991 HIGH
Reliance on Reverse DNS Resolution for a Security-Critical Action (CWE-350)
2026-09-25 redhat-cnalr
8.1
CVSS 3.1 · Vendor: redhat-cnalr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Lure developer running rojo serve to malicious page
  2. Delivery
    DNS rebind browser to localhost:34872
  3. Exploit
    Send API requests bypassing origin check
  4. Execution
    Read project source and write malicious files
  5. Impact
    Invoke /api/open to launch local program

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication DNS-independent verification
Exploitation Conditions

Requires the victim to be actively running 'rojo serve' (default bind localhost, default port 34872) with the pre-patch build that performs no Host/Origin header validation and does not gate /api/open to local clients. The developer must, during that session, visit an attacker-controlled webpage in a browser on the same machine; the attacker must control DNS to perform the rebinding. Limiting factors: exploitation is bounded to machines running the dev server at the moment of the visit, requires user interaction (visiting the page) and attacker DNS infrastructure, and is neutralized by the patched version's Host/Origin validation, the --allowed-hosts / serveAllowedHosts allowlist, or binding away from network-reachable addresses.

Impact

The NVD CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N = 8.1 High) is well-supported by the description: a network-reachable attack (via a browser the victim controls) with no authentication, requiring only that the developer visit a malicious page (UI:R). The impact is understated by the 'Information Disclosure' tag - the description confirms the attacker can not only read all project source (C:H) but also write arbitrary code to disk (I:H) and launch local programs via opener::open(), which is effectively local code execution on the developer's machine. No EPSS score, no CISA KEV listing, and no public POC are present in the provided data, so there is no evidence of active or automated exploitation; absence of these signals is expected for a niche developer tool and does not lower the technical severity. The one moderating factor is that DNS rebinding requires attacker-controlled DNS infrastructure and a victim actively running 'rojo serve' during a browsing session - realistic for the target audience but not a mass-exploitable internet-facing service. This is a genuinely serious flaw for affected users (read/write/RCE with only a page visit) rather than a high-CVSS-but-low-impact issue, but its real-world blast radius is bounded by the small, developer-only install base.

Exploit ScenarioDerived

A Roblox developer runs 'rojo serve' (default localhost:34872) during a project session and, in the same browser, visits a malicious webpage. The page uses DNS rebinding to bypass the same-origin policy and reach the unauthenticated local API, then reads the entire project source, writes attacker-controlled code into the project files, and invokes /api/open to launch a local program - achieving code execution with no interaction beyond the page visit. No public exploit code is identified at time of analysis, though the technique (DNS rebinding against an unvalidated local HTTP API) is well-documented.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 25, 2026

DNS rebinding against Rojo's unauthenticated 'rojo serve' HTTP API (default bind localhost, port 34872) allows a malicious webpage to read every file in the served project, write attacker-controlled code to disk, and trigger execution of local programs through the opener::open() handler. The issue affects pre-patch builds of the rojo-rbx/rojo crate and is network-reachable and unauthenticated (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N, 8.1 High), but requires the developer to be running 'rojo serve' at the moment they visit an attacker-controlled page and requires the attacker to control DNS for the rebinding; no public exploit code was identified at time of analysis and the flaw is not in CISA KEV. Impact is high for both confidentiality and integrity (full project source disclosure and arbitrary file writes) with no availability impact; exploitation is bounded to machines actively running the dev server.

RemediationAI

Apply the upstream fix in https://github.com/rojo-rbx/rojo/pull/1270, which adds Host/Origin validation to 'rojo serve', gates the /api/open handler to loopback clients, and warns on network-reachable binds; this is an upstream fix available via PR/commit and a released patched version is not independently confirmed at time of analysis, so verify against the RustSec advisory (https://rustsec.org/advisories/RUSTSEC-2026-0279.html) and the project changelog before relying on a specific tagged release. Until patched, the highest-value compensating control is to keep the server bound to loopback only (the default) and to tunnel remote access over SSH, Tailscale, or WireGuard rather than rebinding to 0.0.0.0 or a LAN address; note that tunneling requires client-side configuration and adds latency. If a network-reachable bind is unavoidable, restrict it with a host firewall to known client IPs and configure an explicit allowlist via '--allowed-hosts' or the project's 'serveAllowedHosts' field, understanding that listing any host also enables validation for otherwise-unvalidated binds such as 0.0.0.0 and that the CLI flag replaces (does not merge with) the project setting, which can surprise operators. Additional hardening with side effects to weigh: stop 'rojo serve' whenever it is not actively needed and avoid browsing untrusted sites while it runs, since the attack requires the developer to visit a malicious page during an active session; or run the dev server inside a container/VM with the project mounted read-only where feasible, which limits file-write and local-launch impact but disrupts normal sync workflows.

Affected VersionsENISA

rojo 0 <7.7.0

Affected Packages

cargo rojo fix: 7.7.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in cargo

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Rojo is a Rust-based development tool that syncs a Roblox project tree to Roblox Studio, and its 'rojo serve' subcommand exposes a local HTTP API (default port 34872) that syncs project files and can open files/URLs via the opener crate. Because the server performed no validation of the Host or Origin headers, a browser could be induced via DNS rebinding to resolve an attacker-controlled hostname to 127.0.0.1 and then send same-origin requests to the local API, bypassing the browser's same-origin protection. CWE-350 (Reliance on Reverse DNS Resolution for a Security-Critical Action) captures the root cause: the service trusted the name used to reach it rather than enforcing an allowlist of expected Host/Origin values. The upstream fix in PR #1270 adds Host/Origin validation, gates the /api/open endpoint to loopback clients, warns when the server is bound to a network-reachable address, and introduces a configurable allowlist via the '--allowed-hosts' CLI flag and the project's 'serveAllowedHosts' field. Because the API is entirely unauthenticated (CVSS PR:N), any party able to reach the socket can read and modify project source, which makes accidental network exposure (for example binding 0.0.0.0) a separate, closely related risk highlighted by the new startup warning.

Know when Rojo gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (redhat-cnalr) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Reachable via the victim's browser (AV:N) with no auth (PR:N) but requires visiting a malicious page (UI:R); unvalidated local API yields source read (C:H) plus file write and program launch (I:H); no availability impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (redhat-cnalr).

CVSS VectorVendor: redhat-cnalr

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

DescriptionCVE.org

Rojo's "rojo serve" 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.

Executive ViewAI

Why It Matters

The Rojo development server, used by Roblox developers, contains a high-severity vulnerability that could allow an unauthenticated attacker to read all project source code and write malicious code to disk if a developer visits a compromised website while the server is running. This poses a significant risk to intellectual property and software supply chain integrity for development teams. Although no public exploit identified at time of analysis, and exploitation requires specific conditions, leadership should prioritize patching because the impact on confidentiality and integrity is high.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Low
niche developer tool for Roblox game development, small install base
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy