TAチームによる "XZ Utils Backdoor "の分析による脆弱性レポート
XZ Utils Backdoorは、攻撃者が2001年から準備していたバックドアである。悪意のあるユーザーがオープンソースのXZリポジトリに悪意のあるコードを挿入し、適切な検証を行わずに配布していたことが発覚した。
この脆弱性は当初、SSH認証バイパスのバックドアとして報告されましたが、さらに分析を進めると、実際にはRCEの脆弱性に変更されました。XZ Utilsとその基本ライブラリであるliblzmaは、lzma圧縮と解凍を構築するオープンソースプロジェクトである。多くのLinuxディストリビューションにデフォルトで含まれており、開発者に非常に人気があり、Linuxエコシステム全体で広く使用されている。
XZ Utilsはバックドア型のマルウェアで、感染したシステム上で攻撃者からのコマンドを受け取り、コマンドの実行などの機能を実行することができる。
このようなオープンソースソフトウェアのサプライチェーン攻撃は、セキュアコーディングや模擬ハッキングといった断片的な手法だけでは防ぐことができないため、様々な観点から対策を検討する必要があります。今回の脆弱性のようなオープンソースに対するサプライチェーン攻撃は特に注意が必要です。
当社のMONITORAPPでは、常に最新の脆弱性を監視しています。
1. 概要
XZ Utils Backdoorは、攻撃者が2001年から準備していたバックドアであり、悪意のあるユーザーが公開されているオープンソースのXZリポジトリにマルウェアを注入し、適切な検証を行わずにデプロイしたことで発見された。
この脆弱性は当初、SSH認証バイパスのバックドアとして報告されましたが、さらなる解析の結果、RCEの脆弱性に変更されました。XZ Utilsとその基本ライブラリであるliblzmaは、lzma圧縮と解凍を構築するオープンソースプロジェクトである。
これらは多くのLinuxディストリビューションにデフォルトで含まれており、開発者に非常に人気があり、Linuxエコシステム全体で広く使用されている。
2. 攻撃分析
XZ Utils Backdoorはいくつかの要素から構成され、何度か紹介されている。
2.1 要素
ビルドプロセスで IFUNC を使用し、シンボル解決機能をマルウェアで乗っ取る。
難読化され隠された共有オブジェクトをテスト・ファイルに含める。
ライブラリのビルドプロセス中に共有オブジェクトを抽出する一連のスクリプトを実行する。
プロセスの特権を制限するセキュリティ機能であるランドロックの無効化
2.2 実行チェーン
ライブラリのビルド処理中に悪意のあるスクリプトbuild-to-host.m4が実行され、テストファイルbad-3-corrupt_lzma2.xzをbashスクリプトにデコードします。
このbashスクリプトは、別のテストファイルgood-large_compressed.lzmaに対してより複雑なデコード処理を実行し、別のスクリプトによってデコードされる。
このスクリプトは共有オブジェクトliblzma_la-crc64-fast.oを抽出し、liblzmaのコンパイルプロセスに追加する。
The photo above is an illustration of 2.1 Elements, 2.2 Execution Chain.
source : https://twitter.com/fr0gger_/status/1774342248437813525
2.3 RCEの実行
上記を行った後、この関数は攻撃者をチェックし、認証クライアントの証明書からコマンドを抽出し、それを実行するためにsystem()関数に渡し、認証前にRCEを実行する。
3. 対策
バックドア型マルウェアは、最終的にマルウェアを仕込むためにファイルをアップロードするなどの事前アクションが必要であり、バイナリ化されたマルウェアはパターンとして検知しにくいため、パターン化が難しい脆弱性である。
XZ Utilsの脆弱性と同様の事例がないか監視している。
4. 結論
XZ Utilsは、感染したシステム上で攻撃者からコマンドを受け取り、コマンドの実行などの機能を実行するバックドア型マルウェアである。
このようなオープンソースソフトウェアのサプライチェーン攻撃は、セキュアコーディングや侵入テストといった断片的な手法では防ぐことができないため、対策を多角的に検討する必要がある。今回の脆弱性のようなオープンソースに対するサプライチェーン攻撃は、特に注意が必要です。
当社のMONITORAPPでは、常に最新の脆弱性を監視しています。