CVE情報

CVE information

CVE-2026-75900
: : swtpmにおける境界外読み取り(Out-of-Bounds Read)の脆弱性

報告者

株式会社CyberCrew

概要

swtpmにおいて、NVRAMの状態データを検証する処理に不備があり、確保されたメモリ領域の境界を越えてデータを読み取る「境界外読み取り(Out-of-Bounds Read)」の脆弱性が確認されました。

本脆弱性は、SWTPM_NVRAM_CheckHeader() 関数におけるバッファーサイズの検証方法に起因します。

本来は、入力されたデータの長さを実際の構造体サイズと比較する必要がありますが、該当処理では構造体そのものではなく、構造体を指すポインターのサイズと比較していました。

そのため、本来拒否されるべきサイズの小さいデータが検証を通過し、その後の処理で確保されたバッファーの範囲外が読み取られる可能性があります。

攻撃が成立した場合、swtpmプロセスが異常終了し、関連する仮想マシンのTPM機能や可用性に影響を与える可能性があります。

また、境界外から読み取られた一部のヒープメモリ情報がログに記録される可能性も確認されています。

本脆弱性は CWE-125:Out-of-bounds Read に分類されています。

基本スコア(Base Score)

6.1 (Medium)
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:H

攻撃元区分(Attack Vector)

ネットワーク(Network)
隣接ネットワーク(Adjacent)
ローカル環境(Local)
物理アクセス(Physical)

攻撃の複雑さ(Attack Complexity)

(Low)
(High)

必要な権限(Privileges Required)

不要(None)
(Low)
(High)

ユーザー関与(User Interaction)

不要(None)
必要(Required)

スコープ(Scope)

変更なし(Unchanged)
変更あり(Changed)

機密性(Confidentiality)

影響なし(None)
(Low)
(High)

完全性(Integrity)

影響なし(None)
(Low)
(High)

可用性(Availability)

影響なし(None)
(Low)
(High)

脆弱性の概要

項目内容
CVECVE-2026-75900
影響を受ける製品swtpm
脆弱性の種類境界外読み取り(Out-of-Bounds Read)
CWECWE-125
影響を受ける処理NVRAM状態ヘッダーの検証処理
影響を受ける関数SWTPM_NVRAM_CheckHeader()
CVSS6.1(Medium)
主な影響プロセスの異常終了、サービス拒否(DoS)、限定的なメモリ情報のログへの露出
修正版swtpm 0.10.2

swtpmとは

swtpmは、ソフトウェア上でTPM(Trusted Platform Module)の機能を提供するオープンソースのTPMエミュレーターです。

TPMは、暗号鍵の保護、システムの完全性確認、セキュアブート、ディスク暗号化など、さまざまなセキュリティ機能で利用される仕組みです。

swtpmを利用することで、物理的なTPMチップを搭載していない仮想マシンに対しても、仮想TPM(vTPM)としてTPM機能を提供できます。

仮想化環境では、仮想マシンがTPMを必要とするセキュリティ機能を利用する際にswtpmが使用される場合があります。

そのため、swtpmの停止や異常終了は、関連する仮想マシンのTPM機能やサービスの可用性に影響を及ぼす可能性があります。

脆弱性の詳細

本脆弱性は、swtpmのNVRAM状態データを検証する以下の関数に存在します。

SWTPM_NVRAM_CheckHeader()

該当処理では、受信したデータが blobheader 構造体として処理可能な十分なサイズを持っているかを確認します。

しかし、サイズ検証時に、実際の構造体サイズではなく、構造体へのポインターサイズが参照されていました。

問題となる処理は概念的には以下のようなものです。

sizeof(bh)

ここで bh は構造体そのものではなくポインターであるため、この処理で取得される値は構造体のサイズではなくポインターのサイズとなります。

64ビット環境では一般的にポインターサイズは8バイトですが、対象となる blobheader 構造体は10バイトです。

その結果、8バイトのデータがサイズ検証を通過した後、10バイトの構造体が存在することを前提とした処理が実行される可能性があります。

その後、totlen フィールドを読み取る処理によって、確保されたメモリ領域を越えてデータが参照され、ヒープ領域の境界外読み取りが発生します。

64ビット環境では最大2バイト、32ビット環境では最大6バイトの境界外読み取りが発生する可能性があるとされています。

発生原因

本脆弱性の原因は、C言語における sizeof 演算子の対象指定の誤りです。

構造体の実際のサイズを確認する場合、本来はポインターが参照している構造体のサイズを取得する必要があります。

修正前:

sizeof(bh)

修正後:

sizeof(*bh)

この変更により、ポインターそのもののサイズではなく、blobheader 構造体の実際のサイズを基準として入力データの長さを検証できるようになります。

検証

本脆弱性は、swtpm v0.10.1を使用した検証環境において確認されています。

AddressSanitizer(ASan)を有効にした環境で、通常より短いNVRAM状態データを処理させたところ、ヒープバッファーの境界外読み取りが検出されました。

検証では、SWTPM_NVRAM_CheckHeader() のサイズチェックを通過したデータについて、その後のフィールド読み取り処理で確保済みメモリ領域の外側が参照されることが確認されています。

なお、脆弱性の再現や検証は、必ず自身が管理するシステムまたは明示的な許可を得た環境で実施する必要があります。第三者が管理するシステムに対して無断で検証を行わないでください。

想定される影響

本脆弱性が悪用された場合、主に以下の影響が発生する可能性があります。

swtpmプロセスの異常終了

境界外のメモリへアクセスすることにより、swtpmプロセスがクラッシュする可能性があります。

swtpmが仮想マシンのTPM機能を提供している場合、プロセスの停止によって関連する仮想TPMが正常に利用できなくなる可能性があります。

サービス拒否(DoS)

swtpmの異常終了により、関連する仮想マシンやTPMを利用する機能の可用性に影響を与える可能性があります。

Red HatのCVSS評価でも、可用性への影響は「High」とされています。

メモリ情報の限定的な露出

境界外から読み取られた値がエラーログへ出力される処理が存在するため、隣接するヒープメモリの一部がログに記録される可能性があります。

そのため、Red HatのCVSS評価では機密性への影響が「Low」とされています。

ただし、本脆弱性そのものによる完全性への影響は確認されておらず、CVSS上ではIntegrity Impactは「None」と評価されています。

攻撃の成立条件

本脆弱性は、インターネット上から認証なしで直接悪用できるタイプの脆弱性ではありません。

攻撃者が悪用するためには、swtpmの制御チャネルへアクセスし、細工された状態データを処理させることができる必要があります。

Red HatのCVSS評価では以下の条件となっています。

  • Attack Vector:Local
  • Privileges Required:Low
  • User Interaction:None

そのため、すでにローカル環境やswtpmの制御機能へ一定のアクセス権を持つ攻撃者による悪用が主なリスクとなります。

ただし、仮想化基盤では複数の仮想マシンや管理コンポーネントが連携して動作しているため、個々の脆弱性だけでなく、アクセス制御や権限分離を含めてリスクを評価することが重要です。

修正内容

本脆弱性については、入力データ長のチェック処理を修正するパッチがアップストリームへ適用されています。

修正では、ポインターサイズを確認していた処理が、実際の blobheader 構造体サイズを確認するよう変更されています。

これにより、構造体全体を読み取るために必要なサイズを満たしていないデータが、後続処理へ渡されることを防止します。

アップストリームでは、swtpm 0.10.2 が修正版として示されています。

推奨される対策

swtpmを利用している場合は、まず使用しているバージョンと、Linuxディストリビューションが提供しているセキュリティアップデートの状況を確認してください。

1. 修正版へアップデートする

可能な環境では、本脆弱性が修正されたバージョンへ更新してください。

アップストリームにおける修正版は以下です。

swtpm 0.10.2

ただし、Linuxディストリビューションでは修正パッチを既存バージョンへバックポートして提供する場合があります。

そのため、単純にバージョン番号のみで判断せず、利用しているディストリビューションのセキュリティアドバイザリを確認することが重要です。

2. 制御チャネルへのアクセスを制限する

本脆弱性の悪用にはswtpmの制御チャネルへのアクセスが必要となるため、不要なユーザーやプロセスからアクセスできないようにしてください。

Unixソケットなどを利用している場合は、ファイル所有者やパーミッションを確認し、必要最小限の権限のみを付与することが重要です。

3. 最小権限を徹底する

仮想化基盤や管理サーバーでは、swtpmを操作できるユーザーやサービスを必要最小限に制限してください。

不要な管理権限や共有アカウントを削減することで、脆弱性が悪用される可能性を低減できます。

4. ログを確認する

swtpmの異常終了や不審な状態データの処理が発生していないか、関連するログを確認してください。

特に、予期しないプロセス停止や繰り返し発生するエラーなどが確認された場合には、原因調査を実施することが推奨されます。

Red Hat製品への影響

Red Hatが公開しているCVE情報では、swtpmを含む複数のRed Hat Enterprise Linux製品について影響評価が行われています。

Red Hatは本脆弱性を Moderate と評価しています。

また、Red Hatの公式CVEページでは、株式会社CyberCrewの Suraj Theekshana が本脆弱性の報告者としてAcknowledgementsに記載されています。

Red Hat製品を利用している場合には、アップストリームのバージョン番号だけでなく、Red Hatが提供する各製品向けのセキュリティ情報および更新状況を確認してください。

まとめ

CVE-2026-75900は、ソフトウェアTPMエミュレーター「swtpm」のNVRAM状態データ検証処理に存在する、境界外読み取り(Out-of-Bounds Read)の脆弱性です。

入力データのサイズを確認する際、実際の構造体サイズではなくポインターサイズを使用していたことにより、本来拒否されるべき短いデータが検証を通過し、その後の処理でヒープ領域の境界外が読み取られる可能性があります。

悪用された場合、swtpmプロセスの異常終了によるサービス拒否(DoS)や、隣接するヒープメモリの一部がログへ記録される可能性があります。

Red Hatは本脆弱性を CVSS 6.1(Medium)/Moderate Impact と評価しています。

swtpmを利用している環境では、使用しているパッケージおよびディストリビューションのセキュリティ情報を確認し、提供されている修正プログラムを適用することが重要です。

参考情報

■ CVE
CVE-2026-75900

■ 脆弱性種別
CWE-125:Out-of-Bounds Read

■ Red Hat
https://access.redhat.com/security/cve/cve-2026-75900

■ NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-75900

■ Technical Advisory / Research
https://surajhacx.github.io/hacx/cve-2026-75900.html


Page Top