Linux Distros のパッチ未適用の脆弱性: CVE-2024-53079

medium Nessus プラグイン ID 231397

概要

Linux/Unix ホストには、ベンダーにより修正されていないことを示す脆弱性を持つ複数のパッケージがインストールされています。

説明

Linux/Unix ホストには、ベンダーが提供するパッチが利用できない脆弱性の影響を受ける複数のパッケージがインストールされています。

- mm/thp: 遅延分割キュー解除の命名とロックを修正。最近の変更により、THP 遅延分割キューにさらに負担がかかっています。負荷がかかると、長期間にわたる競合が明らかになり、list_del の破損、不正なページ状態、さらに悪い状況が発生します (これら両方のバグがあるため、通常、バグがない場合にはどの程度の状況になるかを確認できません)。関連する最近の変更は、6.8 の mTHP、6.10 の mTHP スワップアウト、および 6.12 の mTHP スワップ、スワップ割り当ての改善、十分活用されていない THP 分割です。ロックを修正する前に、誤解を招く folio_undo_large_rmappable() (large_rmappable を元に戻さない) の名前を、実際の動作を実行する folio_unqueue_deferred_split() に変更します。しかし、これとその out-of-line __callee は非常に限られたユーザビリティの mm 内部です
使用方法を確認するためのコメントと WARN_ON_ONCE を追加します。遅延分割がキューから削除されたかどうかを示すブール値を返します。これは、安全性チェック周りの WARN_ON_ONCE で使用できます (呼び出し元が __folio_unqueue_deferred_split() 内の
難解な条件文を省くことができます)。free_unref_folios() から folio_unqueue_deferred_split() を省略するだけです。これで、folio_unqueue_deferred_split() のすべての呼び出し元が事前にこれを呼び出します (忘れた場合は bad_page() が通知します)。ただし、呼び出し元の put_pages_list() は除きます。put_pages_list() 自体には呼び出し元がなくなります (個別に削除されます)。スワップアウト:
mem_cgroup_swapout() は、遅延分割リストから THP フォリオをチェックおよびキュー解除せずに、folio->memcg_data 0 にリセットしていました。split_queue_lock は memcg に依存するため、これは不適切です (memcg が有効な場合)。そのため、swapout は、フォリオを解放するときに、代わりに pgdat のロックを使用し、後でそのような THP をキュー解除していました。これにより、memcg のリストが破損する可能性があります。__remove_mapping() はここで refcount を 0 に固定しているので、memcg_data をリセットする前に folio_unqueue_deferred_split() を呼び出すことに問題はありません。これは、5.4 コミット 87eaceb3faa5 (mm: thp: 遅延分割シュリンクエンジンを memcg 対応にする) に戻ります。これには、遅延キューに追加する前に swapcache をチェックする機能が含まれていましたが、THP を swapcache に追加する前に遅延キューをチェックする機能は含まれていませんでした。これは、再利用における通常の一連のイベントでは問題なく機能しました (ただし、遅延キューの THP がスワップ アウトされる可能性のあるまれなケースがいくつかありました)。ただし、6.12 コミット dafff3f4c850 (mm: 使用率の低い THP を分割) では、使用率の低い THP を再利用で分割することを回避し、遅延キューの swapcache THP を一般的なものにしています。遅延キューに追加する前に swapcache をチェックしますか? はい。これは必須ではなくなりましたが、既存の動作は保持され、十分な最適化が行われる可能性があります (チェックが削除された場合、vmstat はスワッピング負荷時のキュー上のトラフィックを大幅に増加させました)。コメントを更新します。Memcg-v1 の移動 (非推奨): mem_cgroup_move_account() は、延期リストから THP フォリオをチェックおよびキュー解除せずに、folio->memcg_data を変更していたため、スワップアウトのように memcg のリストから破損することがあります。ここでは Refcount がゼロではないため、folio_unqueue_deferred_split() は、修正を検証するために WARN_ON_ONCE でのみ使用できます。これは、早期に実行する必要があります。mem_cgroup_move_charge_pte_range() は、最初に THP の分割を試行します (分割すると、当然キュー解除されます)。それが失敗した場合は、スキップします。理想的ではありませんが、移動チャージがリクエストされたため、khugepaged は後で THP を修正する必要があります。この非推奨のケースのためだけに新しいカスタムのキュー解除コードを必要とするユーザーはいません。87eaceb3faa5 コミットには、ある延期リストから別の延期リストに移動するコードがありました (ただし、refcount が 0 以外の場合の危険性は認識されていませんでした)。ただし、これは 5.6 コミット fac0516b5534 (mm: thp: memcg チャージ移動パスで遅延分割キューを考慮する必要はありません) によって削除されました。PMD マッピングの存在によって、THP が延期リストに存在できないことが保証されると主張されました。上記のとおり、レアケースで誤り、現在では一般的に誤りです。 6.11 へのバックポートは簡単なはずです。早期のバックポートでは、他の _deferred_list の修正や依存関係が含まれるように対応する必要があります。バックポートをどうしても行わなければならないケースはありませんが、コーナーケースを修正できます。(CVE-2024-53079)

Nessus は、ベンダーによって報告されたパッケージの存在に依存していることに注意してください。

ソリューション

現時点で既知の解決策はありません。

参考資料

https://access.redhat.com/security/cve/cve-2024-53079

https://security-tracker.debian.org/tracker/CVE-2024-53079

https://ubuntu.com/security/CVE-2024-53079

プラグインの詳細

深刻度: Medium

ID: 231397

ファイル名: unpatched_CVE_2024_53079.nasl

バージョン: 1.2

タイプ: local

エージェント: unix

ファミリー: Misc.

公開日: 2025/3/6

更新日: 2025/5/9

サポートされているセンサー: Nessus Agent, Nessus

リスク情報

VPR

リスクファクター: Medium

スコア: 4.4

CVSS v2

リスクファクター: Low

基本値: 2.1

現状値: 1.6

ベクトル: CVSS2#AV:L/AC:L/Au:N/C:N/I:P/A:N

CVSS スコアのソース: CVE-2024-53079

CVSS v3

リスクファクター: Medium

基本値: 5.5

現状値: 4.8

ベクトル: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

現状ベクトル: CVSS:3.0/E:U/RL:O/RC:C

脆弱性情報

必要な KB アイテム: Host/local_checks_enabled, Host/cpu, global_settings/vendor_unpatched

エクスプロイトの容易さ: No known exploits are available

脆弱性公開日: 2024/11/19

参照情報

CVE: CVE-2024-53079