XZ Utils へのバックドア混入:そこで用いられたソーシャル・エンジニアリングを紐解く

Attacker Social-Engineered Backdoor Code Into XZ Utils

2024/04/25 DarkReading — SolarWinds や CodeCov が経験したような、広範なソフトウェア・サプライチェーンへの攻撃において、敵対者には高度な技術的スキルは必要ない。 必要なのは、ほんの少しの時間と、巧妙なソーシャル・エンジニアリングだけということもある。今年の初めに、Linux システムの OSS である XZ Utils データ圧縮ユーティリティに、バックドアを仕込んだ人物も、きっと、そうだっただろう。今週に発表された、このインシデントに対する Kaspersky による分析と、ここ数日における他の企業からの同様の報告から判明したのは、このユーティリティにバックドアを組み込んだ攻撃者は、ほぼ全面的にソーシャル・エンジニアリングを頼っていたことだ。

OSS サプライチェーンにおけるソーシャル・エンジニアリング

この攻撃は一つのモデルであり、他の広く使われている OSS のプロジェクトやコンポーネントに対しても、同様のマルウェアを忍び込ませるために用いられるという、不吉な予感が頭をよぎる。

先週の Open Source Security Foundation (OSSF) の警告は、XZ Utils 攻撃は単独の孤立したインシデントではない可能性が高いとしている。そのアドバイザリでは、JavaScript プロジェクトである OpenJS Foundation を乗っ取ろうとした事例でも、XZ Utils と同様の手口を用いられたと特定されている。

OSSF は、「OSSF と OpenJS は、ソーシャル・エンジニアリングによる乗っ取りを警戒し、この種の脅威パターンを初期の兆候を認識し、OSS プロジェクトを保護するための措置を講じるよう、すべての OSS メンテナたちに呼びかけている」と述べている。

Microsoft の開発者が、Debian のインストールにまつわる奇妙な挙動を調査していたときに、XZ ライブラリの新しいバージョンにである liblzma に、バックドアが存在することを発見した。その時点では、Fedora/Debian/Kali/openSUSE/Arch Linux の各バージョンの、unstable および beta ベータ版のみに、バックドアを持つライブラリが仕込まれていた。

Kasperksy は、「攻撃者がバックドアを導入した方法が、特に注目すべき問題点である。SolarWinds のインシデントが、これまでのサプライチェーン攻撃と大きく異なる点は、敵対者がソース/開発環境に対して、秘密裏かつ長期間にわたりアクセスしていたことだ。そして、この XZ Utils のインシデントでも、ソーシャル・エンジニアリングによる長時間のアクセスが取得され、目に見えるところで、架空の人物とのやり取りが行われていた」と述べている。

低速でゆっくりとした攻撃

この攻撃は、2021年10月に始まったようであり、”Jia Tan” というハンドルネームを用いる個人が、XZ Utils プロジェクトに対して無害なパッチを提出したところから始まった。その後の数週間から数ヶ月の間に、Jia Tan のアカウントは、XZ Utils プロジェクトに対して複数の同様の無害なパッチ (タイムラインを参照) が提出され、XZ Utils の唯一のメンテナである Lasse Collinsという個人が、それらをユーティリティにマージし始めた。

2022年4月からは、”Jigar Kumar” と “Dennis Ens” というハンドルネームの他のペルソナが、Lasse Collins に対して電子メールを送りだし、XZ Utils に対して Jia Tan パッチを、もっと速いペースで統合すべきだと圧力をかけ始めた。

“Jigar Kumar” と “Dennis Ens” というペルソナは、Lasse Collins への圧力を徐々に強め、このプロジェクトに対して、もう一人のメンテナを加えるよう求め始めた。ある時に Collins は、プロジェクトのメンテナンスに興味があることは認めながらも、”長期的な精神衛生上の問題” により、制約を受けていることを告白していた。最終的に Collins は、Kumar と Ens からの圧力に屈し、プロジェクトへのコミット・アクセスとコード変更の権限を、Jia Tan に与えることになった。

Kasperksy は、「彼らの目的は、Jia Tan に XZ Utils のソースコードへのフルアクセスを許可し、XZ Utils に対して悪意のコードを巧妙に導入することだった。 これらの ID を用いる脅威アクターは、メール スレッド上で相互にやり取りし、XZ Utils のメンテナとして Lasse Collin を置き換える必要性について述べていた。さらに、攻撃に参加した Jia Tan/Jigar Kumar/Dennis Ens は、彼らが連携して活動しているという疑念を払拭するために、意図的に異なる地域出身であることを装っていたようだ。さらに、2023年6月に一時的に活躍した、別の人物/ペルソナである Hans Jansen は、最終的にユーティリティに統合された XZ Utils 用として、パフォーマンス最適化のための新たなコードを提供した。

多彩なアクターたち

2024年2月に Jia Tan は、XZ Util のメンテナンス・タスクを掌握した上で、このユーティリティにバックドア・バイナリを導入した。その後も、Jansen という人物が、他の2人のペルソナと一緒に再登場し、主要 Linux ディストリビューターに対して、バックドア化されたユーティリティを導入するよう、それぞれが圧力をかけた、Kasperksy は指摘する。

この攻撃が小規模なチームによるものなのか、1人の個人が複数の ID をうまく管理したものなのかは、まったく明らかになっていない。ただし、メンテナを欺いて、プロジェクトにコード変更を加える権利を得たのは間違いない。

Kaspersky の Principal Researcher である Kurt Baumgartner は、ログイン・データやネットフロー・データなどの追加データソースが、攻撃に関与した ID の調査に役立つ可能性があると、Dark Readingに語っている。彼は、「オープンソースの世界は、乱暴にオープンなものである。つまり、不透明な ID により、主要な依存関係にあるプロジェクトに対して、疑わしいコードのコントリビューションが可能になる」と指摘している。