CVE-2026-93048 in Linux情報

要約

〜によって VulDB • 2026年09月18日

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

mtd: part: mtd_add_partition() で MTDPART_OFS_RETAIN を拒否する

mtd_add_partition() は特殊なオフセット値である MTDPART_OFS_RETAIN (-3) を拒否しないため、NANDデバイス上の BLKPG ioctlを介して呼び出された際に add_mtd_device() 内で WARN_ON が発生します。RETAIN値は cur_offset が前のパーティションの終了位置であることを前提としていますが、動的パーティションパスでは cur_offset はオフセット引数そのものとなるため、未定義動作を引き起こします。

コミット 5daa7b21496a ("mtd: prepare partition add and del functions for ioctl requests") で mtd_add_partition() が導入され、これらの特殊なオフセットが前のパーティションの終了位置を追跡することに依存しているため、MTDPART_OFS_APPEND (-1) と MTDPART_OFS_NXTBLK (-2) は正しく拒否されました。しかし、コミット 1a31368bf92e ("mtd: add a flags for partitions which should just leave smth. after them") で静的パーティションテーブルパス向けに MTDPART_OFS_RETAIN (-3) が追加された際、この値も拒否するよう mtd_add_partition() の更新が行われませんでした。

BLKPG経由で offset=-3が渡されると、allocate_partition() 内の RETAINサイズ計算でアンダーフローが発生します(parent_size - 0xFFFFFFFFFFFFFFFD = parent_size + 3)。もしアンダーフローの結果として十分な領域が残っていないように見える場合、allocate_partition() は goto を介して out_register にジャンプし、erasesize の初期処理をスキップします。これにより erasesize=0 となり、以下がトリガーされます:

WARN_ON((!mtd->erasesize || !master->_erase) && !(mtd->flags & MTD_NO_ERASE))

これは add_mtd_device() で発生します。もしアンダーフローの結果として十分な領域が残っているように見える場合、不正なパーティションサイズが計算されますが、「out of reach」の整合性チェックが無効なオフセットを検出し、エラーを返す代わりに無効化された空のパーティション(offset=0, size=0)を作成します。

これを修正するため、既存の APPEND および NXTBLK の処理と一貫させるため、mtd_add_partition() の拒否リストに MTDPART_OFS_RETAIN を追加します。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

Linux

予約する

2026年09月17日

モデレーション

承諾済み

エントリ

VDB-407092

EPSS

0.00000

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!