本文へスキップ
MameTechNews
バックエンド

LXDとMicroCloud、公開証明書を中間に置くだけでAPIの認証を突破される

## POINTS

  • 必要なのはHTTPS APIへの到達と、信頼済みクライアントの公開証明書で、そのクライアントの秘密鍵は不要だ。
  • 修正snapは10月29日公開だが段階配信中なので、refresh後に稼働中のバージョンが修正版か確認する。
  • なりすましの権限が強ければホストのrootに至る。外部公開のAPIは、更新確認が終わるまで到達元を制限する。

Canonicalは10月28日、LXDとMicroCloudの相互TLS認証を修正した。HTTPS APIへ到達できる攻撃者が、信頼済みクライアントの公開証明書を持っているだけで、そのクライアントとして認証できる。秘密鍵は要らない。Incusプロジェクトからの報告をLXDでも確認した。

サーバはクライアントが送った証明書チェーンのすべてを、既知の信頼ストアと照合していた。鍵の所有を証明するのは葉の証明書だけなのに、攻撃者は他人の公開証明書を中間証明書として挟める。MicroCloudでは、クラスタへ参加するメンバの公開証明書を途中で受け取り、そのメンバになりすます経路も説明されている。なりすまされた利用者の権限が強ければ、ホストのrootを得られる。

修正版はsnapの6/stableがLXD 6.10.1、5.21/stableが5.21.9、5.0/stableが5.0.11、4.0/stableが4.0.15、MicroCloudは3/stableが3.4.1、2/stableが2.1.5で、いずれも10月29日に公開された。更新は各チャンネルでsnap refreshする。ただしpoint releaseはcandidateからstableへ段階的に出ているため、refreshした直後の表示が修正版とは限らない。ネットワークAPIを外部へ開いているクラスタは、バージョン確認まで到達元を絞る。秘密鍵を守っているだけでは、公開証明書を持たれた時点でこの認証は足りない。