
Demostrando que SSLVerifySignedServerKeyExchange() es trivialmente comprobable.
Esta es una pequeña prueba de concepto que extrae la vulnerable SSLVerifySignedServerKeyExchange() de la librería libsecurity_ssl de Apple para demostrar que el código de firma es fácilmente comprobable mediante pruebas unitarias de forma aislada.
Aunque se ha hablado de que este fallo no era fácil de probar, el código en cuestión verifica firmas basándose en condiciones previas sencillas y es fácilmente comprobable tanto para casos de validación positivos como negativos; no hay razón ni excusa para no haberlo probado por completo para:
Prueba a ejecutar las pruebas unitarias tú mismo y luego simplemente comenta el 'goto' erróneo para ver cómo pasan las pruebas:
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
// goto fail;