LinuxのLinux Kernelにおける不特定の脆弱性
タイトル LinuxのLinux Kernelにおける不特定の脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。tracepoint_add_func()内のfunc_add()失敗時にbalance_regfunc()の動作に問題がありました。トレースポイントが0から1へ遷移する際、tracepoint_add_func()は新しいプローブをfunc_add()経由でインストールしようとする前に、サブシステムのext-regfunc()を呼び出します。もしfunc_add()が失敗した場合(例えば、allocate_probes()がメモリ不足のため新しいプローブ配列を割り当てられず-ENOMEMを返す場合など)、対応するext-unregfunc()を呼び出さずにエラーを返すため、regfunc()の副作用が残り、インストールされたプローブがない状態が発生します。特にシステムコールトレースポイントでは問題が深刻です。syscall_regfunc()はsys_tracepoint_refcountを増加させ、すべてのタスクにSYSCALL_TRACEPOINTを設定します。失敗が生じた場合、参照カウントは0でない値に固定され、消費者がいないにもかかわらず、すべてのタスクがシステムコールのトレースエントリおよびエグジットのオーバーヘッドを継続的に負担し、再起動するまで解消されません。他のregfunc()/unregfunc()ペアを提供するサブシステムも同様に持続的な状態を示します。既存の1から0へのクリーンアップ処理をミラーリングし、func_add()のエラーパスでext-unregfunc()を呼び出すように修正しました。この呼び出しは登録時に使われる条件で制御されているため、登録と解除が対称となります。

想定される影響 ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
対策

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

公表日 2026年5月28日0:00
登録日 2026年6月11日16:22
最終更新日 2026年6月11日16:22
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 4.10 以上 6.6.140 未満
Linux Kernel 6.13 以上 6.18.30 未満
Linux Kernel 6.19 以上 7.0.7 未満
Linux Kernel 6.7 以上 6.12.88 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年06月11日]
  掲載
2026年6月11日16:22

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

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

tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func()

When a tracepoint goes through the 0 -> 1 transition, tracepoint_add_func()
invokes the subsystem's ext->regfunc() before attempting to install the
new probe via func_add(). If func_add() then fails (for example, when
allocate_probes() cannot allocate a new probe array under memory pressure
and returns -ENOMEM), the function returns the error without calling the
matching ext->unregfunc(), leaving the side effects of regfunc() behind
with no installed probe to justify them.

For syscall tracepoints this is particularly unpleasant: syscall_regfunc()
bumps sys_tracepoint_refcount and sets SYSCALL_TRACEPOINT on every task.
After a leaked failure, the refcount is stuck at a non-zero value with no
consumer, and every task continues paying the syscall trace entry/exit
overhead until reboot. Other subsystems providing regfunc()/unregfunc()
pairs exhibit similarly scoped persistent state.

Mirror the existing 1 -> 0 cleanup and call ext->unregfunc() in the
func_add() error path, gated on the same condition used there so the
unwind is symmetric with the registration.

公表日 2026年5月28日19:16
登録日 2026年5月29日4:13
最終更新日 2026年5月28日22:44
関連情報、対策とツール
共通脆弱性一覧