# riscv:uprobes:在构建XOL缓冲区后添加缺少的fence.i
## 概述
在Linux内核中,解决了一个与riscv架构上uprobes相关的漏洞。XOL(execute out-of-line)缓冲区用于单步执行被uprobes替换的指令。然而,在构建XOL缓冲区之后缺少必要的fence.i指令,导致执行了过时或损坏的指令,从而引发错误。
## 影响版本
未具体提及影响的版本,但该问题出现在使用riscv架构且启用uprobes功能的Linux内核中。
## 细节
XOL缓冲区被用来单步执行替换后的指令。RISC-V架构的端口在构造XOL缓冲区后没有正确执行fence.i指令(i$刷新),这可能导致执行过时或损坏的指令。该漏洞在Spacemit K1/X60上运行BPF自测试“test_progs: uprobe_autoattach, attach_probe”时被发现,测试随机崩溃。
## 影响
由于缺少fence.i指令,可能导致执行过时或损坏的指令,引发系统不稳定或崩溃。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
神龙速读:
从这个网页截图中可以获取到以下关于漏洞的关键信息:
- **HTTP状态码**: 503 Service Temporarily Unavailable
- 表示服务器当前无法处理请求,可能是由于过载或维护。
- **Web服务器类型**: nginx
- 显示了使用的Web服务器软件是Nginx。
这些信息可以帮助进一步分析和诊断问题,例如检查Nginx配置、服务器负载情况或后端服务的健康状态。
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
神龙速读:
从这个网页截图中可以获取到以下关于漏洞的关键信息:
- **HTTP状态码**: 503 Service Temporarily Unavailable
- 表示服务器当前无法处理请求,可能是由于过载或维护。
- **Web服务器类型**: nginx
- 显示了使用的Web服务器软件是Nginx。
这些信息可以帮助进一步分析和诊断问题,例如检查Nginx配置、服务器负载情况或后端服务的健康状态。
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
神龙速读:
从这个网页截图中可以获取到以下关于漏洞的关键信息:
- **漏洞描述**:RISC-V架构的uprobe功能在构建XOL(execute out-of-line)缓冲区后缺少必要的fence.i指令。这可能导致旧的或损坏的指令被错误执行。
- **影响范围**:该问题在Spacemit K1/X60平台上运行BPF自测试时被发现,特别是在“test_progs: uprobe_autoattach, attach_probe”测试中,uprobe测试随机崩溃。
- **修复措施**:通过添加缺失的fence.i指令来解决此问题。具体代码修改如下:
```diff
+ unsigned long start = (unsigned long)dst;
+
@@ -176,6 +177,7 @@ void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr,
}
+
+ flush_icache_range(start, start + len);
```
- **相关提交**:该修复是针对之前提交`74784081aac8 ("riscv: Add uprobes supported")`的修正。
- **审查和签名**:该修复已由Guo Ren审查,并由Björn Töpel和Palmer Dabbelt签名确认。
这些信息表明这是一个与RISC-V架构相关的内核漏洞修复,涉及uprobe功能的正确执行顺序和缓存一致性问题。
暂无评论