109 Star 72 Fork 297

src-openEuler/kernel

 / 详情

CVE-2024-38613

已完成
CVE和安全问题 拥有者
创建于  
2024-06-20 00:15

一、漏洞信息
漏洞编号:CVE-2024-38613
漏洞归属组件:kernel
漏洞归属的版本:4.19.140,4.19.194,4.19.90,5.10.0,6.1.0,6.1.14,6.1.19,6.1.5,6.1.6,6.1.8,6.4.0,6.6.0
CVSS V2.0分值:
BaseScore:0.0 None
Vector:CVSS:2.0/
漏洞简述:
In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from prev to next tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both prev and next already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the next thread s status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ( m68k: split ret_from_fork(), simplify kernel_thread() )but I haven t done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the spinlock recursion warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).
漏洞公开时间:2024-06-19 22:15:21
漏洞创建时间:2024-06-19 16:15:48
漏洞详情参考链接:
https://nvd.nist.gov/vuln/detail/CVE-2024-38613

更多参考(点击展开)
参考来源 参考链接 来源链接
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/0d9ae1253535f6e85a016e09c25ecbe6f7f59ef0
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/2a8d1d95302c7d52c6ac8fa5cb4a6948ae0d3a14
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/4eeffecc8e3cce25bb559502c2fd94a948bcde82
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/5213cc01d0464c011fdc09f318705603ed3a746b
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/77b2b67a0f8bce260c53907e5749d61466d90c87
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/95f00caf767b5968c2c51083957b38be4748a78a
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/da89ce46f02470ef08f0f580755d14d547da59ed
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/f1d4274a84c069be0f6098ab10c3443fc1f7134c
416baaa9-dc9f-4396-8d5f-8c081fb06d67 https://git.kernel.org/stable/c/f3baf0f4f92af32943ebf27b960e0552c6c082fd
suse_bugzilla http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2024-38613 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2024/CVE-2024-38613.mbox https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/2a8d1d95302c7d52c6ac8fa5cb4a6948ae0d3a14 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/5213cc01d0464c011fdc09f318705603ed3a746b https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/4eeffecc8e3cce25bb559502c2fd94a948bcde82 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/77b2b67a0f8bce260c53907e5749d61466d90c87 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/0d9ae1253535f6e85a016e09c25ecbe6f7f59ef0 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/f3baf0f4f92af32943ebf27b960e0552c6c082fd https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/f1d4274a84c069be0f6098ab10c3443fc1f7134c https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/95f00caf767b5968c2c51083957b38be4748a78a https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://git.kernel.org/stable/c/da89ce46f02470ef08f0f580755d14d547da59ed https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://www.cve.org/CVERecord?id=CVE-2024-38613 https://bugzilla.suse.com/show_bug.cgi?id=1226753
suse_bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=2293350 https://bugzilla.suse.com/show_bug.cgi?id=1226753
redhat_bugzilla https://lore.kernel.org/linux-cve-announce/2024061922-CVE-2024-38613-abc6@gregkh/T https://bugzilla.redhat.com/show_bug.cgi?id=2293350
ubuntu https://www.cve.org/CVERecord?id=CVE-2024-38613 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/linus/da89ce46f02470ef08f0f580755d14d547da59ed (6.10-rc1) https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/2a8d1d95302c7d52c6ac8fa5cb4a6948ae0d3a14 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/5213cc01d0464c011fdc09f318705603ed3a746b https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/4eeffecc8e3cce25bb559502c2fd94a948bcde82 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/77b2b67a0f8bce260c53907e5749d61466d90c87 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/0d9ae1253535f6e85a016e09c25ecbe6f7f59ef0 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/f3baf0f4f92af32943ebf27b960e0552c6c082fd https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/f1d4274a84c069be0f6098ab10c3443fc1f7134c https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/95f00caf767b5968c2c51083957b38be4748a78a https://ubuntu.com/security/CVE-2024-38613
ubuntu https://git.kernel.org/stable/c/da89ce46f02470ef08f0f580755d14d547da59ed https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6949-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6951-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6952-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6953-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6955-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6949-2 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6952-2 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6951-2 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6951-3 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6951-4 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://ubuntu.com/security/notices/USN-6979-1 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://nvd.nist.gov/vuln/detail/CVE-2024-38613 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://launchpad.net/bugs/cve/CVE-2024-38613 https://ubuntu.com/security/CVE-2024-38613
ubuntu https://security-tracker.debian.org/tracker/CVE-2024-38613 https://ubuntu.com/security/CVE-2024-38613
debian https://security-tracker.debian.org/tracker/CVE-2024-38613
mageia http://advisories.mageia.org/MGASA-2024-0263.html
amazon_linux_explore https://access.redhat.com/security/cve/CVE-2024-38613 https://explore.alas.aws.amazon.com/CVE-2024-38613.html
amazon_linux_explore https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-38613 https://explore.alas.aws.amazon.com/CVE-2024-38613.html

漏洞分析指导链接:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
漏洞数据来源:
openBrain开源漏洞感知系统
漏洞补丁信息:

详情(点击展开)
影响的包 修复版本 修复补丁 问题引入补丁 来源
linux https://git.kernel.org/linus/da89ce46f02470ef08f0f580755d14d547da59ed https://git.kernel.org/linus/533e6903bea0440816a0f517b0845ccea4cc7917 ubuntu

二、漏洞分析结构反馈
影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
openEuler评分:
4.1
Vector:CVSS:2.0/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4(4.19.90):受影响
2.openEuler-22.03-LTS-SP1(5.10.0):受影响
3.openEuler-22.03-LTS-SP3(5.10.0):受影响
4.openEuler-22.03-LTS-SP4(5.10.0):受影响
5.openEuler-24.03-LTS(6.6.0):受影响
6.master(6.6.0):不受影响
7.openEuler-24.03-LTS-Next(6.6.0):不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4(4.19.90):否
2.openEuler-22.03-LTS-SP1(5.10.0):否
3.openEuler-22.03-LTS-SP3(5.10.0):否
4.master(6.6.0):否
5.openEuler-24.03-LTS(6.6.0):否
6.openEuler-24.03-LTS-Next(6.6.0):否
7.openEuler-22.03-LTS-SP4(5.10.0):否

三、漏洞修复
安全公告链接:https://www.openeuler.org/zh/security/safety-bulletin/detail/?id=openEuler-SA-2024-2258

评论 (43)

Hi openeuler-ci-bot, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers.

openeuler-ci-bot 创建了CVE和安全问题 11个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
11个月前
展开全部操作日志

@yangyingliang ,@jiaoff ,@guohaocs2c ,@hanjun-guo ,@woqidaideshi ,@newbeats ,@zhangyi089 ,@colyli ,@thundertown ,@htforge ,@chiqijun ,@lengchao ,@zhujianwei001 ,@kylin-mayukun ,@wangxiongfeng ,@wkfxxx ,@SuperSix173 ,@jentlestea ,@oskernel0719 ,@gasonchen
issue处理注意事项:
1. 当前issue受影响的分支提交pr时, 须在pr描述中填写当前issue编号进行关联, 否则无法关闭当前issue;
2. 模板内容需要填写完整, 无论是受影响或者不受影响都需要填写完整内容,未引入的分支不需要填写, 否则无法关闭当前issue;
3. 以下为模板中需要填写完整的内容, 请复制到评论区回复, 注: 内容的标题名称(影响性分析说明, openEuler评分, 受影响版本排查(受影响/不受影响), 修复是否涉及abi变化(是/否))不能省略,省略后cve-manager将无法正常解析填写内容.


影响性分析说明:

openEuler评分: (评分和向量)

受影响版本排查(受影响/不受影响):
1.master(6.1.0):
2.openEuler-20.03-LTS-SP4(4.19.90):
3.openEuler-22.03-LTS-SP1(5.10.0):
4.openEuler-22.03-LTS-SP3(5.10.0):
5.openEuler-22.03-LTS-SP4(5.10.0):
6.openEuler-24.03-LTS(6.6.0):
7.openEuler-24.03-LTS-Next(6.6.0):

修复是否涉及abi变化(是/否):
1.master(6.1.0):
2.openEuler-20.03-LTS-SP4(4.19.90):
3.openEuler-22.03-LTS-SP1(5.10.0):
4.openEuler-22.03-LTS-SP3(5.10.0):
5.openEuler-22.03-LTS-SP4(5.10.0):
6.openEuler-24.03-LTS(6.6.0):
7.openEuler-24.03-LTS-Next(6.6.0):


issue处理具体操作请参考:
https://gitee.com/openeuler/cve-manager/blob/master/cve-vulner-manager/doc/md/manual.md
pr关联issue具体操作请参考:
https://gitee.com/help/articles/4142

openeuler-ci-bot 添加了
 
sig/Kernel
标签
11个月前
参考网址 关联pr 状态 补丁链接
https://nvd.nist.gov/vuln/detail/CVE-2024-38613NoneNonehttps://git.kernel.org/stable/c/f3baf0f4f92af32943ebf27b960e0552c6c082fd
https://git.kernel.org/stable/c/f1d4274a84c069be0f6098ab10c3443fc1f7134c
https://git.kernel.org/stable/c/95f00caf767b5968c2c51083957b38be4748a78a
https://git.kernel.org/stable/c/da89ce46f02470ef08f0f580755d14d547da59ed
https://git.kernel.org/stable/c/0d9ae1253535f6e85a016e09c25ecbe6f7f59ef0
https://git.kernel.org/stable/c/5213cc01d0464c011fdc09f318705603ed3a746b
https://git.kernel.org/stable/c/77b2b67a0f8bce260c53907e5749d61466d90c87
https://git.kernel.org/stable/c/4eeffecc8e3cce25bb559502c2fd94a948bcde82
https://git.kernel.org/stable/c/2a8d1d95302c7d52c6ac8fa5cb4a6948ae0d3a14
https://ubuntu.com/security/CVE-2024-38613NoneNonehttps://discourse.ubuntu.com/c/ubuntu-pro
https://www.opencve.io/cve/CVE-2024-38613NoneNonehttps://git.kernel.org/stable/c/f3baf0f4f92af32943ebf27b960e0552c6c082fd
https://git.kernel.org/stable/c/f1d4274a84c069be0f6098ab10c3443fc1f7134c
https://git.kernel.org/stable/c/95f00caf767b5968c2c51083957b38be4748a78a
https://git.kernel.org/stable/c/da89ce46f02470ef08f0f580755d14d547da59ed
https://git.kernel.org/stable/c/0d9ae1253535f6e85a016e09c25ecbe6f7f59ef0
https://git.kernel.org/stable/c/5213cc01d0464c011fdc09f318705603ed3a746b
https://git.kernel.org/stable/c/77b2b67a0f8bce260c53907e5749d61466d90c87
https://git.kernel.org/stable/c/4eeffecc8e3cce25bb559502c2fd94a948bcde82
https://git.kernel.org/stable/c/2a8d1d95302c7d52c6ac8fa5cb4a6948ae0d3a14
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2024-38613
https://security-tracker.debian.org/tracker/CVE-2024-38613NoneNonehttps://git.kernel.org/linus/da89ce46f02470ef08f0f580755d14d547da59ed

说明:补丁链接仅供初步排查参考,实际可用性请人工再次确认,补丁下载验证可使用CVE补丁工具
若补丁不准确,烦请在此issue下评论 '/report-patch 参考网址 补丁链接1,补丁链接2' 反馈正确信息,便于我们不断优化工具,不胜感激。
如 /report-patch https://security-tracker.debian.org/tracker/CVE-2021-3997 https://github.com/systemd/systemd/commit/5b1cf7a9be37e20133c0208005274ce4a5b5c6a1

openeuler-ci-bot 修改了描述 11个月前
openeuler-ci-bot 修改了描述 11个月前
openeuler-ci-bot 修改了描述 11个月前
openeuler-ci-bot 修改了描述 11个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
0
CVSS: 3.0/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1:受影响
2.openEuler-20.03-LTS-SP4:受影响
3.openEuler-22.03-LTS:不受影响
4.openEuler-22.03-LTS-SP1:受影响
5.openEuler-22.03-LTS-SP2:不受影响
6.openEuler-22.03-LTS-SP3:受影响
7.openEuler-22.03-LTS-SP4:不受影响
8.master(6.1.0):不受影响
9.openEuler-22.03-LTS-Next:不受影响
10.openEuler-24.03-LTS:受影响
11.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(4.19.90):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS:否
4.openEuler-22.03-LTS-SP1:否
5.openEuler-22.03-LTS-SP2:否
6.openEuler-22.03-LTS-SP3:否
7.master(6.1.0):否
8.openEuler-22.03-LTS-Next:否
9.openEuler-24.03-LTS:否
10.openEuler-24.03-LTS-Next:否
11.openEuler-22.03-LTS-SP4:否

openeuler-ci-bot 修改了描述 10个月前

@zhixiuzhou 2.openEulerScore=> 没有填写或正确填写(0-10)

openeuler-ci-bot 修改了描述 10个月前
openeuler-ci-bot 修改了描述 10个月前
郭梦琪 任务状态待办的 修改为已完成 10个月前

@guo-mengqi 请完成以下操作:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
待分析 2.openEulerScore 2.openEulerScore=> 没有填写或正确填写(0-10)
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP1:受影响,openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-24.03-LTS:受影响,openEuler-24.03-LTS-Next:受影响,openEuler-22.03-LTS:不受影响,openEuler-22.03-LTS-SP2:不受影响,openEuler-22.03-LTS-SP4:不受影响,master:不受影响,openEuler-22.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP1:否,openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP2:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-22.03-LTS-Next:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性,待分析内容请填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 任务状态已完成 修改为待办的 10个月前
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 修改了描述 10个月前
郭梦琪 任务状态待办的 修改为已完成 10个月前
openeuler-ci-bot 任务状态已完成 修改为待办的 10个月前

@guo-mengqi 请完成以下操作:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
待分析 2.openEulerScore 2.openEulerScore=> 没有填写或正确填写(0-10)
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP1:受影响,openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-24.03-LTS:受影响,openEuler-24.03-LTS-Next:受影响,openEuler-22.03-LTS:不受影响,openEuler-22.03-LTS-SP2:不受影响,openEuler-22.03-LTS-SP4:不受影响,master:不受影响,openEuler-22.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP1:否,openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP2:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-22.03-LTS-Next:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性,待分析内容请填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 修改了描述 10个月前
郭梦琪 任务状态待办的 修改为已完成 10个月前

@guo-mengqi 请完成以下操作:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
待分析 2.openEulerScore 2.openEulerScore=> 没有填写或正确填写(0-10)
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP1:受影响,openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-24.03-LTS:受影响,openEuler-24.03-LTS-Next:受影响,openEuler-22.03-LTS:不受影响,openEuler-22.03-LTS-SP2:不受影响,openEuler-22.03-LTS-SP4:不受影响,master:不受影响,openEuler-22.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP1:否,openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP2:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-22.03-LTS-Next:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性,待分析内容请填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 任务状态已完成 修改为待办的 10个月前
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 修改了描述 10个月前
郭梦琪 任务状态待办的 修改为已完成 10个月前
openeuler-ci-bot 任务状态已完成 修改为待办的 10个月前

@guo-mengqi 请完成以下操作:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
待分析 2.openEulerScore 2.openEulerScore=> 没有填写或正确填写(0-10)
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP1:受影响,openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-24.03-LTS:受影响,openEuler-24.03-LTS-Next:受影响,openEuler-22.03-LTS:不受影响,openEuler-22.03-LTS-SP2:不受影响,openEuler-22.03-LTS-SP4:不受影响,master:不受影响,openEuler-22.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP1:否,openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP2:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-22.03-LTS-Next:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性,待分析内容请填写完整,否则将无法关闭当前issue.

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 修改了描述 10个月前
郭梦琪 任务状态待办的 修改为已完成 10个月前
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
10个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 添加了
 
CVE/FIXED
标签
10个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
10个月前
openeuler-ci-bot 修改了描述 10个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
0
CVSS: 3.0/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1:受影响
2.openEuler-20.03-LTS-SP4:受影响
3.openEuler-22.03-LTS:不受影响
4.openEuler-22.03-LTS-SP1:受影响
5.openEuler-22.03-LTS-SP2:不受影响
6.openEuler-22.03-LTS-SP3:受影响
7.openEuler-22.03-LTS-SP4:不受影响
8.master(6.1.0):不受影响
9.openEuler-22.03-LTS-Next:不受影响
10.openEuler-24.03-LTS:受影响
11.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(4.19.90):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS:否
4.openEuler-22.03-LTS-SP1:否
5.openEuler-22.03-LTS-SP2:否
6.openEuler-22.03-LTS-SP3:否
7.master(6.1.0):否
8.openEuler-22.03-LTS-Next:否
9.openEuler-24.03-LTS:否
10.openEuler-24.03-LTS-Next:否
11.openEuler-22.03-LTS-SP4:否

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
0
CVSS: 3.0/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:N

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP1:受影响
2.openEuler-20.03-LTS-SP4:受影响
3.openEuler-22.03-LTS:不受影响
4.openEuler-22.03-LTS-SP1:受影响
5.openEuler-22.03-LTS-SP2:不受影响
6.openEuler-22.03-LTS-SP3:受影响
7.openEuler-22.03-LTS-SP4:不受影响
8.master(6.1.0):不受影响
9.openEuler-22.03-LTS-Next:不受影响
10.openEuler-24.03-LTS:受影响
11.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP1(4.19.90):否
2.openEuler-20.03-LTS-SP4:否
3.openEuler-22.03-LTS:否
4.openEuler-22.03-LTS-SP1:否
5.openEuler-22.03-LTS-SP2:否
6.openEuler-22.03-LTS-SP3:否
7.master(6.1.0):否
8.openEuler-22.03-LTS-Next:否
9.openEuler-24.03-LTS:否
10.openEuler-24.03-LTS-Next:否
11.openEuler-22.03-LTS-SP4:否

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

郭梦琪 任务状态已完成 修改为待办的 10个月前

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

郭梦琪 任务状态待办的 修改为已完成 10个月前

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

郭梦琪 任务状态已完成 修改为待办的 10个月前

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

openeuler-ci-bot 修改了描述 10个月前

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

this leaves enough of a race for the 'spinlock recursion' warning to
still be observed.
Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

openeuler-ci-bot 修改了描述 10个月前

@ 经过 cve-manager 解析, 已分析的内容如下表所示:

状态 需分析 内容
已分析 1.影响性分析说明 Reserved.
已分析 2.openEulerScore 3.9
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-24.03-LTS:受影响,openEuler-22.03-LTS-SP4:不受影响,master:不受影响,openEuler-24.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

CVE-2024-38613

影响性分析说明:
Reserved.

openEuler评分:(评分和向量)
3.9
CVSS: 3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

郭梦琪 任务状态待办的 修改为已完成 10个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
3.9
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:不受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

openeuler-ci-bot 修改了描述 10个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
4.4
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
4.4
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

郭梦琪 任务状态已完成 修改为待办的 8个月前
openeuler-ci-bot 移除了
 
CVE/FIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

openEuler评分:(评分和向量)
4.4
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

===========================================================

openeuler-ci-bot 修改了描述 8个月前

@ 经过 cve-manager 解析, 已分析的内容如下表所示:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).
已分析 2.openEulerScore 4.4
已分析 3.openEulerVector AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-22.03-LTS-SP4:受影响,openEuler-24.03-LTS:受影响,master:不受影响,openEuler-24.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.

ci-robot 通过合并 Pull Request !11054: m68k: Fix spinlock race in kernel thread creation任务状态待办的 修改为已完成 8个月前
openeuler-ci-bot 任务状态已完成 修改为待办的 8个月前
openeuler-ci-bot 修改了描述 8个月前

@gatieme ,@xiexiuqi ,@yangyingliang ,@pi3orama ,@jiaoff ,@ci-robot
关闭issue前,需要将受影响的分支在合并pr时关联上当前issue编号: #IA6SFZ
受影响分支: openEuler-22.03-LTS-SP1/openEuler-22.03-LTS-SP3/openEuler-22.03-LTS-SP4
具体操作参考: https://gitee.com/help/articles/4142

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前
ci-robot 通过合并 Pull Request !11053: m68k: Fix spinlock race in kernel thread creation任务状态待办的 修改为已完成 8个月前

@gatieme ,@xiexiuqi ,@yangyingliang ,@pi3orama ,@jiaoff ,@ci-robot
关闭issue前,需要将受影响的分支在合并pr时关联上当前issue编号: #IA6SFZ
受影响分支: openEuler-22.03-LTS-SP3/openEuler-22.03-LTS-SP4
具体操作参考: https://gitee.com/help/articles/4142

openeuler-ci-bot 任务状态已完成 修改为待办的 8个月前
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
4.1
CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

@ 经过 cve-manager 解析, 已分析的内容如下表所示:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
已分析 2.openEulerScore 4.1
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-22.03-LTS-SP4:受影响,openEuler-24.03-LTS:受影响,master:不受影响,openEuler-24.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.

openeuler-ci-bot 修改了描述 8个月前

CVE-2024-38613

影响性分析说明:
In the Linux kernel, the following vulnerability has been resolved:

m68k: Fix spinlock race in kernel thread creation

Context switching does take care to retain the correct lock owner across
the switch from 'prev' to 'next' tasks. This does rely on interrupts
remaining disabled for the entire duration of the switch.

This condition is guaranteed for normal process creation and context
switching between already running processes, because both 'prev' and
'next' already have interrupts disabled in their saved copies of the
status register.

The situation is different for newly created kernel threads. The status
register is set to PS_S in copy_thread(), which does leave the IPL at 0.
Upon restoring the 'next' thread's status register in switch_to() aka
resume(), interrupts then become enabled prematurely. resume() then
returns via ret_from_kernel_thread() and schedule_tail() where run queue
lock is released (see finish_task_switch() and finish_lock_switch()).

A timer interrupt calling scheduler_tick() before the lock is released
in finish_task_switch() will find the lock already taken, with the
current task as lock owner. This causes a spinlock recursion warning as
reported by Guenter Roeck.

As far as I can ascertain, this race has been opened in commit
533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")
but I haven't done a detailed study of kernel history so it may well
predate that commit.

Interrupts cannot be disabled in the saved status register copy for
kernel threads (init will complain about interrupts disabled when
finally starting user space). Disable interrupts temporarily when
switching the tasks' register sets in resume().

Note that a simple oriw 0x700,%sr after restoring sr is not enough here

  • this leaves enough of a race for the 'spinlock recursion' warning to
    still be observed.

Tested on ARAnyM and qemu (Quadra 800 emulation).

The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.

openEuler评分:(评分和向量)
4.1
CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H

受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4:受影响
2.openEuler-22.03-LTS-SP1:受影响
3.openEuler-22.03-LTS-SP3:受影响
4.openEuler-22.03-LTS-SP4:受影响
5.master(6.1.0):不受影响
6.openEuler-24.03-LTS:受影响
7.openEuler-24.03-LTS-Next:不受影响

修复是否涉及abi变化(是/否):
1.openEuler-20.03-LTS-SP4:否
2.openEuler-22.03-LTS-SP1:否
3.openEuler-22.03-LTS-SP3:否
4.master(6.1.0):否
5.openEuler-24.03-LTS:否
6.openEuler-24.03-LTS-Next:否
7.openEuler-22.03-LTS-SP4:否

@ 经过 cve-manager 解析, 已分析的内容如下表所示:

状态 需分析 内容
已分析 1.影响性分析说明 In the Linux kernel, the following vulnerability has been resolved:m68k: Fix spinlock race in kernel thread creationContext switching does take care to retain the correct lock owner acrossthe switch from 'prev' to 'next' tasks. This does rely on interruptsremaining disabled for the entire duration of the switch.This condition is guaranteed for normal process creation and contextswitching between already running processes, because both 'prev' and'next' already have interrupts disabled in their saved copies of thestatus register.The situation is different for newly created kernel threads. The statusregister is set to PS_S in copy_thread(), which does leave the IPL at 0.Upon restoring the 'next' thread's status register in switch_to() akaresume(), interrupts then become enabled prematurely. resume() thenreturns via ret_from_kernel_thread() and schedule_tail() where run queuelock is released (see finish_task_switch() and finish_lock_switch()).A timer interrupt calling scheduler_tick() before the lock is releasedin finish_task_switch() will find the lock already taken, with thecurrent task as lock owner. This causes a spinlock recursion warning asreported by Guenter Roeck.As far as I can ascertain, this race has been opened in commit533e6903bea0 ("m68k: split ret_from_fork(), simplify kernel_thread()")but I haven't done a detailed study of kernel history so it may wellpredate that commit.Interrupts cannot be disabled in the saved status register copy forkernel threads (init will complain about interrupts disabled whenfinally starting user space). Disable interrupts temporarily whenswitching the tasks' register sets in resume().Note that a simple oriw 0x700,%sr after restoring sr is not enough here- this leaves enough of a race for the 'spinlock recursion' warning tostill be observed.Tested on ARAnyM and qemu (Quadra 800 emulation).The Linux kernel CVE team has assigned CVE-2024-38613 to this issue.
已分析 2.openEulerScore 4.1
已分析 3.openEulerVector AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
已分析 4.受影响版本排查 openEuler-20.03-LTS-SP4:受影响,openEuler-22.03-LTS-SP1:受影响,openEuler-22.03-LTS-SP3:受影响,openEuler-22.03-LTS-SP4:受影响,openEuler-24.03-LTS:受影响,master:不受影响,openEuler-24.03-LTS-Next:不受影响
已分析 5.修复是否涉及abi变化 openEuler-20.03-LTS-SP4:否,openEuler-22.03-LTS-SP1:否,openEuler-22.03-LTS-SP3:否,master:否,openEuler-24.03-LTS:否,openEuler-24.03-LTS-Next:否,openEuler-22.03-LTS-SP4:否

请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.

Li Nan 通过合并 Pull Request !1724: release 5.10.0-136.91.0任务状态待办的 修改为已完成 8个月前
openeuler-ci-bot 任务状态已完成 修改为待办的 8个月前
openeuler-ci-bot 修改了描述 8个月前

@gatieme ,@xiexiuqi ,@yangyingliang ,@pi3orama ,@jiaoff ,@linan888
关闭issue前,需要将受影响的分支在合并pr时关联上当前issue编号: #IA6SFZ
受影响分支: openEuler-22.03-LTS-SP3/openEuler-22.03-LTS-SP4
具体操作参考: https://gitee.com/help/articles/4142

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前
Li Nan 通过合并 Pull Request !1725: release 5.10.0-225.0.0任务状态待办的 修改为已完成 8个月前
openeuler-ci-bot 任务状态已完成 修改为待办的 8个月前

@gatieme ,@xiexiuqi ,@yangyingliang ,@pi3orama ,@jiaoff ,@linan888
关闭issue前,需要将受影响的分支在合并pr时关联上当前issue编号: #IA6SFZ
受影响分支: openEuler-22.03-LTS-SP4
具体操作参考: https://gitee.com/help/articles/4142

openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前
Li Nan 通过合并 Pull Request !1726: release 5.10.0-225.0.0任务状态待办的 修改为已完成 8个月前
openeuler-ci-bot 移除了
 
CVE/UNFIXED
标签
8个月前
openeuler-ci-bot 移除了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 添加了
 
CVE/FIXED
标签
8个月前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
8个月前
openeuler-ci-bot 修改了描述 8个月前
openeuler-ci-bot 修改了描述 7个月前

登录 后才可以发表评论

状态
负责人
项目
预计工期 (小时)
开始日期   -   截止日期
-
置顶选项
优先级
分支
参与者(4)
5329419 openeuler ci bot 1632792936 hulk-robot-zhixiuzhou 郭梦琪-guo-mengqi weiwei123-weiwei123444
1
https://gitee.com/src-openeuler/kernel.git
git@gitee.com:src-openeuler/kernel.git
src-openeuler
kernel
kernel

搜索帮助