CVE-2026-112816とは - LXDのHTTPS APIで信頼済みのクライアントになりすませる認証回避と、MicroCloud・Incusの対応

CVE-2026-112816とは - LXDのHTTPS APIで信頼済みのクライアントになりすませる認証回避と、MicroCloud・Incusの対応

作成日:
読了:約16分
更新日:

CVE-2026-112816は、Canonicalのコンテナと仮想マシンの管理ツールLXDで見つかった、認証回避の脆弱性です。LXDのHTTPS APIは、クライアント証明書(相互TLS)で相手を認証します。ところが、クライアントが送ってきた証明書のチェーンを最後まで信頼ストアと照らし合わせていたため、攻撃者は「信頼されている誰かの公開証明書」をチェーンに混ぜるだけで、その人として認証されてしまいました。

CanonicalはCVSS 4.0で10.0(Critical)と評価しています。2026年10月28日(UTC)にCanonicalが告知を出し、LXDのsnapの各チャンネルとMicroCloudに修正版が出ています。同じ処理を持つIncus(LXDから分かれたプロジェクト)でも見つかり、Incusの開発者が報告しました。この記事では、CVEの記録、Canonicalの告知、Incusのアドバイザリと修正コミットをもとに、仕組みと対応を整理します(2026年11月2日時点)。

まず結論 - やること

  • LXDのHTTPS API(core.https_address)をネットワークに公開しているサーバーと、LXDのクラスタ、MicroCloudが対象です。既定のLXDはローカルのUnixソケットだけで待ち受けるので、HTTPS APIを公開していなければ外からは届きません。
  • sudo snap refresh lxd(MicroCloudはsudo snap refresh microcloud)で修正版に更新します。修正版は、LXDが6.10.1、5.21.9、5.0.11、4.0.15、MicroCloudが3.4.1、2.1.5です。
  • すぐに更新できない場合は、HTTPS APIのポートに届く相手をファイアウォールで信頼できるホストだけに絞ります。HTTPS APIを使っていないなら、公開をやめます。
  • Incusは7.6.0で直っています。DebianのLXDのパッケージ(lxd 5.0.2系)は、11月2日時点で修正前です。

CVE-2026-112816の概要

項目内容
対象Canonical LXD のHTTPS API(相互TLSの認証)
種類証明書の検証の不備(CWE-295)
入り口LXDのHTTPS APIへのTLS接続
CVSS4.0で10.0(Canonical)。Incusのアドバイザリは3.1で10.0
攻撃に必要なものHTTPS APIに届くこと、なりすます相手の公開証明書
修正版(snap)6.10.1、5.21.9、5.0.11、4.0.15
関連MicroCloud(3.4.1、2.1.5で修正)、Incus(7.6.0で修正、GHSA-xg75-xf37-cph9)
報告者Stéphane Graber氏(Incusの開発者。CVEの記録のreporter)
CISAのKEV2026年11月2日時点で掲載なし

CISAがCVEの記録に付けた評価(SSVC)は、10月30日時点で「悪用: なし」「自動化できる: はい」「技術的な影響: 全面的」です。NVDの状態は「Deferred」で、NVD自身の評価は付いていません。

タイムライン

日付はUTCです。

日付できごと
2026-10-13Incusのメンテナーが修正コミット(incusd: Only trust the key-proven client certificate)を作成
2026-10-28CanonicalがLXDとMicroCloudの重大な脆弱性を告知
2026-10-29LXDのsnapの各チャンネルとMicroCloudに修正版。Incusがアドバイザリを公開
2026-10-30Incus 7.6.0を公開。CanonicalがCVE-2026-112816を公開

Canonicalの告知によると、この脆弱性はIncusのプロジェクトから知らされ、LXDにも当てはまることを確かめたものです。

脆弱性の仕組み

LXDの認証は相互TLS

LXDをネットワーク越しに操作するときは、クライアントが自分のTLS証明書をサーバーに示し、サーバーはその証明書が信頼ストア(trust store)に登録されているかで相手を見分けます(TLSのハンドシェイク)。クライアントの証明書は、トークンを使ってあらかじめ信頼ストアに登録しておきます。

TLSのハンドシェイクで「この証明書の持ち主である」と証明できるのは、チェーンの先頭の証明書(リーフ証明書)だけです。クライアントはリーフ証明書の秘密鍵で署名して、鍵を持っていることを示します。チェーンの2つ目以降の証明書は、ただの付け足しで、送り主が中身を自由に選べます(公開鍵暗号とデジタル署名)。

チェーンの全部を信頼ストアと照合していた

Incusのアドバイザリと修正コミットによると、問題は次の2つが重なったことです。

  1. HTTPS APIは、クライアント証明書を「求める」だけで、TLSの層では検証していませんでした(Goのtls.RequestClientCert)。これ自体は、自己署名の証明書を信頼ストアで認証するLXDの仕組みでは不自然ではありません。
  2. そのうえで、認証の処理が、送られてきたチェーンの証明書を1つずつ信頼ストアと照らし合わせ、どれか1つでも一致すれば認証していました。

その結果、攻撃者は自分で作った証明書を先頭に置き、その後ろに「信頼されている誰かの公開証明書」を付け足すだけで、その人として認証されました。公開証明書は秘密ではないので、手に入れる方法はいくつもあります。

修正は、信頼ストアと照らし合わせる証明書を、鍵の所有が証明されたチェーンの先頭の1枚だけにするものです。Incusの修正コミットは、HTTPS APIの認証、証明書の更新や削除、クラスタの内部通信、仮想マシンのエージェントとの通信、認可のスクリプトレットの6か所を同じように直しています。

Canonicalの告知も、要約として「相互TLSの認証が、クライアントが送ったすべての証明書を信頼ストアと比べていた。鍵の所有を証明するのはリーフ証明書だけである」と説明しています。

危険度

立場説明
Canonical(LXD)HTTPS APIに届く攻撃者が、公開証明書を持っている信頼済みのTLSクライアントとして認証できる。なりすました相手の権限によっては、ホストのroot権限を得られる
Canonical(MicroCloud)クラスタに参加するメンバーの公開証明書を途中で手に入れ、そのメンバーとして認証できる
Incus信頼済みのクライアント、メトリクス用、サーバーの証明書のどれにでもなりすませる。サーバーの証明書はTLSのハンドシェイクのたびに返されるので、事前のアクセスなしに手に入る。クラスタでは別のメンバーとして内部通信に入れ、認可を丸ごと回避できる

LXDに管理者として登録されたクライアントは、コンテナや仮想マシンの作成、ホストのディレクトリのマウントなど、ホストに対して強い操作ができます。そのため、なりすましはホストの乗っ取りにつながりえます。

Incusは、サーバー自身の証明書でもなりすませると説明しています。この経路がLXDでも同じように成り立つかは、Canonicalの告知に書かれておらず、筆者は確認できていません(未確認)。いずれにしても、HTTPS APIに届く相手が信頼済みの誰かの公開証明書を手に入れられれば成り立つので、HTTPS APIを公開しているなら危険度は高いと考えます。

11月2日時点で、実際の攻撃や公開されたPoCの報告は見当たりません。

影響を受ける版と修正版

LXD(snap)

チャンネル修正版
6/stable6.10.1
5.21/stable5.21.9
5.0/stable5.0.11
4.0/stable4.0.15

CVEの記録は、影響を受ける版を「4.0.14、5.0.10、5.21.8、6.9から、それぞれの修正版の前まで」と書いています。一方で、Incusは「最初のリリースからこうなっていた」と説明し、DebianはLXDの5.0.2のパッケージを影響ありと判定しています。このため、上の範囲より古い版も同じ問題を持っていると考えて、修正版へ更新するのが安全です(推測)。Canonicalの告知も、すべての利用者に更新を求めています。

Canonicalの告知の時点で、修正版は各チャンネルのcandidateからstableへ順番に配信している途中でした。

MicroCloud

チャンネル修正版
3/stable3.4.1
2/stable2.1.5

Incus

Incusのアドバイザリ(GHSA-xg75-xf37-cph9)は、7.6.0より前を影響あり、7.6.0を修正版としています。IncusのLTS版やディストリビューションのIncusのパッケージがいつ直るかは、確認できていません(未確認)。

ディストリビューションのパッケージ

ディストリビューション状況(11月2日時点)
Debian 12(bookworm)lxd 5.0.2-5+deb12u6は修正前(vulnerable)
Debian 13(trixie)lxd 5.0.2+git20231211.1364ae4-9+deb13u7は修正前(vulnerable)
Ubuntu 22.04以降公式アーカイブにLXDのパッケージがない(Not in release)。LXDはsnapで入れる
Ubuntu 20.04、18.04、16.04影響なし(Not affected)

Ubuntuでは、LXDはsnapで配布されています。対応はsnapの更新です。

構成ごとの対応方法

snapで入れたLXD

LXDを更新して版を確かめる
sudo snap refresh lxd
snap list lxd

snap list lxdのVersionが、使っているチャンネルの修正版以上になっていれば完了です。snapは自動で更新されますが、更新を保留(snap refresh --hold)している場合や、配信がまだ届いていない場合があるので、手動で確かめます。

LXDのクラスタ

クラスタでは、すべてのメンバーでsnap refresh lxdを実行し、同じ修正版にそろえます。Incusのアドバイザリによると、クラスタのメンバーどうしの内部通信もこの問題の対象なので、一部のメンバーだけ更新した状態で止めないようにします。

MicroCloud

MicroCloudを更新する
sudo snap refresh microcloud
sudo snap refresh lxd

Canonicalの告知が求めているのは、MicroCloudとLXDの両方の更新です。

Incus

Incusは7.6.0以上に更新します。ディストリビューションなどのパッケージで入れている場合は、配布元の更新を確かめます。

DebianのLXDのパッケージ

11月2日時点で修正版がありません。DebianのLXDのパッケージをHTTPS APIの公開に使っている場合は、次の緩和策で届く相手を絞ります。

すぐに更新できないときの緩和策

Incusのアドバイザリは、緩和策として「HTTPS APIに届く相手を信頼できるホストに限る」ことを挙げ、設定で避ける方法はないとしています。

HTTPS APIを公開しているか確かめる

HTTPS APIの待ち受けを確かめる
lxc config get core.https_address
# クラスタの場合
lxc config get cluster.https_address
# 実際に待ち受けているポート(既定は8443)
sudo ss -ltnp | grep lxd

core.https_addressが空なら、LXDはネットワークで待ち受けていません。LXDのドキュメントにあるとおり、既定ではローカルのUnixソケットだけで使えます。

使っていないなら公開をやめる

HTTPS APIの公開をやめる
lxc config unset core.https_address

LXDのWeb UIはHTTPS APIを使うので、公開をやめるとUIも使えなくなります。クラスタではメンバーどうしの通信にcluster.https_addressが必要なので、外さずにファイアウォールで絞ります。

ファイアウォールで届く相手を絞る

HTTPS APIのポート(既定は8443)に、管理に使うホストとクラスタのメンバーだけが届くようにします。ufwの例です(アドレスはドキュメント用の例)。

ufwで8443番を管理用のホストだけに開ける
sudo ufw allow from 192.0.2.10 to any port 8443 proto tcp
sudo ufw deny 8443/tcp

ufwはルールを上から順に評価するので、許可のルールを先に入れます。クラウドのセキュリティグループで絞れる場合は、そちらでも同じ効果があります。

影響を受けるか・更新できたかを確かめる

確認に使うコマンド
# LXDの版とチャンネル
snap list lxd
snap info lxd | grep -E '^(tracking|installed)'
 
# HTTPS APIの公開
lxc config get core.https_address
 
# 信頼ストアに登録されている証明書(覚えのないものがないか)
lxc config trust list

更新の前にHTTPS APIを公開していた場合は、信頼ストアに覚えのない証明書が増えていないか、インスタンスや設定に覚えのない変更がないかも確かめます。この脆弱性では、なりすました相手として信頼ストアのエントリーを更新したり消したりもできたと、Incusのアドバイザリは説明しています。

まとめ

  • CVE-2026-112816は、LXDのHTTPS APIで、クライアントが送った証明書のチェーンの全部を信頼ストアと照合していたため、信頼済みの誰かの公開証明書を付け足すだけでその人として認証できた脆弱性です。CVSS 4.0で10.0です。
  • 鍵の所有を証明できるのはチェーンの先頭の証明書だけです。修正は、その1枚だけを照合するものです。
  • LXDは6.10.1、5.21.9、5.0.11、4.0.15、MicroCloudは3.4.1、2.1.5、Incusは7.6.0で直っています。DebianのLXDのパッケージは修正前です。
  • HTTPS APIを公開していないLXDは、外からは届きません。公開している場合は、更新までの間、届く相手をファイアウォールで絞ります。

コンテナの仕組みそのものは、Linuxコンテナの名前空間とcgroupsの記事で扱っています。TLSのクライアント証明書の検証の不備としては、Node.jsのTLSのホスト名検証の回避も記事にしています。

参考資料

CVE-2026-98432とは - LinuxカーネルのIPv4 TCPの解放後使用と、ディストリビューションごとの対応

CVE-2026-98432とは - LinuxカーネルのIPv4 TCPの解放後使用と、ディストリビューションごとの対応

約19分

Linuxカーネルで、IPv4のTCP接続を受け付ける処理に見つかった解放後使用(use-after-free)の脆弱性CVE-2026-98432を、カーネルのCVEチームの記録と修正コミット、各ディストリビューションの情報で整理します。仕組み、CVSS 9.8の理由、Anthropicが主張するMPTCPサーバーでのリモートroot、Debian・RHEL・AlmaLinux・Ubuntu・Amazon Linux・SUSEの修正状況、再起動できないときのnftablesによる緩和策と確認コマンドまで。

HTTP2Shell(CVE-2026-111497)とは - Brotli の展開処理の範囲外書き込みと、Node.js・Python・サーバー構成別の対応

HTTP2Shell(CVE-2026-111497)とは - Brotli の展開処理の範囲外書き込みと、Node.js・Python・サーバー構成別の対応

約32分

Google の圧縮ライブラリ Brotli の C 実装で見つかった範囲外書き込みの脆弱性 CVE-2026-111497(通称 HTTP2Shell / Node2Shell)を、CVE レコード・Node.js・各ベンダーのアドバイザリで整理します。仕組みと危険度、攻撃データが入り込む経路、Node.js・Express・Next.js・Bun・Python・nginx・Apache・curl・.NET・OS パッケージごとの対応方法、すぐに更新できないときの緩和策と確認コマンドまで。

PHP2Shell(CVE-2026-109618 / CVE-2026-109619)とは - PHP 本体の認証不要 RCE 2件の危険度と構成別の対応

PHP2Shell(CVE-2026-109618 / CVE-2026-109619)とは - PHP 本体の認証不要 RCE 2件の危険度と構成別の対応

約30分

2026年10月21日に PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 で修正された、認証不要のリモートコード実行(RCE)につながる2件の脆弱性 CVE-2026-109618 と CVE-2026-109619(通称 PHP2Shell)を、php.net・GitHub のアドバイザリ・NVD・各ディストリビューションの情報で整理します。それぞれの仕組みと危険度、mod_php・PHP-FPM・Docker・OS パッケージ・レンタルサーバーなど構成ごとの対応方法、すぐに更新できないときの緩和策まで。

楽天市場のおすすめPR / 楽天アフィリエイト