CVE-2026-64502 in Linux情報

要約

〜によって VulDB • 2026年07月26日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

iio: adc: ad_sigma_delta: レジスタレスデバイスにおける clear_pending_event の不具合を修正

`ad_sigma_delta_clear_pending_event()` は、`has_registers = false` かつ `rdy_gpiod` を持たないデバイスに対して、ステータスレジスタの読み込みパスへフォールスルーします。このようなデバイスでは、`ad_sd_read_reg()` がアドレスバイトを完全にスキップし、アドレスフェーズなしで生の MISO バイトをクロックするため、変換データの読み出しとバイト単位で同一になります。保留中の変換結果が存在する場合、これにより一部が消費され、`ad_sigma_delta_single_conversion()` 内の後続の `ad_sd_read_reg()` コールにおけるデータストリームが破損します。

さらに、これらのデバイスにおいて `num_resetclks = 0` の場合、`data_read_len` は 0 に評価されます。クロックされたバイトのビット7がクリアされていると、`pending_event` が設定され、コードは `memset(data + 2, 0xff, 0 - 1)` を実行しようとします。これにより SIZE_MAX までオーバーフローし、ヒープが破損します。

修正方法として、`rdy_gpiod` も `has_registers` もセットされていない場合に直ちに 0 を返すようにしました。これは現在のすべてのレジスタレスデバイスに対して安全です:ad7191 および ad7780(パワーダウン GPIO付き)は変換間で CS の非アサートによりリセットされるため、排水すべき古い結果はありません;ad7780(パワーダウン GPIOなし)および max11205 は連続変換モードであり、前回の結果が読み込まれたかどうかに関わらず出力データレートで ~DRDY をサイクルするため、次の立下ちは自然に発生します。

将来のレジスタレスデバイスで、~DRDY がデータが読み取られるまでアサートされたままになるものは、この早期リターンにより壊れ、`num_resetclks` の設定または rdy-gpio が必要になります。

rdy_gpiod はセットされているが `num_resetclks = 0` の任意のデバイスでも、同様のヒープ破損を引き起こす可能性があります:GPIO が保留イベントを示している場合、排水パスは `has_registers` に拘わらず `memset(data + 2, 0xff, 0 - 1)` を実行します。保留イベントチェックの後に明示的な `data_read_len == 0` ガードを追加し、古い結果を `ad_sigma_delta_single_conversion()` 内の最初の `ad_sd_read_reg()` コールで消費するようにしました。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-383308

EPSS

0.00119

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!