日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

苹果SSL_goto漏洞简介

發(fā)布時(shí)間:2023/12/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 苹果SSL_goto漏洞简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Apple于最近放出了iOS 7.0.6固件升級(jí),修復(fù)了SSL連接驗(yàn)證時(shí)的BUG。用升級(jí)后的ios系統(tǒng)打開漏洞測(cè)試頁面https://www.imperialviolet.org:1266已經(jīng)無法打開。頁面提示無法建立安全鏈接。自此,據(jù)說被蘋果遺忘了18個(gè)月的重大BUG被成功修復(fù)。但目前MACOS的這個(gè)BUG仍未修復(fù),使用Safari瀏覽器打開上文的BUG的測(cè)試頁面會(huì)出現(xiàn)下面的提示,但使用firefox或Chrome打開頁面卻不會(huì)成功。


Safari打開頁面的情況


Chrome打開頁面的情況



Firefox打開頁面的情況

該漏洞出現(xiàn)的原因是因?yàn)槲挥趆ttp://opensource.apple.com/source/Security/Security-55471/libsecurity_ssl/lib/sslKeyExchange.c中的一處SSLHashSHA1判斷下方多出了一個(gè)goto語句導(dǎo)致了執(zhí)行SSLVerifySignedServerKeyExchange函數(shù)時(shí)必定跳轉(zhuǎn)到fail標(biāo)號(hào)處,會(huì)return err并觸發(fā)BUG。


SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,uint8_t *signature, UInt16 signatureLen) {OSStatus err;SSLBuffer hashOut, hashCtx, clientRandom, serverRandom;uint8_t hashes[SSL_SHA1_DIGEST_LEN + SSL_MD5_DIGEST_LEN];SSLBuffer signedHashes;uint8_t *dataToSign;size_t dataToSignLen;signedHashes.data = 0;hashCtx.data = 0;clientRandom.data = ctx->clientRandom;clientRandom.length = SSL_CLIENT_SRVR_RAND_SIZE;serverRandom.data = ctx->serverRandom;serverRandom.length = SSL_CLIENT_SRVR_RAND_SIZE;if(isRsa) {/* skip this if signing with DSA */dataToSign = hashes;dataToSignLen = SSL_SHA1_DIGEST_LEN + SSL_MD5_DIGEST_LEN;hashOut.data = hashes;hashOut.length = SSL_MD5_DIGEST_LEN;if ((err = ReadyHash(&SSLHashMD5, &hashCtx)) != 0)goto fail;if ((err = SSLHashMD5.update(&hashCtx, &clientRandom)) != 0)goto fail;if ((err = SSLHashMD5.update(&hashCtx, &serverRandom)) != 0)goto fail;if ((err = SSLHashMD5.update(&hashCtx, &signedParams)) != 0)goto fail;if ((err = SSLHashMD5.final(&hashCtx, &hashOut)) != 0)goto fail;}else {/* DSA, ECDSA - just use the SHA1 hash */dataToSign = &hashes[SSL_MD5_DIGEST_LEN];dataToSignLen = SSL_SHA1_DIGEST_LEN;}hashOut.data = hashes + SSL_MD5_DIGEST_LEN;hashOut.length = SSL_SHA1_DIGEST_LEN;if ((err = SSLFreeBuffer(&hashCtx)) != 0)goto fail;if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)goto fail;goto fail; // 多出來的goto failif ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)goto fail;err = sslRawVerify(ctx,ctx->peerPubKey,dataToSign, /* plaintext */dataToSignLen, /* plaintext length */signature,signatureLen);if(err) {sslErrorLog("SSLDecodeSignedServerKeyExchange: sslRawVerify ""returned %d\n", (int)err);goto fail;}fail:SSLFreeBuffer(&signedHashes);SSLFreeBuffer(&hashCtx);return err;}
嘗試自己重新編譯此程序,不想缺少部分頭文件,Google無果,遂作罷。



-update-

OSX10.9.2更新后此BUG消失。

總結(jié)

以上是生活随笔為你收集整理的苹果SSL_goto漏洞简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。