C/C++ 检查表挑战已解决
提供的文本描述了测试手册中的两个安全挑战:一个 Linux ping 程序和一个 Windows 驱动程序注册表处理器。Linux 挑战暴露了一个命令注入漏洞,这是由于输入验证缺陷以及 `inet_ntoa` 函数使用全局缓冲区所致,使得攻击者能够绕过安全检查。Windows 挑战突显了一个漏洞,即驱动程序使用 `RtlQueryRegistryValues` 从注册表中读取版本信息,允许攻击者控制注册表路径,从而读取任意注册表键。关键漏洞在于使用 `RTL_QUERY_REGISTRY_DIRECT` 时缺少类型检查,导致通过类型混淆引发栈溢出。Windows 驱动程序中缺少 `RTL_QUERY_REGISTRY_TYPECHECK` 标志,在尝试从不可信的 hive 读取数据时使用 `RTL_QUERY_REGISTRY_DIRECT`,会导致内核安全失败。该漏洞最初在 MS11-011 中得到修复,允许攻击者覆盖栈上的数据。随后,文本介绍了一种新的 Claude 技能 c-review,旨在利用大语言模型在 C/C++ 代码库中发现漏洞。该技能使用测试手册的检查清单作为提示,以识别漏洞。