Kaspersky Labはこのほど、「Social engineering aspect of the XZ incident|Securelist」において、圧縮ツールおよびライブラリの「xz」を悪用したサプライチェーン攻撃の詳細について伝えた。この攻撃は「緊急警告、圧縮ツールxzにsshdを介した不正アクセスの可能性 - 利用の中止を | TECH+(テックプラス)」にて報じたとおり、xzに悪意のあるコードが含まれた状態でリリースされたもので、xzの開発者の一人「Jia Tan(別名:jiaT75)」によって実行されたことがわかっている。
攻撃の始まりは開発者同士の諍い
Kaspersky Labによると、この攻撃は数年にわたって実行されたという。事の発端は2022年の夏、3人のユーザー(Jia Tan、Dennis Ens、Jigar Kumar)がxzの作者兼メンテナーのLasse Collin氏に、プロジェクトの引き継ぎを促すように圧力をかけたことだったとされる。
彼らの初期目標はxzのソースコードへのフルアクセスを許可させ、Jia Tanに悪意のあるコードを仕込む機会を与えることだった。そのために、彼らはメールスレッド上で相互にやり取りし、メンテナーのLasse Collin氏を置き換える必要があると不満を漏らすこともあったという。
その後、最終的にJia TanのGitHubアカウント「jiaT75」はxzの共同メンテナーに昇格している。Jia Tanはxzの開発にのみ関わったわけではなく、複数のGitHubプロジェクトに500以上のパッチを提供したとされる。これらパッチは無害とされ、正統なオープンソース貢献者の地位を獲得する目的があったとみられている。
セキュリティ企業「Huntress」の研究者「alden」氏はXへの投稿で、Jia Tanのコミット時刻をプロットした興味深い図を公開している。多くのコミットが10時から19時(協定世界時)に集中しているのに対し、悪意のあるコードのコミットだけは1時から4時半ごろ(協定世界時)に集中している。
Kaspersky Labは、このコミット時刻の違いの理由について、次のいずれかではないかと推測している。
- Jia Tanのアカウントを別のユーザー(脅威アクター)が悪用した
- 悪意のあるコードのコミットが急遽決定した
- Jia Tanのアカウントはチームで運用されており、一部のメンバーは異なる時間帯で活動していた
xzの事案では、最終的に悪意のあるコードがxzのビルドプロセスに挿入され、一部のLinuxディストリビューションに影響を与える事態となった。しかしながら、幸いなことに影響が広まる前に悪意のあるコードは発見され、xzおよびsshdを介したサプライチェーン攻撃は失敗に終わっている。
今後は他のOSSプロジェクトも狙われるか
Kaspersky Labは、今後も同様の攻撃が続くと予想している。xzの事案はオープンソースプロジェクトを乗っ取り、武器化する試みだった可能性があり、他のオープンソースプロジェクトに対しても同様の試みが継続すると推測されている。
そして、残念なことにすでに同様の事案が報告されている。OSSF(Open Source Security Foundation)は、「Open Source Security (OpenSSF) and OpenJS Foundations Issue Alert for Social Engineering Takeovers of Open Source Projects – Open Source Security Foundation」において、この件と似た事案を確認したとして、米国土安全保障省サイバーセキュリティ・インフラストラクチャーセキュリティ庁(CISA: Cybersecurity and Infrastructure Security Agency)に報告している。