Apple 的 TLS 爆了大 bug!

2014-02-22 22:10:39 +08:00
 est


为什么发到 python 版呢。因为这是 python 语言里极难犯的错误。
15509 次点击
所在节点    Python
69 条回复
cchange
2014-02-23 11:47:04 +08:00
@reverland 非常感谢,但是没发现这和两个goto fail的问题啊~
应该是fail段落的问题吧?
timonwong
2014-02-23 12:00:57 +08:00
@cchange
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;

先改写一下
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) {
goto fail; // err != 0
}
goto fail; // err == 0

这个fail其实是一个exit point(这段代码只有一个exit point), 不要当作“失败”,因为无论是成功还是失败, fail之后的代码都会执行

fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err; // err == 0, "Success baby"

这样,第二个fail的问题在于,err此时为0。C语言的0返回值一般约定是没有error,这样调用者就认为SSLVerifySignedServerKeyExchange() 函数是成功的,然后就是大乌龙了。
tttwww18
2014-02-23 12:20:17 +08:00
iOS 7.0.6 safari 受影响
tttwww18
2014-02-23 12:31:30 +08:00
@tttwww18 不好意思打错。更新到7.0.6(11B651)后不受影响
Shared
2014-02-23 12:32:38 +08:00
@timonwong 其实是两次 SSLHashSHA1.upadate 之后 SSLHashSHA1.final 永远都不会执行了
mikale
2014-02-23 12:37:32 +08:00
我比较恶意,我认为这是apple 程序员故意留的bug,为了怕被发现,伪装的比较好
Shared
2014-02-23 12:39:14 +08:00
@menic 也许,但是:1)Python 没有 goto;2)Python 是强制缩进的,即使有 goto,写两次 goto hell 也没问题。
messense
2014-02-23 12:44:01 +08:00
iOS 7.1 Beta 5 Safari 受影响。
xowenx
2014-02-23 13:25:00 +08:00
OSX 10.9 chrome dev 不受影响 chrome用了自己的SSL/TLS库?
treo
2014-02-23 16:33:19 +08:00
@xowenx 嗯,chrome和firefox用了NSS
bombless
2014-02-23 16:48:27 +08:00
估计是某些编辑器的快捷键的原因复制了一行
zellux
2014-02-23 16:54:40 +08:00
奇怪的是这样的代码编译器好歹要给个 warning 吧。

其实这种错误 Java 里也不会有(如果 Java 里有 goto 的话),执行不到的代码的编译器会直接报错……
luikore
2014-02-23 16:58:34 +08:00
@zellux 这种错误 Java 里可多了. 关键不是 goto 语句, 而是 if () stmt; stmt;
jasontse
2014-02-23 17:07:15 +08:00
iOS 6.1 Safari受影响,Chrome不受影响
Ricepig
2014-02-23 18:15:48 +08:00
visual basic 表示完全没有这个问题,
if 必须 end
banbanchs
2014-02-23 19:26:01 +08:00
@zellux
@luikore

一般编辑器/IDE也会帮你缩进啊,两个goto应该会在不同位置的
aqqwiyth
2014-02-23 20:34:39 +08:00
aqqwiyth
2014-02-23 20:35:16 +08:00
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.91 Safari/537.36
cchange
2014-02-23 21:19:16 +08:00
@timonwong 非常感谢 大概懂了~~~
iam3z
2014-02-23 22:51:30 +08:00
http://daringfireball.net/2014/02/apple_prism

证实ios5.1没有,6.0才有,是否apple给nsa故意加的prism

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/101394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX