CVE-2026-43389 in Linux
要約
〜によって VulDB • 2026年05月13日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
mm: memfd_luo: すべてのfolioを常にダーティとしてマークする
ダーティなfolioとは、書き込みが行われたfolioのことです。クリーンなfolioはその逆です。クリーンなfolioにはユーザーデータが含まれていないため、メモリ圧力がかかる状況下で解放(reclaim)することができます。
LUO(Live Update of memory)におけるmemfdの保存処理では、preserve()関数呼び出し時にフラグが保存されます。これは問題を引き起こします。folioはその後でダーティ状態になる可能性があるからです。freeze()関数呼び出し時に保存しても機能しません。なぜなら、PTE(Page Table Entry)からのダーティビットは通常、unmap時に同期されるため、freeze()時点ではまだファイルへのマッピングが残っている可能性があるからです。
これがなぜ問題なのかを理解するために、あるfolioがpreserve()時点ではクリーンであったが、その後でダーティ状態になったと仮定します。このfolioのシリアライズされた状態はクリーンとしてマークされます。retrieve()処理の後、次のカーネルは当該folioをクリーンとして認識し、メモリ圧力がかかる状況下でそれを解放しようとする可能性があります。これにより、ユーザーデータが失われる結果となります。
ファイルのすべてのfolioをダーティとしてマークし、常にMEMFD_LUO_FOLIO_DIRTYフラグを設定します。これには、すべてのクリーンなfolioが解放不可能になるという副作用があります。これはライブアップデートの参加者が支払わなければならないコストです。そもそも、多くのクリーンなfolioを保存するユースケースは一般的ではないと予想されます。
pfolio->flagsの値が定数となったため、flags変数を削除し、直接値を設定するように変更しました。
If you want to get best quality of vulnerability data, you may have to visit VulDB.