苹果「篡改」cURL行为引起开发者不满 这种篡改实际弱化了安全性
内容提要
cURL开发者丹尼尔指责苹果篡改cURL导致的安全问题。cURL允许开发者使用参数--cacert指定一组CA证书,但苹果在macOS中修改了这个功能,导致CA验证不可靠。丹尼尔向苹果报告了这个问题,但苹果表示不需要修复。问题目前无法解决。
延伸解读
参数行为差异带来的安全风险
cURL 的 --cacert 参数允许开发者指定一组自定义 CA 证书,用于限制信任范围。但苹果在 macOS 中修改了这一行为:即使开发者指定了证书,系统仍会检查 macOS 内置的 CA 存储库。这意味着,如果服务器证书不在开发者指定的列表中,但存在于系统存储库中,cURL 不会返回失败。这可能导致开发者预期的严格验证被绕过,从而引入安全风险。
苹果的立场与开发者分歧
苹果安全团队在回复中表示,其 OpenSSL(LibreSSL)有意使用内置系统信任存储作为默认信任源,并认为不需要修复。而 cURL 开发者丹尼尔则认为,这种未记录的行为篡改了 cURL 的功能,使 CA 验证不可靠,且与 cURL 文档不符。双方对安全模型的理解存在根本分歧,导致问题无法通过常规渠道解决。
问题僵局与用户影响
由于问题并非源自 cURL 本身,丹尼尔无法发布 CVE 或采取其他官方行动,目前问题陷入僵局。对于 macOS 用户而言,这意味着使用 cURL 时,--cacert 参数可能无法按预期工作,CA 验证的可靠性降低。开发者需注意这一平台差异,在依赖严格证书验证的场景中谨慎评估风险。
Q&A
苹果对cURL的修改具体是什么?
苹果在macOS中修改了cURL的--cacert参数处理方式,导致CA验证不可靠。
丹尼尔为什么认为苹果的修改是安全缺陷?
因为苹果的修改使得开发者指定的CA证书无法正常验证,导致CA验证不可靠。
丹尼尔向苹果报告问题后得到了什么回应?
苹果表示不需要修复,认为使用内置系统信任存储作为默认信任源是合理的。
cURL的--cacert参数有什么重要性?
该参数允许开发者指定CA证书,以确保只信任特定的CA,增强安全性。
苹果的做法对开发者有什么影响?
开发者在使用cURL时可能会面临CA验证不可靠的问题,影响安全性。
丹尼尔能否发布CVE来解决这个问题?
丹尼尔无法发布CVE,因为问题并不是cURL本身的错误,而是苹果的篡改。