@ 2014.04.12 , 18:36
40

漫画解释 openSSL 的「heartbleed」漏洞

前几天openSSL 的「滴血之心」漏洞造成的恐慌几乎席卷全球,国内外白帽子黑帽子疯狂刷数据刷积分,各大网站的安全部门也是遇到了从未有过的危机。虽然大家都讨论的很热烈,但对于用户们来说,只关心一件事情:我们支付宝里的钱还安全么。

除此以外,好奇的人们或许更想知道openSSL的程序员到底犯了什么错误,好在有xkcd这样的geek网站,用最最通俗易懂的方式,向大家展示了这个漏洞的原理和可爱之处。

[-]

还不明白的同学:所谓heartbleed的说法,源自于「心跳检测」,就是用户发通过起TSL 加密链接,发起 Client Hello询问,测服务器是否正常在线干活(形象的比喻就是心脏脉搏),服务器发回Server hello,表明正常建立SSL通信。每次询问都会附加一个询问的字符长度pad length,bug来了,如果这个pad length大于实际的长度,服务器还是会返回同样规模的字符信息,于是造成了内存里信息的越界访问……

本文译自 xkcd,由译者 Junius 基于创作共用协议(BY-NC)发布。


给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
您的大名: 打赏金额:

4.6
赞一个 (1)

TOTAL COMMENTS: 40+1

  1. haqinqie
    @4 years ago
    2378790

    看完了通篇只想说呵呵看不懂

    [26] XX [55] 回复 [0]
  2. 2378791

    蠢萌的服务器(?-ω-`)

    [175] XX [1] 回复 [0]
  3. 2378792

    很遗憾,我依然没有搞懂。

    [8] XX [21] 回复 [0]
  4. 阿()
    @4 years ago
    2378793

    煞笔才犯这样的错误。外国程序员层次也太低了。

    [9] XX [66] 回复 [0]
  5. 坑B程序猿
    @4 years ago
    2378795

    这不是非常低级的BUG吗……

    [16] XX [13] 回复 [0]
  6. 多多
    @4 years ago
    2378796

    就是说服务器没有对字符串的真实长度做校验吧

    [39] XX [2] 回复 [0]
  7. 2378797

    煎蛋鸟帽

  8. 2378800

    防守需要考虑几万种可能的漏洞,但攻击只需要找到一个弱点。
    总的来说,我觉得计算机安全里主要防守的人比主要攻击的人脑力要强很多。

    [108] XX [1] 回复 [0]
  9. 2378804

    OpenSSL一年收到2000美刀捐款。

    [48] XX [1] 回复 [0]
  10. 搪瓷七厂
    @4 years ago
    2378810

    看不懂,所以顺着查了wiki,说是meg请求返回 “HAT 五百个字母”,后色服器返回了内存中包括HAT之后的前500个字,也就是说伺服器将 “五百个字母” 这句话理解为了 显示500个字母 然后将其他人在同时伺服器里操作的前500个字母返回给meg看,而这里面包含很多私密信息,就是这个已死。

    [68] XX [4] 回复 [0]
  11. 2378816

    还是觉得这种漏洞很2,隐约觉得就是故意留的后门

    [11] XX [5] 回复 [0]
  12. dhbighead
    @4 years ago
    2378817

    论指针的妙用

  13. 2378828

    内存泄露越界访问什么的真的是百用不厌啊~

    [15] XX [0] 回复 [0]
  14. 阿布
    @4 years ago
    2378830

    @totem: 很明显是美国的情报机构。

  15. 黑夜里的网子
    @4 years ago
    2378835

    第一次看到这个的原理,真是良心啊。
    不过似乎看起来原理挺简单的啊。
    为什么之前没有被发现呢。

  16. 阿了个乐
    @4 years ago
    2378839

    这个….
    内存越界了服务器不会崩溃的么?

  17. 2378851

    @黑夜里的网子: 上次的苹果的漏洞比这个还要蠢n倍结果不还是没被发现吗 几十万程序发现一个漏洞是蛮难得

  18. 血神之翼
    @4 years ago
    2378853

    @阿了个乐: 正是因为越界访问经常没什么错误发生所以才导致容易被忽略的,需要程序员养成检查长度的习惯……

  19. 2378887

    这漏洞可谓二得一逼……网络通讯第一原则,宁多算不多传。

  20. dhbighead
    @4 years ago
    2378913

    @阿了个乐:不会,就看指针乱飞

  21. ID不允许数字
    @4 years ago
    2378930

    这个协议设计得有问题,既然内容都发了,长度就可以根据内容计算,不需要传输冗余的长度域

  22. 2378960

    那么回复1000字。也会泄漏对吗

  23. 2378977

    @ooo: 一个大型软件都是n多人编写/测试的,很难保证里面没有一俩个二货。虽然黑客平均水平会比码农高一些,不过人数远远小于码农的数量,想找个漏洞没那么简单的~

  24. 高山菌
    @4 years ago
    2379015

    看着自己码下这行字的“女朋友”泪流满面……

  25. 艾提芒
    @4 years ago
    2379040

    看不懂

  26. amadeus
    @4 years ago
    2379113

    TSL 加密链接==》TLS加密链接

  27. 2379132

    一直在思考有没有必要知道一切需要的东西的原理,这样会比较放心也比较安全,关键时候也可以自力更生。but这种东西好多又好深奥非常难以掌握的样子…像基本的人体结构,常见病的病因和治疗,常见植物的名字和习性,各种动物的种类包括宠物狗啊,鸟啊什么的,食物的营养比例,常见药品的成分,各种交通工具的结构和如何驾驶等等。尤其是计算机啦,网络这方面的基本概念…虽然不会真的全面去了解,(好吧我承认是因为懒和蠢),但确实会常常想到这方面,有时候也会去留意…当然知道了也会显得牛逼也是一个很重要的原因…其实我就是想知道有没有人跟我有一样的想法…

  28. Nagado
    @4 years ago
    2379134

    如果是我做的这个东西,内存泄露服务器铁定崩溃啊,绝对没有泄密,只是会工作瘫痪

  29. 霂汐酱
    @4 years ago
    2379183

    这漏洞。。还敢更直接一点吗?

  30. 2379287

    意思就是要求服务器回答内容的长度是500个字母,但真正内容只有三个字母HAT。结果服务器发的不是HAT,而是将除了HAT之外又找了497个字母,这497个字母就造成了信息泄露。

  31. wee——I
    @4 years ago
    2379353

    是不是可以这样理解:A:给我1张纸,上面写上1ooooooooRMB。服务器:给你?1oooooooo+一张纸

  32. 2379478

    @Nagado: 你只是越界访问而已,不知道怎么会引起崩溃

  33. 称呼太长
    @4 years ago
    2379505

    我擦,早点发现就好了,就可以。。。。。。

  34. justin
    @4 years ago
    2379590

    可参考:http://my.oschina.net/gschen/blog/221796

  35. 道离
    @4 years ago
    2379702

    漫画还不如文字好懂

  36. worldling
    @4 years ago
    2379923

    越界读是不会崩溃的,越界写才会崩溃

  37. LUXTOS
    @4 years ago
    2380053

    好的编程习惯影响很大呀!

  38. 2385407

    好的编程习惯影响很大呀!+10010

  39. 柏林零度冬
    @4 years ago
    2391110

    还是太复杂

发表评论


24H最赞