漏洞概述 该漏洞涉及Docker凭证的匹配问题。在 函数中,使用了子字符串匹配( )来选择Docker凭证,这可能导致将配置在一个注册表上的凭证发送到另一个注册表,其主机名是配置Docker认证密钥的子字符串(或包含在内)。 影响范围 此漏洞可能影响所有使用Docker凭证进行身份验证的应用程序,特别是那些依赖于 函数来获取注册表凭证的应用。攻击者可能利用此漏洞获取未授权的访问权限,从而窃取敏感信息或执行恶意操作。 修复方案 修复方案包括: 1. 精确匹配:将 函数中的子字符串匹配改为精确匹配,确保只匹配完全相同的注册表主机名。 2. 规范化主机名:在匹配之前,对注册表主机名进行规范化处理,去除协议和路径部分,只保留主机名。 3. 添加回归测试:添加回归测试用例,覆盖子字符串匹配、主机名匹配和Docker Hub别名等场景,确保修复后的代码不会引入新的问题。 POC代码 以下是修复前后的代码对比: 修复前 修复后 代码块 以下是完整的修复代码块: 测试用例 以下是添加的回归测试用例: 总结 该漏洞通过子字符串匹配导致凭证泄露,修复方案采用精确匹配和规范化主机名,确保只有完全匹配的注册表主机名才会被使用。同时,添加了回归测试用例,确保修复后的代码不会引入新的问题。