LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
タイトル LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。netfilterのnft_set_pipapoに関して、ガベージコレクションをunlinkフェーズとreclaimフェーズに分割しました。Yiming QianがpipapoセットタイプにおけるUse-after-freeの脆弱性を報告しています。多数の期限切れ要素が存在する場合、コミット時のGCが非プリエンプティブルなコンテキストで非常に長時間実行され、ソフトロックアップ警告やRCUスタールレポート(ローカルサービス拒否)を引き起こす可能性があります。そのため、GCをunlinkフェーズとreclaimフェーズに分割する必要があります。ポインタがスワップされるまで、要素の解放をキューに入れることはできません。期限切れ要素は、データ構造のライブコピーを介してパケットパスおよびユーザースペースのダンプ操作の両方から依然としてアクセス可能です。call_rcu()は保護にならず、call_rcuが発火した後に開始されたダンプ操作や要素の検索は、コミットフェーズがクローンとライブポインタのスワップを行うまで、解放された要素を観察する可能性があります。これは、最近のrbtreeバックエンドのコミット35f83a75529a("netfilter: nft_set_rbtree: don't gc elements on insert")で採用されたアプローチと類似しています。

想定される影響 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年3月25日0:00
登録日 2026年4月27日11:28
最終更新日 2026年4月27日11:28
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 5.11 以上 5.15.203 未満
Linux Kernel 5.16 以上 6.1.167 未満
Linux Kernel 5.6
Linux Kernel 5.6.1 以上 5.10.253 未満
Linux Kernel 6.13 以上 6.18.17 未満
Linux Kernel 6.19 以上 6.19.7 未満
Linux Kernel 6.2 以上 6.6.130 未満
Linux Kernel 6.7 以上 6.12.77 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年04月27日]
  掲載
2026年4月27日11:28

NVD脆弱性情報
CVE-2026-23351
概要

In the Linux kernel, the following vulnerability has been resolved:

netfilter: nft_set_pipapo: split gc into unlink and reclaim phase

Yiming Qian reports Use-after-free in the pipapo set type:
Under a large number of expired elements, commit-time GC can run for a very
long time in a non-preemptible context, triggering soft lockup warnings and
RCU stall reports (local denial of service).

We must split GC in an unlink and a reclaim phase.

We cannot queue elements for freeing until pointers have been swapped.
Expired elements are still exposed to both the packet path and userspace
dumpers via the live copy of the data structure.

call_rcu() does not protect us: dump operations or element lookups starting
after call_rcu has fired can still observe the free'd element, unless the
commit phase has made enough progress to swap the clone and live pointers
before any new reader has picked up the old version.

This a similar approach as done recently for the rbtree backend in commit
35f83a75529a ("netfilter: nft_set_rbtree: don't gc elements on insert").

概要

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:

netfilter: nft_set_pipapo: dividir la recolección de basura en una fase de desvinculación y una fase de recuperación

Yiming Qian informa de un uso después de liberación en el tipo de conjunto pipapo:
Bajo un gran número de elementos caducados, la recolección de basura en tiempo de commit puede ejecutarse durante mucho tiempo en un contexto no preemptivo, lo que desencadena advertencias de soft lockup e informes de bloqueo de RCU (denegación de servicio local).

Debemos dividir la recolección de basura en una fase de desvinculación y una de recuperación.

No podemos poner en cola elementos para su liberación hasta que los punteros hayan sido intercambiados.
Los elementos caducados todavía están expuestos tanto a la ruta de paquetes como a los volcadores del espacio de usuario a través de la copia activa de la estructura de datos.

call_rcu() no nos protege: las operaciones de volcado o las búsquedas de elementos que comienzan después de que call_rcu se haya activado aún pueden observar el elemento liberado, a menos que la fase de commit haya progresado lo suficiente como para intercambiar los punteros de clonación y activos antes de que cualquier nuevo lector haya tomado la versión antigua.

Este es un enfoque similar al realizado recientemente para el backend rbtree en el commit 35f83a75529a ('netfilter: nft_set_rbtree: no recolectar elementos en la inserción').

公表日 2026年3月25日20:16
登録日 2026年4月27日12:18
最終更新日 2026年4月25日3:02
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.6.1 5.10.253
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 5.15.203
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 6.1.167
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 6.6.130
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 6.12.77
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 6.18.17
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 6.19.7
cpe:2.3:o:linux:linux_kernel:5.6:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
関連情報、対策とツール
共通脆弱性一覧