Actively exploited Security news

Attackers exploit a critical Xen Orchestra flaw to take over XCP-ng virtualization

On 10 November 2026 Vates published security advisory VSA-2026-062 for a critical flaw in Xen Orchestra, the web management console for XCP-ng. An unauthenticated attacker can make REST API requests as the owner of a valid login token, typically an administrator, and from there run code on managed XCP-ng hosts as root. Vates says a threat actor is already exploiting it. Fixed xo-server 5.213.1 and 5.211.2 shipped the same day.

Kyberkit editorial team · · event date · reading time 4 minutes · For admins and analysts

Actively exploited: Xen Orchestra

Key points

  • The bug sits in how the Xen Orchestra REST API parses the authenticationToken cookie. A crafted value becomes an empty object, the token check fails to reject it, and the lookup returns the first valid token in the database – so the attacker acts as that token's owner.
  • According to Vates, a compromised Xen Orchestra lets an attacker run arbitrary code on managed pools and take over XCP-ng hosts as root.
  • Vates confirms active exploitation. Look for a VM named pivot2 and for /etc/ld.so.preload, /.ustar5, /.ustar6 and zz-ustar cron jobs on hosts.
  • Fix: xo-server 5.213.1 (latest) and 5.211.2 (stable). No CVE or CVSS score has been assigned yet.

What happened

Vates, the French company behind the XCP-ng virtualization platform and its web console Xen Orchestra, published security advisory VSA-2026-062 on 10 November 2026, rated critical. The flaw lets an attacker bypass authentication and act with administrator rights. Vates says it is actively exploited by a threat actor operating from 91.211.251[.]112 (port 8001) and over Tor. It was discovered by Filip Magic and Christoffer Olsen of TDC NET Security. The fix (PR #10748) was merged the same day.

Technical details

The flaw is in how xo-server authenticates REST API requests:

How VSA-2026-062 bypasses authentication1. REST API request with a crafted authenticationToken cookie; 2. The cookie parser turns the value into an empty object instead of a string; 3. The token provider doesn't check the type and runs an unfiltered lookup; 4. The database returns the first stored token – if unexpired, the request passes as its owner; 5. The attacker pulls further reusable login tokens via the REST API; 6. With admin rights they can run code on XCP-ng hosts as root1REST API request with a craftedauthenticationToken cookie2The cookie parser turns the valueinto an empty object instead ofa string3The token provider doesn't check thetype and runs an unfiltered lookup4The database returns the first storedtoken – if unexpired, the requestpasses as its owner5The attacker pulls further reusablelogin tokens via the REST API6With admin rights they can run codeon XCP-ng hosts as root
How the flaw works, per the Vates advisory (10 Nov 2026)
  • Component: xo-server, REST API authentication (authenticationToken cookie).
  • Bug class: missing input type validation leading to authentication bypass. An empty object behaves like a query with no conditions against the token collection.
  • Preconditions: network access to the Xen Orchestra web interface and at least one unexpired login token (normally created when an admin signs in). No password required.
  • Impact: per Vates, admin rights in Xen Orchestra, leading to arbitrary code execution on managed pools and full takeover of an XCP-ng host as root. Configuration exfiltration and credential harvesting (backup, S3, proxy, root) can't be ruled out.

PR #10748 rejects token IDs that aren't non-empty strings and builds the database query only from validated fields. The PR says the bug was introduced by an earlier commit; Vates doesn't say when.

Who is affected

  • Xen Orchestra Appliance (XOA) and Xen Orchestra built from sources with xo-server older than 5.213.1 (latest channel) or 5.211.2 (stable channel).
  • Internet-facing deployments are most at risk, but the attack works from any network that can reach the interface.

The advisory also lists Xen Orchestra 6.10.0 and 6.9.1 as fixed. According to the changelog, however, those releases (29 Oct and 5 Oct 2026) shipped xo-server 5.213.0 and 5.211.1 – so rely on the xo-server version number.

How to tell if you've been compromised

Indicators from the Vates advisory (IP defanged):

91.211.251[.]112                 attacker infrastructure (port 8001), plus a Tor onion address (port 3333)
pivot2                           name of a VM created by the attacker
/etc/ld.so.preload               suspicious file on the XCP-ng host
/.ustar5  /.ustar6               attacker files in the host's root directory
/etc/cron.d/zz-ustar  /etc/cron.d/zz-ustar2   attacker cron jobs

Checks Vates recommends on XCP-ng hosts:

xe vm-list params=name-label,platform | grep -B1 'hvm_serial: file'
zgrep -- '-serial file:' /var/log/xensource.log*
ls -la /etc/ld.so.preload /.ustar* /etc/cron.d/zz-ustar*

In traffic to Xen Orchestra (tcpdump, Wireshark, reverse proxy logs), look for an authenticationToken cookie with the value j:{} or j:%7B%7D. Successful exploitation leaves no entry in the Xen Orchestra log for unauthenticated access. Vates stresses that the absence of these indicators doesn't prove you weren't compromised – other actors may work differently. Our IOC extractor pulls indicators out of logs and runs entirely in your browser.

What to do

  1. Update Xen Orchestra to xo-server 5.213.1 (latest) or 5.211.2 (stable) – via the updater on the matching channel in XOA, or from the current master branch if you build from sources.
  2. Take the interface off the internet. Xen Orchestra belongs on a dedicated management network, ideally reachable only over VPN.
  3. Block inbound and outbound traffic to 91.211.251[.]112 and traffic to Tor.
  4. Until you can patch, block requests with an authenticationToken=j:{} / j:%7B%7D cookie at your WAF or reverse proxy. Vates warns that regex rules can be bypassed with other encodings – treat this as a stopgap only.
  5. After patching, revoke existing login tokens and check your hosts against the indicators.
  6. If in doubt, rotate every Vates VMS password and secret – proxies, backups, S3, host root and user accounts – and report the incident to your national CERT.

Timeline

Timeline of VSA-2026-062 in Xen Orchestra5 Oct 2026: Xen Orchestra 6.9.1 (xo-server 5.211.1) – still vulnerable; 29 Oct 2026: Xen Orchestra 6.10.0 (xo-server 5.213.0) – still vulnerable; 10 Nov 2026: Fix merged (PR #10748), xo-server 5.213.1 and 5.211.2; 10 Nov 2026: Vates publishes VSA-2026-062 and confirms active exploitation5 Oct 2026Xen Orchestra 6.9.1(xo-server 5.211.1) – stillvulnerable29 Oct 2026Xen Orchestra 6.10.0(xo-server 5.213.0) – stillvulnerable10 Nov 2026Fix merged (PR #10748),xo-server 5.213.1 and 5.211.210 Nov 2026Vates publishes VSA-2026-062and confirms activeexploitation
Key dates (Vates, GitHub)

FAQ

Am I exposed if Xen Orchestra isn't reachable from the internet?

The software is still vulnerable, but the attacker needs network access to it. Vates recommends running Xen Orchestra only on a dedicated management network. Patch anyway – one compromised machine on the same network is enough.

Are Xen Orchestra 6.10.0 and 6.9.1 safe?

Go by the xo-server version. The advisory lists Xen Orchestra 6.10.0 and 6.9.1 as fixed, but according to the changelog those October releases shipped xo-server 5.213.0 and 5.211.1. The fix is in xo-server 5.213.1 and 5.211.2 – check the version in Xen Orchestra (Settings → About, or the updates section in XOA).

Why is there nothing in my logs?

Vates says successful exploitation leaves no log entry for unauthenticated access, because the request looks authenticated. That's why you need to inspect network traffic and look for traces on the XCP-ng hosts.

Does this affect the Xen hypervisor or XCP-ng itself?

The flaw is only in the Xen Orchestra management application. XCP-ng hosts are still at risk because Xen Orchestra manages them with full privileges, which is why Vates lists host-side indicators too.

Sources

  1. Vates – VSA-2026-062: Empty-object login token (10 Nov 2026)
  2. GitHub vatesfr/xen-orchestra – PR #10748 fix(xo-server): validate authentication token IDs
  3. GitHub vatesfr/xen-orchestra – CHANGELOG (xo-server versions per release)

Spotted a mistake? Let us know and we will correct it openly.