製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける有効期限後のメモリの解放の欠如に関する脆弱性
Title LinuxのLinux Kernelにおける有効期限後のメモリの解放の欠如に関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました:sunrpcのcache_releaseにおけるcache_requestメモリリークの修正です。読み取り中にファイルディスクリプタが閉じられた場合(rp-offset != 0)、cache_release()はリクエストのreadersカウントをデクリメントしますが、リクエストを解放すべきかどうかを確認しません。cache_read()では、readersが0になり、かつCACHE_PENDINGがクリアされている場合、cache_requestはキューから削除され、バッファおよびcache_head参照と共に解放されますが、cache_release()にはこのクリーンアップ処理が欠けていました。readersが0のリクエストを解放するもう一つの経路はcache_dequeue()ですが、これはCACHE_PENDINGがセットからクリアに遷移したときのみ実行されます。もしその遷移がreadersが非ゼロの間に起きていた場合、cache_dequeue()はそのリクエストをスキップし、以降の呼び出しでもクリーンアップされません。これを解決するために、cache_release()にcache_read()のクリーンアップロジックを追加しました。readersをデクリメントした後、readersが0かつCACHE_PENDINGがクリアされているかをチェックし、条件を満たせばcache_requestをキューから外して解放します。

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

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

Publication Date April 3, 2026, midnight
Registration Date May 22, 2026, 10:56 a.m.
Last Update May 22, 2026, 10:56 a.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 2.6.12
Linux Kernel 2.6.12.1 以上 5.10.253 未満
Linux Kernel 5.11 以上 5.15.203 未満
Linux Kernel 5.16 以上 6.1.167 未満
Linux Kernel 6.13 以上 6.18.20 未満
Linux Kernel 6.19 以上 6.19.10 未満
Linux Kernel 6.2 以上 6.6.130 未満
Linux Kernel 6.7 以上 6.12.78 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月22日]
  掲載
May 22, 2026, 10:56 a.m.

NVD Vulnerability Information
CVE-2026-31400
Summary

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

sunrpc: fix cache_request leak in cache_release

When a reader's file descriptor is closed while in the middle of reading
a cache_request (rp->offset != 0), cache_release() decrements the
request's readers count but never checks whether it should free the
request.

In cache_read(), when readers drops to 0 and CACHE_PENDING is clear, the
cache_request is removed from the queue and freed along with its buffer
and cache_head reference. cache_release() lacks this cleanup.

The only other path that frees requests with readers == 0 is
cache_dequeue(), but it runs only when CACHE_PENDING transitions from
set to clear. If that transition already happened while readers was
still non-zero, cache_dequeue() will have skipped the request, and no
subsequent call will clean it up.

Add the same cleanup logic from cache_read() to cache_release(): after
decrementing readers, check if it reached 0 with CACHE_PENDING clear,
and if so, dequeue and free the cache_request.

Publication Date April 4, 2026, 1:16 a.m.
Registration Date April 15, 2026, 11:24 a.m.
Last Update April 7, 2026, 10:20 p.m.
Related information, measures and tools
Common Vulnerabilities List