製品・ソフトウェアに関する情報
Debian等の複数ベンダの製品における不特定の脆弱性
Title Debian等の複数ベンダの製品における不特定の脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。riscv: processに関するカーネルgpリークの問題です。childregsはユーザコンテキストで新しいスレッドに対して有効なレジスタを表します。カーネルスレッドの場合、childregs-gpはswitch_toによってカーネルgpに触れられないため、使用されません。ユーザモードヘルパの場合、gpの値はexecve後やその他の手段によってユーザ空間で観測される可能性があります。[メールスレッドより] "/* Kernel thread */"というコメントはやや不正確で、ユーザモードヘルパスレッドにも使われます。これらのスレッドはユーザプロセス(例:/sbin/initや/proc/sys/kernel/core_patternがパイプの場合)をexecします。このようなスレッドはPF_KTHREADが設定されておらず、exec前でもptraceの対象として有効です。childregsはsyscall実行中のユーザコンテキストであり、少なくとも5通りの方法でユーザ空間から観測可能です。1. kernel_execveは現在整数レジスタをクリアしないため、PID 1やカーネルによって起動された他のユーザプロセスの開始時レジスタ状態は、spがユーザスタック、gpがカーネルの__global_pointer$、その他の整数レジスタはパッチコメント内のmemsetでゼロクリアされています。これはバグですが、本パッチで対処した問題を利用する唯一の方法とは考えにくいです。2. ptrace(PTRACE_GETREGSET): ptraceはexec前のユーザモードヘルパスレッドにPTRACE_ATTACH可能ですが、SIGSTOPの送信を要し、これはユーザ・カーネル境界でのみ発生可能です。3. /proc/*/task/*/syscall: exec完了前のユーザモードヘルパのpt_regsを問題なく読み取れますが、gpは返されるレジスタの一つではありません。4. PERF_SAMPLE_REGS_USER: LOCKDOWN_PERFは通常PERF_SAMPLE_REGS_INTR経由のカーネルアドレスアクセスを防ぎますが、本バグによりPERF_SAMPLE_REGS_USER経由でもカーネルアドレスが露出しました。PERF_SAMPLE_REGS_USERはLOCKDOWN_PERF下で許可されています。エクスプロイトコードは試みていません。5. 多くのトレーシングインフラはユーザレジスタへのアクセスを許可していますが、ユーザレジスタへのアクセスがカーネルレジスタへのアクセスを許可しない形で可能かどうかは未調査です。

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

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。

Publication Date May 19, 2024, midnight
Registration Date Jan. 27, 2026, 5:38 p.m.
Last Update Jan. 27, 2026, 5:38 p.m.
CVSS3.0 : 重要
Score 7.1
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
Affected System
Debian
Debian GNU/Linux 10.0
Linux
Linux Kernel 4.15 以上 5.10.216 未満
Linux Kernel 5.11 以上 5.15.154 未満
Linux Kernel 5.16 以上 6.1.85 未満
Linux Kernel 6.2 以上 6.6.26 未満
Linux Kernel 6.7 以上 6.8.5 未満
Linux Kernel 6.9
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
Change Log
No Changed Details Date of change
1 [2026年01月27日]
  掲載
Jan. 27, 2026, 5:38 p.m.

NVD Vulnerability Information
CVE-2024-35871
Summary

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

riscv: process: Fix kernel gp leakage

childregs represents the registers which are active for the new thread
in user context. For a kernel thread, childregs->gp is never used since
the kernel gp is not touched by switch_to. For a user mode helper, the
gp value can be observed in user space after execve or possibly by other
means.

[From the email thread]

The /* Kernel thread */ comment is somewhat inaccurate in that it is also used
for user_mode_helper threads, which exec a user process, e.g. /sbin/init or
when /proc/sys/kernel/core_pattern is a pipe. Such threads do not have
PF_KTHREAD set and are valid targets for ptrace etc. even before they exec.

childregs is the *user* context during syscall execution and it is observable
from userspace in at least five ways:

1. kernel_execve does not currently clear integer registers, so the starting
register state for PID 1 and other user processes started by the kernel has
sp = user stack, gp = kernel __global_pointer$, all other integer registers
zeroed by the memset in the patch comment.

This is a bug in its own right, but I'm unwilling to bet that it is the only
way to exploit the issue addressed by this patch.

2. ptrace(PTRACE_GETREGSET): you can PTRACE_ATTACH to a user_mode_helper thread
before it execs, but ptrace requires SIGSTOP to be delivered which can only
happen at user/kernel boundaries.

3. /proc/*/task/*/syscall: this is perfectly happy to read pt_regs for
user_mode_helpers before the exec completes, but gp is not one of the
registers it returns.

4. PERF_SAMPLE_REGS_USER: LOCKDOWN_PERF normally prevents access to kernel
addresses via PERF_SAMPLE_REGS_INTR, but due to this bug kernel addresses
are also exposed via PERF_SAMPLE_REGS_USER which is permitted under
LOCKDOWN_PERF. I have not attempted to write exploit code.

5. Much of the tracing infrastructure allows access to user registers. I have
not attempted to determine which forms of tracing allow access to user
registers without already allowing access to kernel registers.

Publication Date May 19, 2024, 6:15 p.m.
Registration Date May 19, 2024, 8 p.m.
Last Update Nov. 21, 2024, 6:21 p.m.
Related information, measures and tools
Common Vulnerabilities List