- Debian sid のインストールで、liblzma(xz パッケージの一部)に関連するいくつかの異常な症状(SSH ログイン時の CPU 使用率上昇、valgrind エラー)が観測された
- 問題の原因として、xz の上流リポジトリと tarball がバックドアに感染していたことが判明した。バックドアの一部は配布された tarball にのみ存在する
- tarball に含まれるスクリプトは configure の最後で実行され、特定の条件が満たされると
$builddir/src/liblzma/Makefile を変更して悪意あるコードを挿入する。
リポジトリ内のバックドア
- バックドアの主要部分は、リポジトリ内の
tests/files ディレクトリに暗号化された形で存在する。
- これらのファイルは 5.6.0 バージョンのテストでは使用されておらず、5.6.1 バージョンではバックドアによる valgrind エラーとクラッシュを修正する試みがあった。
影響を受けるシステム
- バックドアスクリプトは configure 後に最初に呼び出され、特定の条件(例: x86-64 Linux システム、gcc および GNU リンカの使用、Debian または RPM パッケージのビルド中)でのみビルドプロセスを改変する。
OpenSSH サーバーへの影響
- バックドアが導入された liblzma を使用すると、SSH 経由のログインが遅くなる。
- OpenSSH は直接的には liblzma を使用しないが、Debian を含むいくつかのディストリビューションでは systemd 通知をサポートするために OpenSSH にパッチを適用しており、libsystemd は lzma に依存している。
注入されたコードの分析
- セキュリティ研究者やリバースエンジニアリングの専門家ではない観察者の視点から分析している。
- バックドアは ifunc resolver を通じて実行をフックし、sshd の初期化中にシンボルを解決して RSA_public_decrypt シンボルを自身のコードに変更する。
sshd への影響
- RSA_public_decrypt@....plt がバックドアコードを指すように変更され、公開鍵ログイン中にバックドアコードが呼び出される。
- これにより、認証の回避やリモートコード実行が可能になると推定される。
バグ報告
- 上流リポジトリの関与が疑われたため、バグは報告されなかった。
- Red Hat はこの問題に CVE-2024-3094 を割り当てた。
脆弱なインストールの検出
- システムの ssh バイナリが脆弱かどうかを検出するスクリプトが提供されている。
8件のコメント
xzバックドアについて私が知っていることのすべて
このバックドアを発見した Andres Freund が書いた記事です。
非常に計画的に動いていたのが驚きですね;; 経緯がドラマみたいです。
八つ裂きにしても安いくらいです
なぜですか?
オープンソースに意図的にバックドアを仕込んだ行為ですからね……その過程で、ひそかに世論工作のようなことまでしていましたし。
以前にも Linux カーネルに悪意を持って脆弱性を入れた事例がありましたが、やりきれない気持ちになります。
ああ、ようやくそのニュアンスを理解できた気がします。ありがとうございます。
Hacker Newsの意見
関連リンク:
要約:
xz-javaプロジェクトにSECURITY.mdファイルを追加していた。そこには、セキュリティ脆弱性を見つけても公開せず、非公開で報告するよう求める指針が含まれている。別の見方をすれば、作成者が自分のエクスプロイトを調整し、標的を利用する時間を稼ぐ意図だったとも解釈できる。5.6.1+really5.4.5-1というバージョンになっており、これは実際には旧バージョンの 5.4 を新しいバージョンとして再パッケージしたもの。curl | shスクリプトではなくそこに隠すだろう。今回の事件の配布担当者は以前から配布を担っており、2022年からコミットを始めている。実際の変更を多く含むコミットがあり、libarchive のような関連プロジェクトにもコミットしている。バックドアを挿入するには多大な労力が必要だった。