
Démontrer que SSLVerifySignedServerKeyExchange() est trivialement testable.
Ceci est une petite preuve de concept qui extrait la fonction vulnérable SSLVerifySignedServerKeyExchange() de la bibliothèque libsecurity_ssl d'Apple pour démontrer que le code de signature est facilement testable unitairement de manière isolée.
Bien qu'il y ait eu des discussions selon lesquelles ce bogue n'était pas facilement testable, le code en question vérifie les signatures sur la base de préconditions simples, et est facilement testable pour les cas de validation positifs et négatifs ; il n'y a aucune raison ni excuse pour qu'il ne soit pas complètement testé pour :
Essayez d'exécuter les tests unitaires vous-même, puis commentez simplement le 'goto' erroné pour voir les tests réussir :
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
// goto fail;