世界を動かす技術を、日本語で。

CPU-ZとHWMonitorが侵害されました

概要

  • CPUID公式サイト が一時的に マルウェア配布 の被害
  • ダウンロードリンク が改ざんされ、 偽インストーラー が配布
  • ソフトウェア自体 の署名やビルドには影響なし
  • 攻撃手法 はAPIの侵害と DLLインジェクション
  • 現在は復旧済み だが、 詳細な被害規模 は不明

CPUID公式サイトのダウンロードリンク改ざん事件

  • CPUID公式サイト の一部バックエンドが 攻撃者にハイジャック
  • HWMonitorCPU-Z などのツールの ダウンロードリンクマルウェア配布経路 に変化
  • Reddit などでユーザーが 異常なインストーラー名ウイルス警告 を報告
  • 例: HWMonitor 1.63 の更新が "HWiNFO_Monitor_Setup.exe" という不審なファイルに差し替え
  • CPUID運営ソフトウェアビルド自体は無事 と発表
  • 侵害されたのはサイドAPI で、 約6時間 悪意あるリンクが表示
  • 署名済みファイルは改ざんなしダウンロード経路のみが被害

マルウェアの挙動と技術的分析

  • vx-underground による分析で、 64bit HWMonitorユーザー が主な標的
  • 偽のCRYPTBASE.dll を利用し、正規の Windowsコンポーネント に偽装
  • DLLC2サーバー へアクセスし、追加マルウェアをダウンロード
  • ファイルレス攻撃 を重視し、極力 ディスクに残らない 設計
  • PowerShell の活用、 .NETペイロード の動的コンパイル、他プロセスへの インジェクション
  • Google ChromeのIElevation COMインターフェース を利用し、 保存済み認証情報 の窃取を試み
  • 過去の FileZillaユーザー標的キャンペーン との共通インフラ利用の痕跡

事件の影響と教訓

  • CPUID側は復旧済み と発表、 APIの侵害手法や被害人数は未公表
  • サプライチェーン攻撃 の新たな脅威、 ソースコード改ざん不要 でも被害発生
  • 信頼できるダウンロード元 でも リンク改ざんリスク が存在
  • 利用者側ファイル名や署名の確認セキュリティ対策 の重要性再認識

参考リンク

Hackerたちの意見

同じ脅威グループが先月ファイルジラを攻撃したんだ。彼らは特に、技術に詳しいユーザーが信頼して公式ソースからダウンロードするユーティリティを狙ってる。攻撃対象は、ダウンロードリンクを生成するAPIレイヤーで、バイナリ自体じゃないんだよね。

同じ脅威グループが先月、偽のドメインでファイルジラを攻撃したんだけど、今回は偽のドメインすら必要なかったみたい。実際のドメインのAPIレイヤーを侵害したんだ。攻撃が「ユーザーを間違ったサイトに誘導する」から「正しいサイトが間違ったファイルを提供する」に進化してるね。

これはまずいな。自分はwingetでソフトをインストールするのが好きなんだけど、そこにあるバージョンもやられてるのかな?v1.63は6日前に更新されたみたいだし、https://github.com/microsoft/winget-pkgs/tree/master/manifes... から、https://winstall.app/apps/CPUID.HWMonitor で確認できる。v2.19は15日前に更新されたやつで、https://github.com/microsoft/winget-pkgs/tree/master/manifes... から、https://winstall.app/apps/CPUID.CPU-Z で見られるよ。

それはHWMonitorのことだね。https://www.cpuid.com/softwares/hwmonitor.html で、HWInfoじゃないよ。https://www.hwinfo.com/ CPUIDのプログラムが2つあるけど、他にも影響を受けたのがあるのかな?同じ話題がRedditにもあるよ。https://news.ycombinator.com/item?id=47718830 @dang

彼らがホストしているインストーラーは大丈夫みたい。サイトのリンクは、Cloudflare R2ストレージに向けて変更されていて、いろんな悪意のある実行ファイルが置かれてる。今後、どういう経緯でこうなったのかの情報を楽しみにしてるよ。

正確にはサプライチェーンの侵害ではないけど、開発者はwingetやchocolateyのようなパッケージマネージャーを使って更新する賢さが必要だね。でも、確かにウォータリングホール攻撃には当てはまる。

あるメンテナーからのコメントらしいけど(確認はしてない):

「皆さん、こんにちは。私はサムで、フランクと一緒にCPU-Zに取り組んでいます(バリデーターを担当しています)。フランクは残念ながら数週間不在です。昨晩はMemtest86+にほとんどの夜を費やしていたので、今起きたばかりで、すべてをチェックするのに最善を尽くしています。最初のチェックでは、私たちのサーバーのファイルは問題なさそうです(https://www.virustotal.com/gui/file/6c8faba4768754c3364e7c40...)し、サーバーも侵害されている様子はありません。さらに調査中です... もし誰か、マルウェアがダウンロードされたページの正確なリンクを教えてくれたら、すごく助かります。 「ありがとう。最大の侵害を見つけて、リンクを復元し、さらなる調査が終わるまで全てを読み取り専用にしました。フランクが不在の間に待っていたみたいで、昨日Memtest86+をやってたら体調が悪くなっちゃった :-/ 「リンクは09/04から10/04 GMTの間、6時間以上侵害されていたみたいです :-/ だから、cpuidのウェブサイトが侵害されて、偽のインストーラーに繋がるリンクがあったようです。」

最近数週間で、ディスコードや他のチャットでの可用性通知がタイムド攻撃に悪用されているって話を3回読んだ。

参考までに言うと、昔CPUレビューを書いてたことがあって、サムとフランクのことは保証できるよ。フランクはCPUIDの背後にいる人で、サムは彼の親友で、Memtestの仕事の他にCanard PCでも知られてた人だよ。: https://x86.fr/about-me/

問題を解決してリンクを修正してくれてよかった。最初にこれを読んだとき、実際にはwww.cpuid.comで表示される怪しい広告だと思ってた。これがCPU-Zのダウンロードページで見た本当の広告だよ:「ダウンロードを続ける」、「Windows 10、11 32/64ビット用インストール、早くゲット!」、「ダウンロード」、「PC APP STOREから今すぐダウンロード」、「Windows 10、11 32/64ビット用今すぐダウンロード」。これらはページ上に何度も表示されてた。実際のダウンロードリンクは、ダウンロードリンクだとも言ってないし。この状況ではwinget CLIが大好き。これだけで十分だよ:winget install CPUID.CPU-Z

どうやって侵害されたのか、何かアイデアある?

Windowsユーザーにとって、wingetを使ってインストールするのは利点だね。インストーラーが他の場所にホストされてるけど、少なくとも署名チェックはしてる。最新のインストーラーの設定はここにリストされてるよ: https://github.com/microsoft/winget-pkgs/blob/master/manifes... これを使ってインストールできる: winget install --exact --id CPUID.CPU-Z (ここで「2.19」と指定できる--versionフラグがあって、その署名は1ヶ月前のものだから、これでインストールしても安全だと思うよ。)

そうだね。WingetがWindowsアプリのサポートをどんどん良くしてる。こないだImageMagickの最新バージョンをダウンロードしようとしたけど、公式サイトのリンクが全部ダメだった。Wingetを試したら、ちゃんとあったよ!

このマニフェストはshaチェックだけを示してるけど、サイトが侵害されてる間にマニフェストが更新されたら意味ないよね。署名チェックはどうやってるの?

パッケージマネージャーのおかげで、数ヶ月前に発表されたNotepad++のハイジャックから人々を救ったよね。開発者は、インフラが安全であることを確認するために多くの時間をかける覚悟がない限り、ファーストパーティのサイトでソフトウェアを配布するのは避けるべきだと思う。署名を確認する人はあまりいないけど、PKIを整えておくのも大事だよ(署名キーは複数のチャネルで入手できるべき)。

いや、WinGetは基本的にこれに対して保護を提供しないよ。パッケージのバージョンを更新するためのPRは、公開前に何らかの形で検証されるけど、必要なスループットは浅いチェックでしか達成できないんだ。元のソースをコントロールしている悪意のあるアクターは、簡単に悪意のあるアップデートを入れられるよ。それ以外は、WinGetはほとんど「setup.exeを実行する」だけ。パッケージマネージャーじゃないし、基本的にはMajorGeeksの平凡なCLI版だね。

ダウンロード後、Windows Defenderがすぐにウイルスを検出した。 > (私はよくDefenderを引き起こすプログラムを使っているから、無視したけど)これまた、誤検出の残念な悪影響を示してるね。ウイルスを積極的に検出する限り、解決は難しいだろうけど。

ソースベースの配布なら解決の可能性があるし、完全に再現可能なビルドなら確実に解決できるよ。

もし素晴らしいWindowsアプリストアやパッケージマネージャーがあれば、無理なことも助けられるのに…

ある程度、マイクロソフトが悪いと思う。Windows Defenderが「Win32/Keygen」とか言って、実際にはマルウェアがないのに反応することが多いんだよね。これって、海賊行為をする人たちが、何かを通すためにアンチウイルスをオフにするのが当たり前になっちゃうんだよ。最初は大丈夫でも、いつか問題になるかもしれない。麻薬みたいなもので、特定の人たちがどんな理由があっても使うなら、できる限り安全にしてあげるべきだと思う。誤検知が多いと、本当に危険なものを無視するようになっちゃうし、そうなるとこういうものの市場ができちゃうんだよね。

新しい世代の人間の盾たち、1ヶ月も経ってないソフトウェアを使う覚悟を持っている君たちに、敬意を表するよ。

ソフトウェアのリリースを入れて、その安全性を教えてくれるツールってあるのかな?これに関しては、何も買えないみたいなんだ。Crowdstrikeとかの最新のアンチウイルスは、デバイスに入った後に反応するかもしれないけど、SASTやSCAツールはCVEには役立つけど、ユーザーがランダムなソフトを入れて、その評判を測れるものはないよね?

最新が最高で、キラキラしたものが金になるって教えられたCSSプログラマーを生み出したウェブに感謝。

新しいものを追いかけるタイプじゃないけど、数ヶ月前のソフトウェアパッケージが、ダウンロードした時点で新たに侵害されたバージョンじゃないってどうやってわかるの?

一ヶ月待っても守られると思わないでほしいな。悪意のあるソフトウェアは、何か悪いことが起こるまで数ヶ月や数年待つことができるから。

それはフェアじゃないよ。cpuzやhwmonitorは、新しいPCのインストール時によく使う(少なくとも俺はそう)ハードウェアの仕様を確認するためにね。デスクトップコンピュータのアップグレード作業をする時にも使うし。信頼できるサイトに行って、そこにあるものをダウンロードして始めるだけ。これは、開発者がリリース初日に「人間の盾」として更新しているnpmパッケージじゃなくて、新しいソフトをダウンロードするときに出てくる最初のバージョンなんだから。

昨日、仕事で久しぶりにCPU-Zが必要になってダウンロードしたんだけど、運が悪いことに、Virustotalには悪意のあるものとして検出されなかったけど、めっちゃビビったわ。