CVE-2026-55973対策:Azure Linux 3.0のUnboundを1.25.2-1へ更新する手順

Azure Linux 3.0でUnboundを利用しており、dns-error-reporting: yes が有効になっている場合、CVE-2026-55973への対応はunbound-1.25.2-1.azl3以上への更新を基準にしてください。

MSRCのFirstFixed情報には1.25.1-1と読める記載がありますが、同じMSRCのVEXにある修復情報は1.25.2-1.azl3を示しています。さらに、Unbound開発元は1.25.1までを影響対象、1.25.2を修正版として公表しています。したがって、実務上は1.25.1-1を修正版として扱わず、1.25.2-1.azl3以上へ更新するのが安全です。(Microsoft Security Response Center)

この記事では、CVE-2026-55973の影響条件、Azure Linux 3.0での確認方法、Unboundの更新手順、すぐに更新できない場合の緩和策まで具体的に解説します。

目次

CVE-2026-55973の結論:Unbound 1.25.2-1.azl3以上へ更新する

CVE-2026-55973は、UnboundのDNS Error Reporting処理における入力値の検証不備です。細工されたEDNS Report-Channelオプションを処理すると、スタック上のバッファーが上書きされ、Unboundデーモンが異常終了する可能性があります。

公表されている重要事項は次のとおりです。

項目内容
対象製品Azure Linux 3.0上のUnbound
脆弱性スタックバッファーオーバーフロー
発生条件dns-error-reporting: yesが有効
上流版の影響範囲Unbound 1.23.0以上、1.25.2未満
修正版Unbound 1.25.2
Azure Linux向け更新基準unbound-1.25.2-1.azl3以上
CVSS7.5 High
CWECWE-20:不適切な入力検証
主な影響Unboundの異常終了によるDNSサービス妨害

CVSSベクターはCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hです。ネットワーク経由で攻撃でき、認証や利用者操作を必要とせず、可用性への影響が大きいと評価されています。公表評価上、機密性と完全性への影響は設定されていません。(Microsoft Security Response Center)

CVE-2026-55973で何が起きるのか

Unboundには、DNSの名前解決エラーを権威DNSサーバー側へ通知するDNS Error Reporting機能があります。この機能は、設定ファイルで次のように指定した場合に有効になります。

server:
    dns-error-reporting: yes

dns-error-reportingの既定値はnoです。そのため、設定を明示的に有効化していない環境では、この脆弱性の攻撃経路は通常有効になっていません。(NLnet Labs)

問題は、UnboundがEDNS Report-Channelオプションを含む応答を受け取ったときの長さ検証にあります。

攻撃者が委任されたDNSゾーンを制御している場合、細工したReport-Channelオプションを権威DNSサーバーから返すことができます。脆弱なUnboundは、エージェントドメイン名の実際の長さではなくEDNSオプション全体の長さを使って報告用の_er.クエリーを組み立てるため、スタック変数のバッファーを上書きする可能性があります。

開発元の説明では、攻撃者が制御する委任ゾーンからの1回の上流応答だけでも、Unboundデーモンを終了させられる可能性があります。DNSキャッシュサーバーが停止すれば、そのサーバーを利用するシステムで名前解決が失敗し、Webアクセス、API通信、認証処理などが連鎖的に停止するおそれがあります。(GitHub)

MSRCのFirstFixed「1.25.1-1」をそのまま修正版と判断しない

CVE-2026-55973では、Microsoftの公開情報内にバージョン表記の不整合があります。

確認先掲載されている情報
MSRCの製品ツリー/FirstFixed相当情報azl3 unbound 1.25.1-1を固定済み製品として掲載
同じMSRC VEXの修復情報0:1.25.2-1.azl3:Security Update
Unbound開発元1.23.0から1.25.1までが影響対象
CVEレコードの解決策1.25.2から修正済み
Azure Linux 3.0公式リポジトリunbound-1.25.2-1.azl3を公開

MSRCのVEXでは、製品ツリー上の固定済みバージョンと、修復情報に記載されたパッケージバージョンが一致していません。(Microsoft Security Response Center)

一方、Unbound開発元とCVEレコードは、1.25.1を影響対象に含め、1.25.2で修正したと明示しています。Azure Linux 3.0の公式パッケージリポジトリにも、x86_64版とaarch64版の1.25.2-1.azl3が公開されています。(GitHub)

このため、Azure Linux 3.0の運用担当者は、次のように判断してください。

  • 1.25.1-1.azl3を修正済みと判断しない
  • 1.25.2-1.azl3以上を更新後の最低基準にする
  • 独自ビルドやバックポート版は、ビルド元の修正内容も確認する
  • 脆弱性管理ツールの判定だけでなく、実際のRPMバージョンを確認する

Azure Linux 3.0が影響を受けるか確認する

Azure Linuxのバージョンを確認する

最初に、対象サーバーがAzure Linux 3.0であることを確認します。

cat /etc/os-release

出力されたVERSION_IDが3.0系になっているか確認してください。

複数台を管理している場合は、資産管理ツールや構成管理ツールからOS情報を収集し、Azure Linux 3.0だけを抽出すると効率的です。

インストール済みのUnboundパッケージを確認する

RPMパッケージのバージョンを確認します。

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' unbound

出力例は次のとおりです。

unbound-1.25.1-1.azl3.x86_64

おおよその判断基準は次のようになります。

確認結果判断
1.23.0以上、1.25.2未満上流の影響範囲に該当
1.25.1-1.azl3修正前として扱い、更新が必要
1.25.2-1.azl3以上上流修正を含むバージョン
1.23.0未満本CVEの公表範囲外。ただし、別の脆弱性を含む可能性があるため更新を検討
package unbound is not installedホストのRPM版は対象外。コンテナや独自ビルドを別途確認

rpm -qで未導入と表示されても、ソースコードからインストールしたUnboundが存在する場合があります。念のため、次のコマンドでも確認します。

command -v unbound
unbound -V

ホスト上に存在しなくても、DockerやKubernetesのコンテナ内でUnboundを動かしているケースがあります。ホストOSとアプリケーションコンテナは別々に確認してください。

dns-error-reportingの有効値を確認する

Azure Linux 3.0のUnboundパッケージでは、標準の設定ファイルとして/etc/unbound/unbound.confが使用されます。(GitHub)

設定ファイルを単純に検索するだけでなく、unbound-checkconfで読み込み後の有効値を確認します。

sudo unbound-checkconf -o dns-error-reporting /etc/unbound/unbound.conf

結果が次のように表示された場合は、脆弱な処理が有効です。

yes

次のように表示されれば、DNS Error Reportingは無効です。

no

unbound-checkconf -oは、インクルードされた設定ファイルを含めて解析した後の値を確認できます。メイン設定ファイルだけをgrepするより、実際の動作設定を正確に判定できます。(NLnet Labs)

設定箇所を探したい場合は、次のコマンドも利用できます。

sudo grep -RniE '^[[:space:]]*dns-error-reporting:' /etc/unbound

Unboundの起動時に別の設定ファイルを指定している可能性もあります。実行中のコマンドラインを確認してください。

ps -eo pid,args | grep '[u]nbound'

-c /path/to/unbound.confが表示された場合は、そのファイルに対してunbound-checkconfを実行します。

sudo unbound-checkconf -o dns-error-reporting /path/to/unbound.conf

Unboundサービスが稼働中か確認する

systemctl is-active unbound
systemctl status unbound --no-pager

確認結果から、対応優先度を次のように決められます。

バージョンと設定稼働状態対応優先度
1.23.0~1.25.1、設定がyes稼働中最優先で更新
1.23.0~1.25.1、設定がno稼働中現時点の攻撃経路は無効だが、早めに更新
1.23.0~1.25.1停止中再起動する前に更新
1.25.2以上稼働中修正版。プロセス再起動済みか確認
RPM未導入-コンテナ、独自バイナリ、別ホストを確認

dns-error-reporting: noであっても、脆弱なコードを含むパッケージを残してよいという意味ではありません。設定変更や構成管理の再適用によって、将来yesへ戻る可能性があるためです。

Azure Linux 3.0でUnboundを更新する手順

Azure Linux 3.0では、パッケージ管理にTiny DNFのtdnfを使用します。(Microsoft Learn)

更新前に設定をバックアップする

本番環境では、保守時間帯を確保したうえで設定ファイルをバックアップします。

sudo cp -a /etc/unbound \
  "/var/tmp/unbound-backup-$(date +%Y%m%d-%H%M%S)"

続いて、現在の設定に構文エラーがないことを確認します。

sudo unbound-checkconf /etc/unbound/unbound.conf

更新前の時点でエラーが出る場合は、先に設定内容を確認してください。構文エラーを残したままサービスを再起動すると、Unboundが起動しなくなる可能性があります。

tdnfでUnboundを更新する

次のコマンドを実行します。

sudo tdnf update unbound -y

更新完了後、パッケージバージョンを再確認します。

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' unbound

少なくとも、次のバージョン以上になっていることを確認してください。

unbound-1.25.2-1.azl3.x86_64

aarch64環境では、末尾が次のようになります。

unbound-1.25.2-1.azl3.aarch64

公式リポジトリには両アーキテクチャ向けの1.25.2-1.azl3パッケージが掲載されています。(Microsoft Packages)

更新しても1.25.1のままの場合は、次の点を確認します。

  • 独自リポジトリや社内ミラーで古いパッケージが固定されていないか
  • リポジトリの同期が完了しているか
  • バージョンロックや除外設定が指定されていないか
  • プロキシやファイアウォールによって更新先への通信が妨げられていないか

必要に応じてメタデータを削除してから再実行します。

sudo tdnf clean all
sudo tdnf update unbound -y

設定ファイルの差分を確認する

RPM更新時に、新しい設定ファイルが.rpmnewとして作成されたり、既存ファイルが.rpmsaveへ退避されたりすることがあります。

sudo find /etc/unbound -type f \
  \( -name '*.rpmnew' -o -name '*.rpmsave' \) -print

ファイルが見つかった場合は、既存設定との差分を確認してください。.rpmnewをそのまま上書きすると、アクセス制御、転送先、待受アドレス、DNSSEC関連設定などが失われる可能性があります。

構文確認後にUnboundを再起動する

sudo unbound-checkconf /etc/unbound/unbound.conf
sudo systemctl restart unbound

RPMを更新しただけでは、起動中のUnboundプロセスが更新前の実行コードを使い続ける可能性があります。パッケージの更新後は、サービスの再起動まで実施してください。

再起動後に稼働状態を確認します。

systemctl is-active unbound
systemctl status unbound --no-pager

activeにならない場合は、ログを確認します。

sudo journalctl -u unbound --since "-10 minutes" --no-pager

設定変更が原因で起動できない場合は、脆弱な旧パッケージへ戻すのではなく、バックアップした設定と比較して構文や互換性を修正します。

名前解決が正常か確認する

Unboundがローカルホストの53番ポートで待ち受けている場合は、次のように確認できます。

dig @127.0.0.1 example.com A +time=2 +tries=1

status: NOERRORが表示され、回答が返ることを確認します。

Unboundが別のIPアドレスやポートで待ち受けている場合は、環境に合わせて変更してください。実運用では、社内ドメイン、外部ドメイン、DNSSECを利用するドメイン、転送先を使うドメインなども確認すると確実です。

すぐに更新できない場合の一時的な緩和策

保守時間をすぐに確保できない場合は、dns-error-reportingを無効化することで、CVE-2026-55973の攻撃経路を一時的に閉じられます。

まず、設定箇所を確認します。

sudo grep -RniE '^[[:space:]]*dns-error-reporting:' /etc/unbound

設定がyesになっているファイルを編集し、次のように変更します。

server:
    dns-error-reporting: no

設定自体が存在しない場合、既定値はnoであるため追加する必要はありません。(NLnet Labs)

変更後は構文確認とサービス再起動を実施します。

sudo unbound-checkconf /etc/unbound/unbound.conf
sudo systemctl restart unbound

最後に、有効値がnoになったことを確認します。

sudo unbound-checkconf -o dns-error-reporting /etc/unbound/unbound.conf

この対応は、DNS Error Reporting機能を停止する一時的な緩和策です。脆弱なパッケージそのものが修正されるわけではないため、保守時間を確保でき次第、1.25.2-1.azl3以上へ更新してください。

AKSのAzure Linuxノードで使っている場合

Azure Kubernetes ServiceのAzure Linuxノードでは、ノードへログインして個別にRPMを更新する運用は避けたほうが安全です。ノードが再作成されたときに手動変更が失われるため、ノードイメージの更新を基本にします。

特定のノードプールを最新のノードイメージへ更新する例は次のとおりです。

az aks nodepool upgrade \
  --resource-group <resource-group> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --node-image-only

更新後は、ノードイメージのバージョンを確認します。

az aks nodepool show \
  --resource-group <resource-group> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --query nodeImageVersion \
  -o tsv

AKSでは、ノードイメージのみを更新する操作が公式に用意されています。更新時にはノードの入れ替えが発生するため、Pod Disruption Budget、余剰ノード容量、業務時間帯への影響も事前に確認してください。(Microsoft Learn)

Unboundを自社のコンテナイメージ内へインストールしている場合、ノードイメージの更新だけでは修正されません。その場合は、コンテナイメージのベースパッケージを更新し、イメージを再ビルドしてDeploymentやDaemonSetを再展開する必要があります。

対応時に失敗しやすいポイント

失敗例問題点正しい対応
FirstFixedの1.25.1-1だけを信頼する上流では1.25.1が影響対象1.25.2-1.azl3以上を基準にする
メイン設定ファイルだけを検索するinclude先のyesを見落とすunbound-checkconf -oで有効値を確認
RPM更新後に再起動しない稼働中プロセスが旧コードを使い続ける構文確認後にサービスを再起動
rpm -qだけで対象外と判断する独自ビルドやコンテナを見落とすバイナリとコンテナも確認
.rpmnewを無条件で上書きする既存のDNS設定が失われる差分を確認して必要部分だけ反映
AKSノードを手動更新するノード再作成時に変更が失われるノードイメージを更新
緩和設定だけで対応を終了する脆弱なパッケージが残る最終的に修正版へ更新

CVE-2026-55973対応チェックリスト

対応完了の判断には、次の項目を確認してください。

  • Azure Linux 3.0の対象ホストを特定した
  • RPM、独自バイナリ、コンテナ内のUnboundを確認した
  • Unboundのバージョンを確認した
  • dns-error-reportingの有効値を確認した
  • unbound-1.25.2-1.azl3以上へ更新した
  • 設定ファイルの構文を確認した
  • Unboundサービスを再起動した
  • サービス状態とログを確認した
  • 実際の名前解決テストを実施した
  • 更新日時、更新後バージョン、対象ホストを記録した

CVE-2026-55973への対応では、MSRCのFirstFixed欄だけで修正版を判断しないことが重要です。まず次の2つのコマンドで、導入版と設定状態を確認してください。

rpm -q unbound
sudo unbound-checkconf -o dns-error-reporting /etc/unbound/unbound.conf

1.23.0から1.25.1までのUnboundを利用している場合は、設定がnoであっても、unbound-1.25.2-1.azl3以上へ更新します。更新後は必ずサービスを再起動し、ログと名前解決の両方を確認してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次