# mm/slub:defer_free() 释放后重置 KASAN 标签漏洞
## 概述
在启用 `CONFIG_SLUB_TINY` 和 ARM64 MTE 的配置下,Linux 内核 SLUB 分配器在释放对象时因内存标签不匹配触发 KASAN slab-use-after-free 报告。问题源于 `kasan_slab_free()` 提前对内存进行染毒并更改标签,随后 `defer_free()` 使用旧标签访问已释放内存导致标签不匹配。
## 影响版本
启用 `CONFIG_SLUB_TINY` 且运行支持 MTE(Memory Tagging Extension)的 ARM64 系统中的 Linux 内核。
## 细节
- `kfree_nolock()` 在 `CONFIG_SLUB_TINY` 启用时先调用 `kasan_slab_free()`,再调用 `defer_free()`。
- `kasan_slab_free()` 对释放对象进行染毒,将内存标签从原始值(如 0xf3)改为毒化标签(0xfe)。
- `defer_free()` 随后通过 `llist_add()` 写入该对象构建延迟释放链表,但使用的指针仍带旧标签(如 0xf3),导致访问时触发 MTE 标签不匹配。
- 错误表现为 KASAN 报告写入地址时指针标签与内存标签不一致。
## 影响
错误触发 KASAN use-after-free 检测,产生虚假的内存误用警告,可能导致系统误判为安全漏洞或引发崩溃。通过在 `defer_free()` 前调用 `kasan_reset_tag()` 重置指针标签,确保与已染毒内存匹配,消除误报。该操作安全,因 `defer_free()` 作为分配器内部逻辑需合法操作已释放内存用于管理。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Oh noes! -- 🔗来源链接
标签:
神龙速读:
- **错误代码**: 4d1dbaddfcc0f385
- **访问被拒绝**: 显示为“Access Denied”
- **保护软件**: Anubis,来源于Tehcabo
- **软件版本**: Anubis version 1.22.0
- **设计信息**: Mascot设计由 CELPHASE 完成
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
神龙速读:
从这个网页截图中,可以获取到以下关于漏洞的关键信息:
---
### 关键信息
- **状态码**: 503 Service Temporarily Unavailable
- **服务器**: nginx
---
### 可能的漏洞点
- **服务不可用**: 可能由于服务器超载、维护或其他原因导致服务暂时不可用,这可能是一个DDoS攻击的迹象。
- **中间件或后端问题**: 503错误通常与Web后端或中间件无法处理请求相关,可能暗示存在中间件配置错误或后端服务崩溃的漏洞。
- **披露信息**: 显示出nginx服务器软件,可能提供攻击者进一步针对具体版本进行攻击的机会。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.