# ATM CLIP:修复struct clip_vcc内存泄漏
## 概述
Linux 内核中存在一个内存泄漏漏洞,位于 `atm: clip` 子系统中。该漏洞发生在 `ioctl(ATMARP_MKIP)` 操作中,主要由于在网络设备关闭时未能正确清理 `struct clip_vcc` 结构体而导致内存泄漏。
## 影响版本
尚未指定具体影响的 Linux 内核版本,但漏洞描述表明存在于支持 ATM(Asynchronous Transfer Mode)和 `ATMARP` 功能的内核中。
## 细节
- `ioctl(ATMARP_MKIP)` 为每个 VCC(Virtual Channel Connection)分配 `struct clip_vcc` 并将其保存在 `vcc->user_back` 中。
- 预期在 `vcc_destroy_socket()` 被调用时,会发送一个 NULL skb 给 `vcc->push()`,从而在 `clip_push()` 中释放 `clip_vcc`。
- 但 `ioctl(ATMARPD_CTRL)` 调用 `atm_init_atmarp()` 时将 `vcc->push()` 设置为 NULL,导致 `clip_vcc` 未能释放,从而产生内存泄漏。
- 修复方法包括:
- 使用 `lock_sock()` 串行化两个 `ioctl()` 操作;
- 在 `atm_init_atmarp()` 中检查 `vcc->push()` 状态,以避免泄漏。
## 影响
该漏洞会导致使用 ATMARP 功能时,持续调用 `ioctl(ATMARP_MKIP)` 和 `ioctl(ATMARPD_CTRL)` 操作后发生内存泄漏,累积后可能影响系统性能,甚至导致内存耗尽。
# | POC 描述 | 源链接 | 神龙链接 |
---|
暂无评论