Fehlerhafte SSL/TSL Implementierung bei Apple

Durch fehlerhaften Code konnten angeblich verschlüsselte Verbindungen auf Apple Geräten ausgehebelt werden – die Schlüssel wurden nicht korrekt kontrolliert, so wurden auch falsche Schlüssel für eine Verbindung akzeptiert.

Es ist nicht bekannt wie lange der Fehler schon besteht und in welchem Umfang er ausgenutzt wurde.

Details sind hier zu finden.

Hier der Code mit dem doppelten “Fail” – einer davon korrekt, der zweite akzeptiert nun alles:

 

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                 uint8_t *signature, UInt16 signatureLen)
{
	OSStatus        err;
	...

	if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
		goto fail;
	if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
		goto fail;
		goto fail;
	if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
		goto fail;
	...

fail:
	SSLFreeBuffer(&signedHashes);
	SSLFreeBuffer(&hashCtx);
	return err;
}