3月下旬にバックドアが仕組まれていることが判明して以降、半月にわたってxz-utilsの話題でもちきりでしたが、今回は現在までのxzバックドア問題の振り返りとこの先の予定についてわかっている事をまとめます。
xz-utils
事の始まりは3月29日にxzに含まれるライブラリliblzmaにバックドアが仕組まれている可能性があることをAndres Freund氏がOpenWallにて報告したことに遡ります。この脆弱性についてRedHatがCVE-2024-3094として登録しました。問題が確認されているのはxz-5.6.0とxz-5.6.1です。この問題が発覚した後にこれらのバージョンは取り下げられ、現在は5.4.6が最新となっています。
CVE-2024-3094は、systemdを介したsshdの認証を乗っ取り、攻撃者がSSH経由でシステムにフルアクセスすることができるというものでした。なお、脅威度は10点中10点 Criticalとつけられました。
攻撃の詳細
攻撃の詳細について。
この攻撃自体はliblzmaにバックドアを混入させ、GCCの機能を用いてOpenSSHの関数を悪意のあるものにするというものです。通常OpenSSHはliblzmaを読み込みませんが、一部のディストリビューションにおいてはsystemdを読み込むパッチが当てられており、systemdを通じてlzmaをロードするというものになっています。
悪意のあるコードはテストファイルとしてgitに含まれていますが、これらの脆弱性を実行するために改変されたbuild-to-host.m4
はGitに含まれていません。つまり、Gitから生成されたtarball(https://git.tukaani.org/で配信されたもの)ではなく、ある人物が公開したtarballにのみ影響があります。とはいっても悪意のあるコードが含まれていることに変わりはありません。
このため、xzそのものが脆弱性を実行するわけではなく、間接的かついくつかの要因が重なった時に脅威となります。その要因となるのが以下のとおりです。
- OpenSSHにsystemdを読み込むパッチが当てられているディストリビューションを使用している
- GCCを用いてビルドされている
- GitHubで提供されたtarballを使用している
- x86_64(amd64)である
影響
このため、今回の脆弱性がターゲットとしているのはLinuxであり、macOSやWindows(WSLではない)、FreeBSDなどについては問題はないと考えられています。
また、幸いなことに、主要なディストリビューションの場合、開発版では該当のバージョンのxzがリリースされた形跡があるものの、正式(Stable)版やそれに準ずるものの場合、Homebrew以外のパッケージマネージャで、それ以前のバージョンしかまだリリースしていなかったため、いわゆる公開された本番環境に該当バージョンがインストールされた可能性は低いとも考えられます(Linuxでbrewを使っていた場合は注意が必要)。一方で、upstreamなどでパッケージマネージャやディストリビューションを設定したいた場合や、開発版のディストリビューションを使っていた場合、インストールされている可能性が高いです。これには、今月リリース予定の「Ubuntu 24.04」や「Fedora 40」が含まれます*1,*2。
一方で、Arch Linuxのように、OpenSSHにsystemdをロードするパッチが当てられておらず、影響がないと考えられているディストリビューションや、pacman系のパッケージマネージャのように5.6.1-2など修正版がリリースされたものもあり、対応や影響についてもまちまちです*3。
結局のところ、悪意のあるスクリプトの実行の有無を除いても悪意のあるコードが含まれていることには変わらないため、5.4.6や5.6.1-really5.4.5、5.6.1-2などへのダウングレード・アップグレードが必要となります。
今後
xzを手動するTukaaniは、現在リポジトリの見直しが行われています。そして、悪意のあるコードをpurgeするためにrebaseも検討されたようですが、しない方向で進んでいるようです。
そして、次期バージョンについては数日かかるという見込みとともに、5.6と明確に区別するため、5.8へジャンプする可能性を示唆しています。どのみち、リリースは先の事になりそうです。