Ubuntu Weekly Topics

Zenbleed』対するUbuntuの対応

『Zenbleed』に対するUbuntuの対応

Zen2シリーズ(=Ryzenプロセッサーの一部)に影響する、『Zenbleed』と呼ばれる脆弱性(CVE-2023-20593)が公開されました。AMDからも脆弱性情報が提供されています。

影響があるのはZen 2アーキテクチャを採用したCPUファミリーです[1]

今回見つかったものは、Spectreのときのようなサイドチャネル攻撃(つまり「新しいタイプの攻撃手法によって見つかった新しい脆弱性⁠⁠)ではなく、純粋なCPUのバグです。サイドチャネル攻撃の場合は「このような操作をすると、CPU上で扱っているデータを推定することができました。たとえば処理にかかる時間の差とか」というものだったのですが、今回のものは「こういう操作をすると、なんだかCPUがおかしな挙動をしていることがわかりました、直前まで扱っていたデータを復元可能です」というものです。攻撃手法としてはサイドチャネル攻撃のケースと似通っており、特定の処理[2]が行われたCPUから得たデータを加工することで、直前の処理で扱われていたデータを復元できます。

攻撃のPoCコードは「行われている処理をモニターする」ような振る舞いのもので、実行しておくと、別のプロセスで扱われている文字列のたぐいが流れてくる、というものです。

もしシステムがパスワードを処理しているようなコンテキストで、同じコアを利用する別の(悪意ある)処理を走らせた状態にできるような場合、その中身を盗み取ることができると考えておけばよいでしょう。この種の問題はサイドチャネル攻撃を含めると比較的良く見つかるものの、純粋なCPUのバグとして発見されることは比較的レアです。もっとも、現代のCPUのお約束に漏れず、マイクロコード(ファームウェア)が提供されれば順次アップデートによって対応が可能です。CPUを交換したりするような対応は必要ありません[3]

この問題のUbuntuでの対応は、USN-6244-1で行われています。きわめて端的には、⁠すでにマイクロコードがリリースされているCPU向けに、OSからマイクロコードを更新できる」というものです。……しかし、これだけだと「ファームウェアの更新? OSのパッケージの更新? どちらでもいいの?」という混乱が生じることが考えられるため、⁠マイクロコードの更新とはどういうことか」をごく簡単でよいので把握しておきましょう。

まず、現代的なX86互換(X86_64も含む)CPUのほとんどは「出荷後に挙動を変更するためのユニット」を備えています。マイクロコードはこのユニットに読み込まれるプログラム群で、現代的なCPUであれば、動的に(数秒程度のロード時間で)これを書き換えることができるようになっています。⁠アップデートが必要」なマイクロコードはまさにこのコードを構成するバイナリファイルで、CPUベンダーから提供されます。

マイクロコードのロードには、システム的にいくつかの方法があります。まず一つはマザーボード組み込みのファームウェア、つまりUEFI上からCPUを初期化するタイミングで注入することで、この場合はシステムに電源を投入したタイミングで処理が実行されます。UEFIに読み込みを任せる以外に、各種OS(のカーネルから)マイクロコードをロードすることもできます。この場合は、OSが稼働してから動的にロードされる形になります。このあたりで何となく見えてきたかもしれませんが、つまり、⁠マイクロコードの更新を行う必要がある」と言った場合、⁠新しいUEFIファームウェアを使う」「新しいOSを使う」の2種類の対応があるわけです。

今回UbuntuがUSN-6244-1で行っているamd64-microcodeのアップデートは後者のもので、⁠OSが稼働してからマイクロコードを更新するためのもの」です。ただし、現時点ではマイクロコードがEPYC向けにしか提供されておらず、これら以外のプロセッサーについてはそのままです。つまり、現時点では民生用Zen 2プロセッサの多くは、攻撃に対して脆弱な状態となっています。AMDはこれらの問題について、民生用プロセッサについては順次AGESAファームウェア(Ryzenプロセッサー向けの統合ファームウェアセット=各社が提供するUEFIのベースになる基本セット)の更新で対応していくことを表明しており、年内には対処が完了するだろう、という予測ができます。

一方、この問題への対処としてはマイクロコードの更新以外に、いくつかの緩和要素があります。

まず有力な方法が、MSR[4]経由でこの脆弱性の原因になる高速化機能をオフにし、性能劣化と引き換えに安全を確保する方法ですwrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9))を実行する、という方法がこれを意味します[5]⁠。この処理を能動的に実行せずとも、現在Linux Kernelの開発枝で『必要そうなCPU上で走っている場合は、暗黙でこの処理を行う』実装が進められています。現時点でUbuntuにこの修正が入ってくるかどうかは未定なものの、現時点であきらかに危険なシナリオが仮定できるような場合以外、まずはこの対応の行方を確認することになりそうです。

またこの脆弱性は、⁠同じコアで走っていたデータ」を読み取ることしかできません。つまりコアを越えてデータを読み取るようなことはできないので、プロセスごとにコアアフィニティを設定し、⁠重要なデータを処理しそうなコア」「信用できない処理を実行するコア」に分けてしまう、という手がありえます[6]。ただし、そもそも「あまり信用できないコードが(バイナリレベルで)外部から取り込まれて実行される」というシナリオはクラウド的な仮想化シナリオでしか仮定できず[7]民生用プロセッサでこの脆弱性が悪用されるような展開は考えにくい、というのが現状です。

……ということで、⁠民生用プロセッサを用いて、ユーザーが任意の仮想マシンイメージを実行できるような環境を運用しているような場合」[8]を除けば、今のところは悪用シナリオがありません。が、これはあくまで「今のところ」なので、なんらかの形で「ブラウザ経由でZenbleed攻撃を送り込んでなにか重要なデータを盗み取る」といった攻撃が出てくるかもしれません(今のところはまだ無いはずです⁠⁠。

よって、現状では「影響のある世代のEPYCを利用している場合は、今すぐパッケージを更新してシステムを再起動し、新しいマイクロコードがロードされる状態にする⁠⁠、民生用CPUを利用している場合は「まず、自動的にChicken bitによる対処を行うカーネルのリリースを待ち、出てくるようであればカーネルを更新する。AMDからAGESAの更新版がリリースされたら、利用しているPCやマザーボードのファームウェアを更新する」という対応となります[9]

その他のニュース

  • Ubuntu Summitのロゴができるまで
  • どのベンダーかは不明なものの、半導体ベンダーとの協働(⁠⁠Silicon vendor collaboration」というカテゴリーで「Work on concept」と記載されている)が示唆されています。このあたりの痕跡からすると「riscv64向けのデスクトップ」という仮説が出てくるものの、現状ではまだわかりません。

今週のセキュリティアップデート

usn-6234-1:Linux kernel (Xilinx ZynqMP)のセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007536.html
  • Ubuntu 20.04 LTS用のアップデータがリリースされています。CVE-2023-35788を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため、通常はそのままアップデートの適用を行えば対応できます。

usn-6235-1:Linux kernel (OEM)のセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007537.html
  • Ubuntu 22.04 LTS用のアップデータがリリースされています。CVE-2022-4842, CVE-2023-0459, CVE-2023-0597, CVE-2023-1073, CVE-2023-2124, CVE-2023-2176, CVE-2023-2430, CVE-2023-35788を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため、通常はそのままアップデートの適用を行えば対応できます。

usn-6078-2:libwebpのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007538.html
  • Ubuntu 16.04 ESM用のアップデータがリリースされています。CVE-2023-1999を修正します。
  • usn-6078-1の16.04向けパッケージです。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6183-2:Bindのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007539.html
  • usn-6183-1のESM向けパッケージです。CVE-2023-2828を修正します。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6233-1:YAJLのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007540.html
  • Ubuntu 18.04 ESM・16.04 ESM・14.04 ESM用のアップデータがリリースされています。CVE-2017-16516, CVE-2022-24795, CVE-2023-33460を修正します。
  • 悪意ある入力を行うことで、DoSが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6236-1:ConnManのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007541.html
  • Ubuntu 23.04・22.04 LTS・20.04 LTS・18.04 ESM・16.04 ESM用のアップデータがリリースされています。CVE-2021-26675, CVE-2021-26676, CVE-2021-33833, CVE-2022-23096, CVE-2022-23097, CVE-2022-23098, CVE-2022-32292, CVE-2022-32293, CVE-2023-28488を修正します。
  • 悪意ある入力を行うことで、メモリ破壊を伴うクラッシュを誘発することが可能でした。任意のコードの実行・DoSが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6237-1, usn-6237-2:curlのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007542.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007544.html
  • Ubuntu 23.04・22.10・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2023-28321, CVE-2023-28322, CVE-2023-32001を修正します。
  • 証明書の検証において、偽装が可能な場合がありました。また、本来秘匿されるべき情報へのアクセス・DoS・本来期待されないファイルの上書きが生じる問題がありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
  • 備考:22.04 LTS向けのアップデータに問題があったため、usn-6237-2がリリースされています。

usn-6238-1:Sambaのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007543.html
  • Ubuntu 23.04・22.10・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2022-2127, CVE-2023-3347, CVE-2023-34966, CVE-2023-34967, CVE-2023-34968を修正します。
  • 悪意ある入力を行うことで、DoSが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6239-1:ECDSA Utilのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007545.html
  • Ubuntu 22.04 LTS・20.04 LTS・18.04 ESM・16.04 ESM用のアップデータがリリースされています。CVE-2022-24884を修正します。
  • 署名検証が適切に行われず、認証の迂回が可能な場合がありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6232-1:wkhtmltopdfのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007546.html
  • Ubuntu 20.04 LTS・18.04 ESM・16.04 ESM・14.04 ESM用のアップデータがリリースされています。CVE-2020-21365を修正します。
  • 悪意ある加工を施したファイルを処理させることで、本来秘匿されるべき情報へのアクセスが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6241-1:OpenStackのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007547.html
  • Ubuntu 23.04・22.04 LTS用のアップデータがリリースされています。
  • 削除されたボリュームの読み取りが可能な場合がありました。
  • 対処方法:アップデータを適用の上、必要な設定変更を行ってください。
  • 備考: Ubuntu的な詳細情報関連情報も参照してください。

usn-6240-1:FRRのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007548.html
  • Ubuntu 23.04用のアップデータがリリースされています。CVE-2023-3748を修正します。
  • 悪意ある入力を行うことで、DoSが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6242-1:OpenSSHのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007549.html
  • Ubuntu 23.04・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2023-38408を修正します。
  • エージェント転送を行っている状況において、悪意ある入力を行うことで不当なライブラリのロード・任意のコードの実行・ファイルの上書きが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6243-1:Graphite-Webのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2023-July/007550.html
  • Ubuntu 22.04 LTS・20.04 LTS・18.04 ESM・16.04 ESM・14.04 ESM用のアップデータがリリースされています。CVE-2017-18638, CVE-2022-4728, CVE-2022-4729, CVE-2022-4730を修正します。
  • 悪意ある入力を行うことで、サーバーサイドリクエストフォージェリとXSS・本来秘匿されるべき情報へのアクセスが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

おすすめ記事

記事・ニュース一覧