CVE-2026-68416 in Linux情報

要約

〜によって VulDB • 2026年08月10日

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

mtd: add_mtd_device()のエラーパスにおける二重解放とWARN_ONの修正

add_mtd_device()内でパーティションに対してdevice_register()またはmtd_nvmem_add()が失敗した場合、エラーハンドリングはput_device()またはdevice_unregister()を介してmtd_release()を発動させます。mtd_release()はrelease_mtd_partition()を呼び出し、これによりmtd_info構造体が解放されます。しかし、mtd_add_partition()やadd_mtd_partitions()などの呼び出し元もエラーパスでfree_partition()を呼び出すため、二重解放が発生します。

さらに、release_mtd_partition()ではWARN_ON(!list_empty(&mtd->part.node))がトリガーされます。これは、add_mmt_device()のエラーパスからリリースコールバックが発火した時点で、パーティションノードはまだ親のpartitionリストにリンクされているためです。

この問題を修正するため、エラーパスにおいてput_device()の前にdev->typeとdev->releaseを上書きし、device_release()がmtd_release()ではなくno-op関数を呼び出すようにします。mtd_nvmem_add()の失敗ケースでは、device_unregister()をdevice_del()に置き換えることで、デバイスの削除処理と最終的なkobject参照カウントの解放を分離し、put_device()が呼ばれる前に上書きが有効になるようにしています。

add_mtd_device()の失敗時における呼び出し元のエラーパス(list_del + free_partition)は、mtd_infoのライフタイムに対する唯一の所有者であり続け、これは期待される契約条件に合致します。

通常のパーティション破棄パスには影響がありません:del_mtd_device()ではkref_put() -> mtd_device_release() -> device_unregister()が実行され、この時点でdev->typeはまだ&mtd_devtypeに設定されているため、mtd_release() -> release_mtd_partition()は通常のリムーバルケースに対して正しく動作し続けます。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年07月30日

モデレーション

承諾済み

エントリ

VDB-387788

EPSS

0.00000

アクティビティ

低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!