一、漏洞简介¶
1.1 漏洞背景¶
c-ares 在读取配置文件和解析 DNS 响应时存在越界读取漏洞,可被利用导致信息泄露或程序崩溃。
1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)¶
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2023-32732 |
| 危害等级 | MEDIUM / 5.3 |
| 漏洞类型 | c-ares 越界读取 |
| 披露时间 | 2023-06-09 |
| 影响组件 | gRPC |
| 属性 | 值 |
|---|---|
| CVE 编号 | CVE-2023-32732 |
| 危害等级 | 中危 (Medium) |
| CVSS 评分 | 6.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N) |
| CWE 编号 | CWE-125 (Out-of-bounds Read) |
| 影响组件 | c-ares |
| GHSA 编号 | GHSA-mg26-v6qh-x48q |
补充核验信息:公开时间:2023-06-09;NVD 评分:5.3(MEDIUM);CWE:CWE-440。
二、影响范围¶
2.1 受影响的版本¶
- c-ares < 1.27.0
2.2 不受影响的版本¶
- c-ares >= 1.27.0
2.3 触发条件(如特定模块、特定配置、特定运行环境等)¶
- 应用程序使用受影响的 c-ares 版本
- 解析特制的输入(配置文件或 DNS 响应)
三、漏洞详情与原理解析¶
3.1 漏洞触发机制¶
漏洞存在于 ares__read_line() 函数中:
- 函数在逐行读取文件时
- 未正确处理文件末尾或特殊字符序列
- 导致读取超出缓冲区边界
3.2 源码层面的根因分析(结合源码与补丁对比)¶
漏洞代码位置:src/lib/ares__read_line.c(或相关工具函数)
问题代码片段:
ares_status_t ares__read_line(FILE *fp, char **buf, size_t *bufsize) {
// ...
while ((ch = getc(fp)) != '\n' && ch != EOF) {
if (offset >= *bufsize - 1) {
// 扩展缓冲区
}
(*buf)[offset++] = (char)ch;
}
// BUG: 在某些边界条件下,offset 可能超出缓冲区
(*buf)[offset] = '\0'; // 潜在的越界写入
// ...
}
修复要点: - 添加更严格的边界检查 - 正确处理 EOF 和换行符的组合 - 确保缓冲区始终有空间存放终止符
四、漏洞复现(可选)¶
4.1 环境搭建¶
# 创建特制的配置文件
echo -n "nameserver 8.8.8.8" > /tmp/dns_test.conf
# 不添加换行符
4.2 PoC 演示与测试过程¶
#include <ares.h>
#include <stdio.h>
int main() {
ares_channel channel;
struct ares_options options;
// 使用特制的配置文件
// 文件末尾没有换行符可能触发漏洞
FILE *fp = fopen("/tmp/dns_test.conf", "r");
// 触发 ares__read_line()
// ...
return 0;
}
五、修复建议与缓解措施¶
5.1 官方版本升级建议¶
- 升级 c-ares 至 >= 1.27.0
5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)¶
- 输入验证:确保配置文件格式正确
- 沙箱隔离:在受限环境中运行使用 c-ares 的应用
- 监控:监控异常的内存访问模式
六、参考信息 / 参考链接¶
6.1 官方安全通告¶
<hr />6.2 其他技术参考资料¶
- NVD:https://nvd.nist.gov/vuln/detail/CVE-2023-32732
- CVE:https://www.cve.org/CVERecord?id=CVE-2023-32732
- https://github.com/grpc/grpc/pull/32309
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/37IDNVY5AWVH7JDMM2SDTL24ZPPZJNSY/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/VWE44J5FG7THHL7XVEVTNIGEYBNKJBLL/
- https://github.com/c-ares/c-ares/security/advisories/GHSA-mg26-v6qh-x48q
- https://nvd.nist.gov/vuln/detail/CVE-2023-32732