CVE-2024-3094: XZ Utils における SSHD バックドアの検出

By 清水 孝郎 - MARCH 30, 2024

SHARE:

本文の内容は、2024年3月29日に MICHAEL CLARK が投稿したブログ(https://sysdig.com/blog/cve-2024-3094-detecting-the-sshd-backdoor-in-xz-utils)を元に日本語に翻訳・再構成した内容となっております。

2024 年 3 月 29 日、XZ Utils と呼ばれる人気のあるパッケージのバックドアがOpenwall メーリング リストで発表されました。このユーティリティには、リモートアクセスに使用されるインターネットインフラストラクチャーの重要な部分である SSHD によって使用される liblzma と呼ばれるライブラリが含まれています。CVE-2024-3094がロードされると、SSHD の認証に影響し、方法に関係なく侵入者のアクセスを許可する可能性があります。

影響を受けるバージョン: 5.6.0、5.6.1

影響を受けるディストリビューション: Fedora 41、Fedora Rawhide

※この記事を書いている時点では

背景

悪意のある攻撃者は、2024 年 2 月 23 日に、ビルドプロセスを変更する難読化された悪意のあるコードを含むコードを XZ Utils Github リポジトリにコミットすることができました。変更されたビルドプロセスには、liblzma ライブラリのコンパイル中に悪意のあるファイルが含まれていました。悪意のあるコードはプレーンテキストではなかったので、検出が困難でした。この攻撃の主なターゲットは Linux ディストリビューションです。これは、SSHD が使用する liblzma ライブラリのコンパイル済みバージョンが含まれると同時に、多くのユーザーに拡散されるためです。

SSHD が悪意のあるライブラリをロードすると、RSA キーのチェック中に認証フローがリダイレクトされます。認証フローを制御することで、ライブラリは攻撃者が設定した基準に基づいてアクセスを許可できます。これはおそらく、攻撃者のみが知っている RSA キーまたはその他のデータです。この時点では、パスワードまたは PKI ベースの認証はいずれも有効ではありません。

検出

この悪意のあるライブラリは、影響を受けるパッケージがインストールされているかどうかを調べる脆弱性管理ソリューションによって検出することができます。また、CVE-2024-3094 は、Falco または Sysdig Secure CNAPP Platform を使用して実行時に検出することもできます。実行時の検出については、SSHD による悪意のあるライブラリのロードを監視することが一つの方法です。これらの共有ライブラリは、ファイル名にバージョンを含むことがよくあります。以下の例では、テストシステムでSSHDによってロードされたものを示しています。

SSHD は起動時に実行されるデーモンであるため、検出エージェントが時間内に読み込まれない場合、検出が困難になることがあります。ただし、ユーザーが SSH でログインすると、新しい SSHD プロセスが生成され、影響を受けるライブラリもロードされます。これにより、共有ライブラリのロードを検出できる 2 つの場所が得られます。以下は、まさにそれを行う方法を示す Falco ルールです。

Sysdig Secure ユーザーの場合、このルール名はBackdoored library loaded into SSHD (CVE-2024-3094)” で、 Sysdig Runtime Threat Detection ポリシーにあります。

- rule: Backdoored library loaded into SSHD (CVE-2024-3094)

  desc: A version of the liblzma library was seen loading which was backdoored by a malicious user in order to bypass SSHD authentication.

  condition: open_read_new and proc.name=sshd and (fd.name endswith "liblzma.so.5.6.0" or fd.name endswith "liblzma.so.5.6.1")

  output: SSHD Loaded a vulnerable library (| file=%fd.name | proc.pname=%proc.pname gparent=%proc.aname[2] ggparent=%proc.aname[3] gggparent=%proc.aname[4] image=%container.image.repository | proc.cmdline=%proc.cmdline | container.name=%container.name | proc.cwd=%proc.cwd proc.pcmdline=%proc.pcmdline user.name=%user.name user.loginuid=%user.loginuid user.uid=%user.uid user.loginname=%user.loginname image=%container.image.repository | container.id=%container.id | container_name=%container.name|  proc.cwd=%proc.cwd )

  priority: WARNING

 tags: [host,container]Code language: JavaScript (javascript)

エンドツーエンドの検出で今すぐクラウドを保護しましょう

Sysdig Secureの中核にはFalcoの統合検知エンジンがあります。この最先端のエンジンは、リアルタイムの振る舞いに関する洞察と脅威インテリジェンスを活用して、多層的なインフラストラクチャーを継続的に監視し、潜在的なセキュリティ侵害を特定します。コンテナの異常な挙動、不正アクセスの試み、サプライチェーンの脆弱性、アイデンティティベースの脅威など、Sysdigは組織が進化する脅威に対して統合的かつプロアクティブな防御を行うことを可能にしています。

 Sysdig が AWS、GCP、Azure 全体で継続的なクラウドセキュリティをどのように提供しているかを詳しく見てみましょう。

まとめ

サプライチェーン攻撃はますます一般的になってきています。 SSHD に対するこの攻撃で見られたように、コードはレビューと承認を通過しました。懸念を引き起こさない方法で難読化されました。これは、ソース コードを静的にスキャンする場合の欠点の 1 つです。実行時の脅威の検出は、サプライ チェーン内のすべてのコンポーネントが期待どおりに動作していることを確認するために重要な部分になります。この悪意のあるライブラリが発見される前に、さらに多くのディストリビューションに侵入することがなかったのは非常に幸運でした。