Adam LangleyはiOSのバグの理由を説明しました:コードの余分な行はすべてのセキュリティを破りました

昨日、AppleはiPhone 4以降、iPod touch第5世代、iPad 2+ 用のiOS 7.0.6セキュリティアップデートをリリースしました。 同時に、iPhone 3GSおよびiPod touch第4世代用に同様のパッチ6.1.6がリリースされました。



この更新プログラムは脆弱性CVE-2014-1266を閉じます。これにより、「ネットワーク上の特権位置」からの攻撃者がSSL / TLSで保護されたセッションのパケットを傍受および変更できます。 これは、トラフィックの置換を伴うMiTM攻撃です。



簡潔な説明で、Appleは、SSL / TLSを介して安全な接続を確立する場合、システムは接続の信頼性を判断できないと述べています。 この問題は、「検証の欠落段階を追加する」ことで解決されました。



どの特定の「ステップ」が欠落していたのかを簡潔に説明することは完全には明確ではありませんが、接続に対する完全な保護の欠如について話すことができます。 何らかの方法ですが、必要な認証手順がないため、すべてのAppleデバイスの初期段階で、サードパーティがユーザーのスマートフォンやタブレットに偽の/修正されたOSアップデートをインストールする可能性があります。



今日、有名な暗号作成者Adam LangleyがiOSのバグを分析する記事を公​​開しまし 。 彼は、OS X 10.8.5(Security-55179.13)と10.9(Security-55471)のコードの違いに注意を向けています。同じバグがおそらく修正されています。



実際、彼はここにいます。



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;
}
      
      





Apple.



goto fail



. if



, . , , goto fail



. err



, SHA1 «».



ServerKeyExchange, DHE ECDHE . : « , , , ». Apple, , . : , , ! , , , .



, , iOS 7.0.5 OS X 10.9.1 .



All Articles