`

开源运动是否走到尽头?--谈谈怎样看待OpenSSL心脏出血

阅读更多

 

   开源运动是随着Linux操作系统的诞生和广泛被使用而逐步被人们所接受的,对软件产业和IT产业来讲,是一个重大变革。开源运动,建立了一种新的模式。这种模式应该是更加积极,促进IT产业和软件产业发展的。

 

  OpenSSL是开源代码中,最最广泛被使用的开源库,最初是以Eric Young以及Tim Hudson两人所写的SSLeay为基础所发展的。

 

  近些年,随着互联网的发展,OpenSSL也遇到了很多问题,爆出了很多bug,别的不说,就只看去年的“心脏出血”吧,我以前一直没有怎么关注,近期看了看,也就是一个C语言不检查数组长度和copy内存引起的,应该也算不大多么大的问题。

 

关键问题不是这个漏洞技术分析本身,而是这个深思这个漏洞,我们能够发现几个方面的问题:

 

1、敷衍了事的设计或根本没有设计

 

C语言不检查数字长度,内存copy不慎重的话容易导致缓冲器溢出问题,这个问题多少年了?OpenSSL还在使用最最危险的C库函数。难道是他们不了解C语言的这一特性吗?作为一个被如此广泛使用的基础性的软件,理所应当经过认真的分析和设计,考虑到这些情况,设计和编码经过严格的review。之所以还是存在这样的漏洞,是为了什么?

 

2、不当使用的懒汉

 

之所以OpenSSL漏洞会造成这么严重的问题,很大原因来自于用户的不当使用。很多人,包括一些IT系统的,一些做产品的,认为只要加一个SSL就安全了,甚至认为只要用上一个OpenSSL就安全了。真如盲人骑瞎马,不知何时就会夜半临深池。安全是要经过认真的分析设计的,分析设计之后,根据需要,使用能找到的工具,包括商业产品、开源组件、管理规范和手段协同达成的。我们作为用户,常常把自己的信息安全,让这样的没有人去管理和维护,真是悲哀啊。

 

3、应对手段的乏力

 

时至今日,我所看到的,应对这方面危机(不只是这一次OpenSSL的漏洞,而是时至今日出现多次的问题,不得不让人思索如何建立一种机制应对)好的方法,大多数人提到的,是加强测试、再加强测试,发现问题及时打补丁。拙作 http://windshome.iteye.com/blog/2122855 提出了补丁不能被滥用的观点,等待出了问题积极修正,总比拖着不修正好,但是真得没有更积极的方法,在出事之前,减少出事的可能吗?为什么不能做到呢?

 

 

为什么会出现这样的局面呢?这也不是突然出现的问题。

应怎样改进呢?我个人认为有如下的方法:

 

第一,重新定位开源在IT和软件产业中的位置

 

OpenSSL是一个开源的组件,开源组件的特性就是自由,缺乏管理。经过Linux内核之父指责C++和Java这个事情之后,我看到了一些程序员身上的问题:自负(那些程序员不知道C缓冲区溢出这回事吗?)、骄慢(编程规范算老几?孙子辈的)和惰怠(等出了问题再说吧),甚至我所不喜欢的,恶意的猜测别人(是否故意留下一个个坑?)。靠这样的一种机制,来支撑信息产业和软件产业等于神话中所说,牛角上支撑着的世界。我的观点:开源运动应该在软件产业和IT产业的什么位置?我们应该怎样看待它?

 

第二,帮助开源走向成熟

 

开源和商业并不矛盾,因此,有必要开源和商业进一步结合,这样对开源和商业都是有好处的。在国内,看到一堆人到当年的sourceforge、现在的google code、github上拿一个开源库就凑合着在上边开发,真觉得很可笑。对于个人开发者和小公司倒也罢了,但是大公司也基本都是这样,让人觉得无语。像阿里那样参与社区有所回馈,建立一种机制的还是太少了。另外,我想表达的也不是简单的参与和回馈,我想表达的是,借助商业化的契约精神和管理机制,帮助开源社区建立发展的正确方式。这比支持、参与或者资助一个或几个开源项目更加有价值。

 

第三:建立正确使用这些开源组件的方式

 

对于开源组件的使用,应该是(1)对可能存在的问题有所警惕和防范(2)通过第三方的商业产品、第三方的服务来使用而非直接使用(这涉及到费用和投入,但是什么都不想投入只想赚钱这个想法本身就不大靠谱,与总是出问题相比,适当的投入还是需要的)(3)第三方产品和服务努力提高自身的水平,承担商用契约。

 

当然,作为开源社区、开源项目的参与者来讲,也应该积极寻求这种方式,如果还抱着最初开源运动的那些教条不放,那么是不是会举步维艰?也许不会,因为走短平快路线的,大有人在,不追求质量,不追求稳定性、安全性,只是追求速度的人多着呢。但是,要想通过开源社区做好一件事,必须寻求这方面的变化,穷则变,变则通

 

 

 

 

 

 

 

 

 

 

 

 

 

0
2
分享到:
评论

相关推荐

    OpenSSL-for-iPhone-master.zip_OpenSSL-for-iPhone_openssl_openssl

    OpenSSL 是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,同时也包含各种加密算法、证书处理和其他安全功能。在iOS开发中,如果你的应用需要进行安全的网络通信,如HTTPS,或者需要对数据进行加密解密...

    前端开源库-openssl-self-signed-certificate

    在"前端开源库-openssl-self-signed-certificate"中,这个开源项目可能提供了一种简化流程,将上述步骤集成到了一个脚本或者工具中,方便开发者快速生成和使用自签名证书。此外,由于证书的有效期设定到了4754年,这...

    openldap-2.2.29-db-4.3.29-openssl

    openldap-2.2.29-db-4.3.29-openssl 不为积分只为没有积分的哥们少作难,另有陪有强大的LdapAdmin.exe, 比较Softerra LDAP Browser 2.5强百倍。没有积分下个资源到处奔波飘荡,省去你的时间,亲人。 LdapAdmin.exe ...

    openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.7z

    OpenLDAP是开源的轻量级目录访问协议(Lightweight Directory Access Protocol)服务器,它提供了对分布式目录服务的支持,广泛应用于企业环境,用于存储用户账户、组、网络资源等信息。这款"openldap-2.2.29-db-...

    httpd-2.2.25-win32-x86-openssl-0.9.8y.msi

    描述中的信息与标题相同,"httpd-2.2.25-win32-x86-openssl-0.9.8y.msi" 提示这是一个用于Windows平台的32位Apache服务器安装文件,同时也包含了OpenSSL库的0.9.8y版本。OpenSSL 是一个开源的加密库,用于提供SSL/...

    zabbix_agent2-6.0.3-windows-i386-openssl-static

    首先,"zabbix_agent2-6.0.3-windows-i386-openssl-static"表明这是一个针对Windows 32位系统的Zabbix Agent2版本,且采用静态链接OpenSSL库,这意味着它包含了所有必要的依赖,无需额外安装OpenSSL即可运行,提供了...

    openssl-0.9.8k_WIN32_openssl-0.9.8k_WIN32_OpenSSL-Win32_openssl_

    这个压缩包“openssl-0.9.8k_WIN32_openssl-0.9.8k_WIN32_OpenSSL-Win32_openssl_”显然包含了适用于 Windows 32位系统的 OpenSSL 版本0.9.8k。这个版本可能已经过时,因为最新的稳定版本通常会提供更多的安全修复和...

    openssl和openssl-devel离线rpm安装包.zip_OPENSSL 库_openssl_openssl-deve

    `openssl-devel` 是OpenSSL的开发库,包含了头文件和静态链接库,用于编译和链接到OpenSSL功能的应用程序。开发人员在编写需要使用OpenSSL的软件时,需要安装这个包,以便在编译时可以正确地引用OpenSSL的函数和结构...

    openssl-1.0.0.tar.gz~~openssl-3.3.1.tar.gz.zip

    不同版本的OpenSSL压缩包: openssl-1.0.0.tar.gz openssl-1.0.1.tar.gz openssl-1.0.2.tar.gz openssl-1.1.0.tar.gz openssl-1.1.1.tar.gz openssl-3.0.14.tar.gz openssl-3.1.6.tar.gz openssl-3.2.2.tar.gz ...

    apache_2.2.11-win32-x86-openssl-0.9.8i_gpxz

    Apache服务器以其开源、免费、可高度定制和扩展性而受到赞誉,使得开发者可以轻松地根据需求调整配置和添加模块。 OpenSSL 0.9.8i则是一个安全套接层(SSL)和传输层安全(TLS)库,用于实现加密通信和身份认证。在...

    centosopenssl-1.1.1u+openssl-1.1.1vopenssl1.1.1u+openssl1.1.1v

    centos7 最新版本的openssl rpm安装包 openssl-1.1.1u-1.el7.x86_64.rpm openssl-debuginfo-1.1.1u-1.el7.x86_64.rpm openssl-devel-1.1.1u-1.el7.x86_64.rpm openssl-1.1.1v-1.el7.x86_64.rpm openssl-debuginfo-...

    apache_2.2.8-win32-x86-openssl-0.9.8g.msi

    apache_2.2.8-win32-x86-openssl-0.9.8g.msi安装方便快捷

    Apachehttpd-2.2.17-win32-x86-openssl

    在压缩包中的`httpd-2.2.17-win32-x86-openssl-0.9.8o.msi`文件是一个Microsoft Windows安装程序,用户可以通过运行这个文件来安装Apache服务器及其OpenSSL组件。安装过程中,用户可以选择配置选项,如安装路径、...

    openssl-win32工具 win32OpenSSL

    用openSSL工具生成密钥使用说明: 安装后进入OpenSSL工具,输入如下命令: • Linux用户(以Ubuntu为例): $ openssl 进入OpenSSL程序 OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥 OpenSSL> pkcs8 -...

    httpd-2.2.25-win32-x86-openssl-0.9.8y安装教程

    httpd-2.2.25-win32-x86-openssl-0.9.8y安装教程

    openssh-9.7p1-1.el7.x86-64-ssh-copy-id-openssl.tgz

    2024年3月12日制作 适用于centos 7 redhat 7 x86架构的二进制...2024年3月11日官方发布9.7版本,内含ssh-copy-id命令,安装后显示openssl版本,此包基于openssl 1.1.1w制作,因此安装后会显示1.1.1w版本的openssl信息

    安装openssl和openssl-develd 的依赖包

    这里我们关注的是“openssl”和“openssl-devel”这两个关键组件,它们是实现安全套接字层(SSL)和传输层安全(TLS)协议的基础。SSL/TLS协议用于加密网络通信,确保数据在传输过程中不被窃取或篡改。 **openssl**...

    apache_2.2.11-win32-x86-openssl-0.9.8

    开发微信小程序涉及到前端和后端技术的结合,包括使用WXML(微信小程序标记语言)和WXSS(微信小程序样式语言)来构建界面,同时可能需要与服务器进行数据交互,这就需要一个能够运行后端服务的环境,如Apache ...

    httpd-2.2.22-win32-x86-openssl-0.9.8t.z

    4. 安全性:确保正确配置SSL/TLS证书,防止中间人攻击,并定期更新OpenSSL到最新版本以抵御已知漏洞。 5. 性能优化:根据服务器硬件和网站负载调整配置,如启用缓存、调整并发连接数等。 总之,这个压缩包提供了一...

Global site tag (gtag.js) - Google Analytics