本文へ移動
情シスのミカタ
ニュース約6分で読めます

consul-k8sに認可のすり抜け CVSS 9.9 1.9系と2.0系は2.1.0へ

HashiCorpは2026年10月26日、consul-k8s(KubernetesでConsulを動かすツール)の脆弱性、CVE-2026-110720を公表しました。別の名前空間に同じ名前のサービスアカウントを作ると、Consulの部品の権限を得られるおそれがあります。修正版は2.1.0と1.8.18で、1.9系と2.0系にはありません。同じ日に出たConsul本体の4件と合わせ、更新の順番を整理します。

公開 情シスのミカタ編集部AIにより執筆編集部が確認:
文字
consul-k8sに認可のすり抜け CVSS 9.9 1.9系と2.0系は2.1.0へ

この記事のまとめ

  • consul-k8sで、ACLの自動管理(global.acls.manageSystemACLs)を有効にした環境では、部品を見分ける規則がサービスアカウントの名前しか見ていませんでした。別の名前空間でサービスアカウントとトークンを作れる人が、ConsulのAPIに届けば、部品の権限を得られるおそれがあります。
  • 対象は0.42.0から2.0.4までです。修正版は2.1.0と1.8.18で、1.9系と2.0系には修正の入った版がありません。2.1.0はConsul 2.1系と組み合わせる版なので、本体も上げる更新になります。
  • 同じ10月26日に、Consul本体の脆弱性4件(証明書と秘密鍵の取り出し、Envoyの設定の差し込みなど)も公表され、Consul 2.1.0とEnterpriseの1.21.19で直っています。
こんな方に#30代#40代#50代実務

1つのKubernetesのクラスタを名前空間で分け、複数のチームで使っている。そこでConsulを動かしているなら、consul-k8sの版を今週のうちに確認しておきたいところです。

HashiCorpは2026年10月26日(米国時間)、consul-k8sの脆弱性CVE-2026-110720を、勧告HCSEC-2026-50で公表しました。別の名前空間でサービスアカウントを作れる人が、Consulの部品になりすまして、その権限を得られるおそれがあります。CVSSv3.1の基本値は9.9です。

HashiCorpの勧告HCSEC-2026-50の画面(英語)。consul-k8sの名前空間をまたぐ認可のすり抜けの件で、対象はconsul-k8s 0.42.0から2.0.4、修正版は1.8.18と2.1.0、公表は2026年10月26日。ACLの自動管理を有効にすると、consul-k8sは部品がConsulのトークンを得るための認証とバインディングルールを作る。そのルールがConsulの名前空間に限られておらず、別の名前空間でサービスアカウントを作ってトークンを取れる攻撃者が、ConsulのAPIに届けば部品として認証され、その権限を得られるおそれがある。global.acls.manageSystemACLs=trueの環境が対象で、無効なら影響はない。対策は2.1.0か1.8.18への更新
HashiCorpの勧告HCSEC-2026-50。対象は0.42.0〜2.0.4、修正版は1.8.18と2.1.0出典: HashiCorp「HCSEC-2026-50」(引用)

部品を見分ける規則が、名前空間を見ていなかった

Helmの設定でglobal.acls.manageSystemACLsをtrueにすると、consul-k8sはConsulのACLを自動で管理します。KubernetesのサービスアカウントでConsulにログインする認証方式を作り、どのサービスアカウントにどのロールを渡すかを、バインディングルールで決める仕組みです。

このルールが、サービスアカウントの名前しか見ていませんでした。

consul-k8sの変更履歴によると、Consulを入れた名前空間の外にあっても、同じ名前のサービスアカウントならログインでき、部品のロールを受け取れたといいます。勧告が挙げる条件は2つです。別の名前空間でサービスアカウントを作り、そのトークンを取れるKubernetesの権限。それに、ConsulのAPIへ届く経路です。

CVSSのベクトルでも、必要な権限は「低」、影響の範囲は「変わる」とされています。一部の名前空間で動ける程度の権限から、Consulの部品の権限へ広がる、という評価でしょう。勧告に、悪用の記載はありません。

ACLの自動管理を使っていなければ対象外

対象はconsul-k8sの0.42.0から2.0.4までで、manageSystemACLsを有効にした環境です。Helmのリファレンスでは、この値の初期値はfalseになっています。

影響が大きいのは、名前空間ごとに別のチームや顧客、CIのジョブへ権限を渡しているクラスタです。開発チームが自分の名前空間でサービスアカウントを自由に作れる運用なら、条件の1つめはもう満たしています。

クラスタの管理者しかサービスアカウントを作れない運用なら、すぐ悪用される場面は限られます。ただ、管理者のアカウントやCIのトークンが奪われれば同じことが起きるので、更新を先送りする理由にはなりにくいでしょう。

修正版は2つの系列だけ、1.9系と2.0系は2.1.0へ

修正版は、10月23日に出た2.1.0と、10月19日に出た1.8.18です。consul-k8sはHelmのチャートと同じ版番号で配られていて、HashiCorpのHelmのリポジトリにも、consulのチャートの2.1.0と1.8.18が載っています。

使っているconsul-k8s 組み合わせるConsul 修正の入った版
1.8系 1.21系(EnterpriseはLTS) 1.8.18
1.9系 1.22系 なし。2.1.0へ上げる
2.0系 2.0系 なし。2.1.0へ上げる
2.1系 2.1系 2.1.0

1.9系と2.0系には、修正の入った版がありません。HashiCorpの互換表と変更履歴では、consul-k8sの2.1系はConsul 2.1系と組み合わせる版です。consul-k8sだけでなく、Consul本体も2.1系に上げる更新になります。

同じ日に、Consul本体にも4件

HashiCorpは同じ10月26日に、Consul本体の勧告も4件出しています。修正版はCommunity Editionの2.1.0と、Enterpriseの2.1.0・1.21.19です。

勧告 中身 CVSS
HCSEC-2026-46 エージェントがキャッシュしたサービスメッシュの証明書と秘密鍵を、有効なACLトークンなしで取り出せる 7.5
HCSEC-2026-47 service:writeだけを持つ利用者が、mesh:writeなしでEnvoyの設定を差し込める 8.8
HCSEC-2026-48 HTTP APIに大きな要求を送り、エージェントのメモリを使い切らせる。トークンは要らない 7.5
HCSEC-2026-49 同じノードにある別のサービスのヘルスチェックを書き換えられる 6.4

CVSSの値は、GitHubのアドバイザリーのデータベースに載ったものです。46と47、49の3件は、ACLを有効にした環境が対象とされています。Community Editionの1.21系と1.22系、2.0系には、本体の修正の入った版が出ていません。

46には更新までの回避策も書かれています。エージェントのHTTP APIへの経路を絞るか、http_config.block_endpointsで証明書を返すエンドポイントを止める方法です。止めてよいのは、このエンドポイントを使うものが、そのエージェントに無いときだけです。Connectネイティブのアプリと、consul-templateの設定がこれにあたります。

上げる前に読んでおく注意

更新の作業そのものについても、consul-k8sの変更履歴は注意を書いています。

まず、Consulを入れた名前空間の外で部品を動かしている場合です。直したルールは名前空間も条件にするため、そうした部品はConsulの名前空間へ移す必要があります。

次に、一度有効にしてから無効にした部品のルールです。sync-catalogやメッシュゲートウェイなどがこれにあたり、古いルールは更新しても書き換わりません。残ったルールは手で消すか、その部品を一度有効にしてから更新します。

Consul 2.1.0の変更履歴にも、互換性のない変更が並んでいます。たとえば透過プロキシの通信の振り分けは、iptablesからnftablesに変わりました。カーネルの対応が要り、iptablesへ自動で戻る仕組みも無いとされています。透過プロキシを使っているなら、検証環境で先に通しておくと安心です。

版の確認から更新までの手順

  1. Helmで入れたConsulの版を、helm list -Aで確認します。CHARTの列にconsul-2.0.4のように出ます。
  2. helm get values <リリース名> -n <名前空間> --allを流し、global.aclsのmanageSystemACLsがtrueかどうかを見ます。trueなら対象です。
  3. Consulの名前空間にある部品のサービスアカウントの名前を控え、同じ名前がほかの名前空間に無いかをkubectl get serviceaccounts -Aで探します。
  4. 名前空間ごとに、サービスアカウントを作れる人とジョブ、トークンを取れる人とジョブを洗い出します。kubectl auth can-i create serviceaccounts -n <名前空間> --as <利用者>と、--subresource=tokenを付けた同じコマンドで確かめられます。勧告にconsul-k8sの回避策は書かれていないので、更新までの間は、この2つの権限を要る人に絞ります。
  5. 系列に合わせて上げます。1.8系は1.8.18へ、1.9系と2.0系はConsul 2.1.0と組み合わせて2.1.0へ上げます。EnterpriseのConsul 1.21系なら、本体は1.21.19です。
  6. 更新のあとで、consul acl binding-rule list -method <prefix>-k8s-component-auth-methodでルールを一覧にします。セレクターにConsulの名前空間の条件が入ったことと、無効にした部品の古いルールが残っていないことを確認します。古いルールはconsul acl binding-rule delete -id <id>で消します。
GitHubのconsul-k8s v2.1.0のリリースの画面(英語)。2.1.0(2026年10月23日)で、Consul K8s 2.1.xはConsul 2.1.xとConsul Dataplane 2.1.xと組み合わせるとの注記。SECURITYの欄に、更新の前に無効にしていた部品のバインディングルールは書き換わらないので、consul acl binding-rule listで一覧を出してconsul acl binding-rule deleteで消すか、部品を一度有効にして更新するよう書かれている。BUG FIXESの欄に、部品のACLのバインディングルールがサービスアカウントの名前だけで一致していたため、どの名前空間の同じ名前のサービスアカウントでもログインして部品のロールを受け取れた問題を直し、ルールにConsulのリリースの名前空間の条件を加え、既存のルールも更新時に書き換える、名前空間の外で動かしている部品は移す必要がある、とある
consul-k8s 2.1.0の変更履歴。ルールに名前空間の条件を加え、古いルールは手で消す出典: HashiCorp「consul-k8s v2.1.0」(GitHub)(引用)

名前空間で分けたクラスタは、名前空間を壁として運用しがちです。今回の件は、その壁の外にあるConsulのルールが、名前空間を見ていなかったという話でした。チームに名前空間を渡すとき、サービスアカウントとトークンをどこまで作らせるかも、この機会に決め直しておきたいところです。

Consulの秘密情報の保存先を、Vaultにしている会社もあるでしょう。Vaultの10月の修正版は、VaultとOpenBaoのRaftのスナップショットの脆弱性の記事にまとめています。

よくある質問

QACLの自動管理を有効にしていません。何もしなくてよいですか。

Aconsul-k8sの件は、global.acls.manageSystemACLsがtrueの環境だけが対象です。ただ、Consul本体の4件のうちHTTP APIでメモリを使い切らせる件は、トークンなしで起こせます。本体の版は確認しておいてください。

Q1.9系を使っています。1.8.18に下げればよいですか。

A勧告が挙げる修正版は2.1.0と1.8.18で、1.8系はConsul 1.21系と組み合わせる系列です。1.9系から1.8系へ下げる手順は案内されていないので、Consul本体と合わせて2.1系へ上げる計画を立ててください。

QKubernetesを使わず、仮想マシンでConsulを動かしています。

Aconsul-k8sは使っていないので、CVE-2026-110720は当たりません。Consul本体の4件は当たるので、Community Editionなら2.1.0、Enterpriseなら2.1.0か1.21.19に上げます。

出典・参考

編集部が確認:。確認した監修者は、この下に載せています。

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします