
Демонстрация того, что SSLVerifySignedServerKeyExchange() тривиально тестируема.
Это небольшой proof-of-concept, который извлекает уязвимую SSLVerifySignedServerKeyExchange() из libsecurity_ssl от Apple, чтобы продемонстрировать, что код подписи легко тестируется модульными тестами в изоляции.
Хотя и ведутся разговоры о том, что эту ошибку было непросто тестировать, рассматриваемый код проверяет подписи на основе простых предварительных условий и легко тестируется как для положительных, так и для отрицательных случаев проверки; нет причин или оправданий тому, что он не был полностью протестирован на:
Попробуйте запустить модульные тесты самостоятельно, а затем просто закомментируйте ошибочный 'goto', чтобы увидеть, как тесты проходят:
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
// goto fail;