goto fail;

Az Apple kinyomott egy 7.0.6-os iOS frissítést, mert megjelent egy nagyon durva exploit az SSL/TLS implementációjában:

An attacker with a privileged network position may capture or modify data in sessions protected by SSL/TLS

A hiba mindössze ennyi volt a kódban:

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

A második goto ismétlés a probléma. Valószínűleg csak elírás, viszont rettenetes következményei vannak. Adam Langley szoftverfejlesztő mérnök (“works on both Google’s HTTPS serving infrastructure and Google Chrome’s network stack”) saját blogján elemzi a problémát:

The first one is correctly bound to the if statement but the second, despite the indentation, isn’t conditional at all. The code will always jump to the end from that second goto (…) It’s possible to send a correct certificate chain to the client, but sign the handshake with the wrong private key, or not sign it at all!

A gotofail.com címen ellenőrizhetjük, hogy a számítógépünk, vagy iOS eszközünk érintett-e. Jelenleg az OS X 10.9.1 is problémás és egy hasonló gyors fix várható rá.