这是一个小型概念验证,它从苹果的 libsecurity_ssl 中提取了存在漏洞的 SSLVerifySignedServerKeyExchange(),以演示签名代码可以很容易地在隔离环境中进行单元测试。
尽管有一些讨论认为这个漏洞不易测试,但相关代码是根据直接的先决条件来验证签名的,并且无论是正向还是反向验证案例都很容易进行单元测试;没有理由或借口不进行全面测试:
尝试自己运行单元测试,然后只需注释掉错误的 'goto' 即可看到测试通过:
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
// goto fail;