えぬえす工房
  • Search results
avatar えぬえす工房
2026/03/07

噂のノートPCのBIOSを調べた

CHUWI CoreBook X 7430Uを取り巻く噂の検証のため、UEFI BIOSの解析を行いました。

ご注意

本記事の情報を引用・転載などする際は、必ず この記事のURL、およびサイト名(えぬえす工房)を出典として明記してください。 動画等で紹介する場合は、概要欄への記載をお願いします。

なんか騒がしい

3/6に、CHUWIの「CoreBook X 7430U」で、CPU-Z等で得られるCPUはRyzen 5 7430Uと出るが、実際はRyzen 5 5500Uが搭載されているとの報告がありました。

CHUWIにCPU偽装疑惑。ノートPCが7430Uと表示も実は5500U?

少し調べると分かりますが、どうやらこの問題は2ヵ月ほど前からredditでも話題になっているようです。

Does the CoreBook X 7430u actually have a 5500u?

Chuwi CoreBook X 7430U, false advertising, lots of problems, and non existent support.

BIOSイメージを調べれば真相がわかりそうでしたが、BIOSアップデートが公開されていないようです。 そうなると実機からイメージを吸い出すしかないのですが、ちょうど検証目的で買った知り合い(そらりす氏)から借りることができました。

BIOSイメージのダンプと解析

このPCはAMIBIOSが使われているため、AFUWINなどのツールを使うことで、本体を分解することなくBIOSイメージをダンプすることができます。

参考:AMI BIOSのバックアップ方法

ダンプしたイメージを、UEFIToolで調べます。 なお、ダンプしたBIOSイメージのバージョンは「AB525_V00.01_0003」です。

検索画面で非Unicode文字列の「7430U」を検索すると、一件引っかかります。 引っかかったモジュールの名前を見ると「AmdCcxVhRnPei」とあり、NVMeやファイルシステムなどのデバイスドライバがロードされるDXEよりも前の段階である、PEIで読み込まれるモジュールです。

UEFIToolによる調査の様子

とりあえず、このAmdCcxVhRnPeiの実行可能ファイル(*.efiファイル)をUEFIToolの「Extract Body」で抽出します。

Ghidraによる解析

抽出した実行可能ファイルを、リバースエンジニアリングツールであるGhidraに読み込ませます。

自動解析を回した後に、定義済み文字列の一覧を見ると偽装先とされている "AMD Ryzen 5 7430U with Radeon Graphics" の文字列があることが分かります。

7430Uの文字列を発見

この文字列を使っている処理を探すと、0x09C12A10 から始まる関数が見つかります。 さらにこの関数の呼び出し元を調べると、この関数の名前が CcxVhSetBrandString であることが推測できます。

7430Uの文字列を使った処理は、0x09C12A89 から始まります。

7430Uの文字列を使った処理

実は、3/6の夜の時点で、偽装に使っていると思わしき手法が推測されています。

このpostを見るまで知らなかったのですが、どうやら最近のAMDのCPUは cpuid 命令で返すCPUの名前を変更することが可能なようです。 変更先の名前はCPUモデル固有の設定を持つ場所であるMSRの 0xC00100300xC0010035 に格納されます。

これを踏まえて改めて7430Uの文字列を使った処理を見てみると、以下のような擬似コードで表される内容であり、MSRへの書き込みを wrmsr 命令で行っています。

msrAddr = 0xC0010030;
str = "AMD Ryzen 5 7430U with Radeon Graphics"; // BrandString

do {
  // 一回のwrmsrで64bit分、つまり8文字セットできる
  // レジスタは32bitのため、4文字ずつ分ける
  lower = *(uint32_t *)str;
  upper = *(uint32_t *)&str[4];

  wrmsr(msrAddr, (upper << 32) | lower);

  msrAddr++;
  str += 8;
} while (msrAddr <= 0xC0010035);

よって、3/6夜に推測されていた、MSRを使う方法でCPU名の偽装が行われているということが分かりました。

対策は?

このような偽装を見破る方法としては、CPU名だけで信用せず、CPUの世代をより細かく識別できる情報(Family / Model / Stepping)が正しいか確認することが有効です。 しかし、Zen系アーキテクチャでは過去に任意のマイクロコードパッチを適用できる脆弱性(EntrySign)が発見されています。 仮に、EntrySignのようなマイクロコードを書き換えられる脆弱性が使われた場合、これらの情報も偽装される可能性があります。

また、分解して刻印を確認し、IntelであればS-spec(スペックコード)、AMDであればOPNなどから実際の製品が何かを調べるという方法もあります。 しかし、これもCPU刻印の偽装(リマーク)がされる等の問題があり、限界があるのは確かです。

結局のところ完璧な方法は存在しないのが現状ですが、上記の方法である程度は緩和できると思われます。

Author

avatar
NV

気づいたら組み込みセキュリティをやっているエンジニア

Comments