一、漏洞简介

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 触发条件(如特定模块、特定配置、特定运行环境等)

  1. 应用程序使用受影响的 c-ares 版本
  2. 解析特制的输入(配置文件或 DNS 响应)

三、漏洞详情与原理解析

3.1 漏洞触发机制

漏洞存在于 ares__read_line() 函数中:

  1. 函数在逐行读取文件时
  2. 未正确处理文件末尾或特殊字符序列
  3. 导致读取超出缓冲区边界

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 规则等)

  1. 输入验证:确保配置文件格式正确
  2. 沙箱隔离:在受限环境中运行使用 c-ares 的应用
  3. 监控:监控异常的内存访问模式

六、参考信息 / 参考链接

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