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. 認証されていない攻撃者が 細工した証明書チェーンで 信頼済みの任意のクライアントとして認証され クラスタと仮想マシンをすべて操作できる 出典: cve.org CVE-2026-112816(CNA: Canonical)
| ← +----------------------------------+ | [1] CA | ← [0] +----------------------------------+ | [2] CA ... | ← +----------------------------------+ 中間 の証明書 さらに上の中間 秘密鍵を持っていると証明するのはこれだけ に署名した CA。検証の手がかり 任意。送る側が好きに並べられる RFC 8446: 送り手自身の証明書は必ず先頭。後ろは先頭を検証するための補助 CertificateVerify の署名で確かめられるのは 0 の秘密鍵だけ 1 以降は、誰の証明書でもクライアントが自由に入れられる RFC 8446 Section 4.4.2 "The sender's certificate MUST come in the first CertificateEntry in the list."
be requested // during the handshake, but does not require that the client send any // certificates. RequestClientCert // PeerCertificates are the parsed certificates sent by the peer, in the // order in which they were sent. The first element is the leaf certificate // that the connection is verified against. PeerCertificates []*x509.Certificate は受け取ったリストそのまま 「検証に使ったのは先頭(leaf)」と明記されている PeerCertificates Go 1.21.6 src/crypto/tls/common.go:264-273, 324-327(最新版も同じ記述)
api.StatusErrorf(http.StatusBadRequest, "Client sent too many credentials") } 弾くのは「信頼済みの証明書が2 枚以上一致したとき」 攻撃者の証明書 0 は信頼一覧に無いので、一致は被害者の 1 枚だけ このチェックは「誰として扱うか迷う」ケースへの対策であって、なりすまし対策ではない
は root で動いている。特権コンテナを作ってホストのディスクをつなぐ、などの手順でホストの root まで届きうる クラスタなら全メンバが対象 Depending on the privilege of the victim user, the attacker may gain root access to the host machine. 出典: Canonical の告知(discourse.ubuntu.com 90557)