製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける二重解放に関する脆弱性
Title LinuxのLinux Kernelにおける二重解放に関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。net: hns3でのtx spareバッファの二重解放問題に対する修正です。hns3_set_ringparam()では、ロールバック用にリング構造の一時コピー(tmp_rings)が作成されます。しかし、元のリングハンドル内のtx_spareポインタが古いバックアップメモリを指したまま誤って残されていました。後に、hns3_init_all_ring()のセットアップ中にメモリ割り当てが失敗した場合、エラーパスは新たに割り当てられたすべてのリングを解放しようとします。tx_spareが古い(NULLでない)バックアップポインタを保持しているため、新しいバッファと誤認されて誤って解放され、バックアップメモリの二重解放が発生していました。根本的な原因は、tx_spareフィールドがtmp_ringsに値が保存された後もクリアされず、ダングリングポインタが残っていたことです。新しいtx_spareの作成に失敗した場合、元のリング構造内のtx_spareをNULLに設定することでこれを修正しました。これにより、エラー時のクリーンアップパスは本当に新たに割り当てられたバッファのみを解放するようになりました。

Possible impacts ・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 
Solution

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

Publication Date May 27, 2026, midnight
Registration Date June 26, 2026, 11:59 a.m.
Last Update June 26, 2026, 11:59 a.m.
CVSS3.0 : 重要
Score 7.8
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected System
Linux
Linux Kernel 5.14 以上 5.15.202 未満
Linux Kernel 5.16 以上 6.1.165 未満
Linux Kernel 6.13 以上 6.18.14 未満
Linux Kernel 6.19 以上 6.19.4 未満
Linux Kernel 6.2 以上 6.6.128 未満
Linux Kernel 6.7 以上 6.12.75 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月26日]
  掲載
June 26, 2026, 11:59 a.m.

NVD Vulnerability Information
CVE-2026-45891
Summary

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

net: hns3: fix double free issue for tx spare buffer

In hns3_set_ringparam(), a temporary copy (tmp_rings) of the ring structure
is created for rollback. However, the tx_spare pointer in the original
ring handle is incorrectly left pointing to the old backup memory.

Later, if memory allocation fails in hns3_init_all_ring() during the setup,
the error path attempts to free all newly allocated rings. Since tx_spare
contains a stale (non-NULL) pointer from the backup, it is mistaken for
a newly allocated buffer and is erroneously freed, leading to a double-free
of the backup memory.

The root cause is that the tx_spare field was not cleared after its value
was saved in tmp_rings, leaving a dangling pointer.

Fix this by setting tx_spare to NULL in the original ring structure
when the creation of the new `tx_spare` fails. This ensures the
error cleanup path only frees genuinely newly allocated buffers.

Publication Date May 27, 2026, 11:17 p.m.
Registration Date May 28, 2026, 4:11 a.m.
Last Update May 27, 2026, 11:48 p.m.
Related information, measures and tools
Common Vulnerabilities List