今天看 slashdot,才知道 ruby 最近爆出的非常严重的漏洞,而我居然全然不知,出了一身冷汗,搜索订阅的 RSS 新闻,果然早有文章提起,夹杂在大量资讯中间,大约被直接忽视掉了。幸好我的项目还没有上线,以最快的速度订阅了 ruby-core 的 mailing list,下载 1.8.6 p230 开始升级。
去掉 debian 的 patches,dpkg-buildpackage 很顺利,安装过后,重启服务,随意访问了几个页面,出现 500 错误。检查 log:
ActionView::TemplateError (wrong argument type FalseClass (expected Proc))
*** glibc detected *** /usr/bin/ruby1.8: corrupted double-linked list: 0x00000000014eb220 *** ======= Backtrace: ========= /lib/libc.so.6[0x7ff36c97e01d] /lib/libc.so.6[0x7ff36c97e146] /lib/libc.so.6[0x7ff36c9802cc] ...
google 一下,发现我并不孤独,升级到 1.8.6 p230 后,都遇到了 segment fault 等问题。而奇怪的是,到目前位置,官方仍然没有一个解决方案,目前存在的解决方案和进展:
- Freebsd 的 ruby 维护者 Stanislav Sedov port 了部分安全更新比并提交至 FreeBSD port
- EnterpriseRuby 的 Hongli Lai 在 Stanislav Sedov 的 patch 基础上做了 ruby 1.8.6 p111 的 patch
- Linux 各大发行版,gentoo 之前提交了一个 patch,今天已经被删除
- Debian BUG 中已经记录此问题,目前还没有作出最终决定。
- Robert Thau 在 ruby-talk 邮件列表中贴了一个 patch,Igal Koshevoy 测试 rails 和 rspec 的测试 未出现 segment fault
- Igal Koshevoy 同时提交此 patch 到 ruby-core 列表中等待 review,目前 ruby core 开发者还没有给出任何反馈
- Update 2008-06-25 10:00:Igal Koshevoy 报告此问题到 ruby 官方 Issue 追踪系统,并广播至所有 ruby core 开发者,目前没有任何回应。
- Update 2008-06-30: Ubuntu hardy ruby 更新 1.8.6.111-2ubuntu1.1 修正了此问题
- Update 2008-06-30: Gentoo Upstream 已包含 ruby-1.8-revert15856.patch
- Update 2008-06-30: Matt 的道歉和对 1.8 发布管理的解释,根据 Matt 的说法,这个漏洞不太会像 Apple 报告的造成可任意代码执行
- Update 2008-07-03:Memory leaks in 1.8.6p230 and p238,目前看来 backport 安全更新到 p111, p114 是比较安全的做法
- Update 2008-07-03: Urabe Shyouhei 计划本周发布 1.8.6、1.8.7,因为仍存在内存泄露问题遭到社区强烈反对
- Update 2008-07-04:好的一面是,社区提议建立 ruby 的 CI
- Update 2008-07-05:Rolando Abarca提供了测试内存泄露的测试用例,经本机测试表明 Ubuntu hardy 1.8.6 并未受影响。
- Update 2008-08-08: ruby 官方放出 1.8.6/ 1.8.7新版本, 1.8 release manger Urabe Shyouhei 认为 "I believe they are stable enough." Links:
No comments:
Post a Comment