每天都有关于Heartbleed错误构成威胁的新报道。但是,Heartbleed的发现还引发了困扰开源社区多年的丑闻。丑闻是,巨型企业无所作为,没有为他们依赖的自由软件的开发,测试和验证做任何贡献。他们是接受者,纯正而简单。
没有什么比第一位负责此错误的德国开发人员Robin Seggelmann博士透露的细节更明显了。
看起来,Seggelmann博士在年末的假期中正致力于修复第一版OpenSSL(已成为Internet上的标准的加密软件)中的错误。在他参加会议时,Seggelmann开发了一种创建心跳功能的方法,该功能可以使加密会话保持打开状态,而不是随着时间的推移而超时。
从这种意义上讲,心跳的想法是向会话远程端的计算机确认链接仍处于活动状态,从而减少了注销并重新建立加密会话以传输更多数据的需求。通过这样做,他创造了一种通过消除握手延迟来显着减少这些连接中的延迟的方法。这是一个非常好的主意。
但是正如开发中经常发生的那样,塞格曼博士犯了一个错误。他忘记指出结束变量,而这又可能导致缓冲区溢出,进而可能在远程服务器的内存中显示多达64 KB的数据。当时没有发现这个错误,最终导致了生产代码。
那么为什么没有发现错误呢?博客圈中对此有很多猜测,有人认为这是国家安全局的邪恶阴谋。其他人则认为开发者不称职。实际上,都不是真的。这是一个编码错误,纯净而简单。未被捕获是因为全世界只有很少的人免费开发OpenSSL。
这种开放,自由的软件开发环境的想法是这种情况的一部分,在这种环境中,整个程序员社区共同工作以创建每个人都需要的软件。这是一个问题,因为它假定会有大量的开发人员社区,他们所有人都会随着时间的推移检查代码,寻找错误。
但是在现实世界中,开源软件是先开发出来然后发布到生产中的,而且由于社区中很少有人了解它,因此很少进行检查。