Rails 1.1.5: Mandatory security patch (and more)

Posted by David August 09, 2006 @ 05:30 PM

We’re still hard at work on Rails 1.2, which features all the new dandy REST stuff and more, but a serious security concern has come to our attention that needed to be addressed sooner than the release of 1.2 would allow. So here’s Rails 1.1.5!

This is a MANDATORY upgrade for anyone not running on a very recent edge (which isn’t affected by this). If you have a public Rails site, you MUST upgrade to Rails 1.1.5. The security issue is severe and you do not want to be caught unpatched.

The issue is in fact of such a criticality that we’re not going to dig into the specifics. No need to arm would-be assalients.

So upgrade today, not tomorrow. We’ve made sure that Rails 1.1.5 is fully drop-in compatible with 1.1.4. It only includes a handful of bug fixes and no new features.

For the third time: This is not like “sure, I should be flossing my teeth”. This is “yes, I will wear my helmet as I try to go 100mph on a motorcycle through downtown in rush hour”. It’s not a suggestion, it’s a prescription. So get to it!

As always, the trick is to do “gem install rails” and then either changing config/environment.rb, if you’re bound to gems, or do “rake rails:freeze:gems” if you’re freezing gems in vendor.

UPDATE: This problem affects 0.13, 0.14, 1.0, and 1.1.x. So here’s a happy opportunity to upgrade if you still haven’t.

UPDATE 2: We’ve fixed the zlib buffer problems for people on Windows. Redownload the gem and everything should be dandy.

UPDATE 3: Regarding security through obscurity, we’ll release the full details of this issue once everyone has had a fair chance to upgrade their system. Source transparency is of little comfort if you just had your system compromised before you got a chance to apply the patch.

UPDATE 4: This problem does not affect Rails 1.0 or earlier. The only versions affected are 1.1.0, 1.1.1, 1.1.2, and 1.1.4. See security update for details.

UPDATE 5: We’ve released Rails 1.1.6 with additional fixes to the problem and created backported patches for all affected versions.

P.S.: If you run a major Rails site and for some reason are completely unable to upgrade to 1.1.5, get in touch with the core team and we’ll try to work with you on a solution.

Posted in Releases | 120 comments

Comments

  1. mixonic on 09 Aug 18:08:

    some svn trickery can nail down what the problem was pretty quick, I’m off to upgrade some installs now. I’d reccomend others follow David’s strong suggestions as well.

    -mix

  2. Nate on 09 Aug 18:13:

    Does this security hole effect edge users below a certain revision number? If so, at which revision number was the fix commited? Feel free to email me the number please if the fix is meant to be obfuscated from hax0rs reading this blog. :)

  3. DHH on 09 Aug 18:21:

    “Edge from within the last couple of weeks” doesn’t have the issue. We’ll get more specific once people have had a chance to upgrade.

  4. Tim Morgan on 09 Aug 18:21:

    Anybody know what would cause the following message when running a “gem update”?

    ERROR: While executing gem … (Zlib::BufError) buffer error

  5. Roeland on 09 Aug 18:27:

    Maybe some tips for freezing rails in combination with subversion?

    When I do rake rails:unfreeze subversion complains. And when I do svn remove vendor/rails rails complains when freezing.

  6. heipei on 09 Aug 18:30:

    security by obscurity? not really cool…

  7. Tim Morgan on 09 Aug 18:32:

    Nevermind. “gem install rubyzip” fixed it.

  8. Joel on 09 Aug 18:39:

    I seem to get some routing issues with standard routing on plugin controllers after upgrading to 1.1.5. I’m using Engines if that matters. Anyone else getting this?

  9. 5in on 09 Aug 18:41:

    Nate, how do we know you aren’t an elite haxor??? Must devise a test…

    Point due east. Hmm… Okay, you seem legit, its release 9997.

  10. mml on 09 Aug 18:42:

    So, uh, what’s the best way to get in contact with the core team?

  11. Charles on 09 Aug 18:47:

    I apologize for posting this issue as a blog comment, but trac is down, and you stress the importance of a 1.1.5 upgrade. “gem install rails—include-dependencies” returns “ERROR: while executing gem … (ZLib::BufError) after downloading actionpack apparently. This is on XP SP 2, ruby 1.8.4.

  12. Casey Helbling on 09 Aug 18:47:

    What exactly is the vulnerability and what is the impact (I would look at dev.rubyonrails.org but it is down with too much traffic). We are launching a very large rails site in one week and are currently locked at 1.1.2. It is going to be very difficult to convince management and the testing team to upgrade the production environment this late in the game. Has mongrel and all the rails engines been tested against 1.1.5? What about all the gems? These types of news releases really show the immaturity of rails.

  13. Juan Lupión on 09 Aug 18:57:

    Tim: A corrupted download, maybe?

  14. zenspider on 09 Aug 19:04:

    I’ve blogged my rake rule for freezing to a specific version at http://blog.zenspider.com/archives/2006/08/upgrade_rails_n.html

    It made upgrading (once it was tagged) a 1 minute process. It’d be nice if this could be incorporated in railties’s tasks.

  15. John on 09 Aug 19:07:

    Nevermind. “gem install rubyzip” fixed it.

    Unfortunately, not for me. Still getting the Zlib::BufError error when trying to update Actionpack gem.

  16. Michael on 09 Aug 19:08:

    I’m getting the same error as Tim on Windows when attempting to update my Rails gem. A friend is experiencing the same thing on his Debian server. We both tried “gem install rubyzip,” as Tim suggested, but that didn’t help. (Between the two of us, we were able to successfully upgrade on OS X, FreeBSD, and Ubuntu.)

    This is the error we’re seeing:

    gem update rails Updating installed gems… Attempting remote update of rails Install required dependency actionpack? [Yn] ERROR: While executing gem … (Zlib::BufError) buffer error

  17. Leeto on 09 Aug 19:08:

    A rather humorous patch announcement you have here. Declaring an upgrade as mandatory without offering the public so much as a single glimpse as to what is wrong? You say the security hole is gaping… but you offer no proof of concept or exploit explanation.

    No one should be expecting you to be posting pre-compiled code that script kiddies could utilize, but no one should be taking your concern for security seriously without a full disclosure of what is wrong.

  18. Lee on 09 Aug 19:13:

    Nate – What if you are a hax0r reading the blog!!! ;-)

  19. FM on 09 Aug 19:13:

    You’ve got to be kidding. When has security through obscurity ever worked? We run quite a few semi-public (ie, heavy-use critical internal applications) here and we can’t afford to just upgrade without knowing what the problem is. Sure we could dig through changesets, and we probably will, but not fully disclosing a critical security problem is very bad practice.

  20. FM on 09 Aug 19:15:

    You’ve got to be kidding. When has security through obscurity ever worked? We run quite a few semi-public (ie, heavy-use critical internal applications) here and we can’t afford to just upgrade without knowing what the problem is. Sure we could dig through changesets, and we probably will, but not fully disclosing a critical security problem is very bad practice.

  21. Rob on 09 Aug 19:16:

    Do we have to install this? I don’t want to if we don’t have to!

  22. nick on 09 Aug 19:19:

    What about those of us who are using 1.0 cannot update to 1.1?

  23. Marcus on 09 Aug 19:25:

    I’m getting the same error Tim was getting and installing rubyzip didn’t fix it. The upgrade went fine on RHEL 3 and is failing on Windows with that error.

  24. Tyler Kovacs on 09 Aug 19:26:

    We just upgraded zvents.com and I just wanted to confirm that the upgrade was smooth and painless for us. Previous releases have required some code changes, but this time all tests are passing and there have been no known side effects. Hope that gives others confidence to update their sites sooner rather than later.

    As an aside, our site is a little slow right now due a packet loss issue in our data center. So, if you take a look, rest assured it has nothing to do with the 1.1.5 upgrade.

  25. RSL on 09 Aug 19:27:

    I’m still getting the buffer error. I wonder if it’s a Windows error only ‘cause I can totally update my *nix gems. :/

  26. John on 09 Aug 19:28:

    (Hopefully this won’t double post – the site is slow to respond.)

    Nevermind. “gem install rubyzip” fixed it.

    Unfortately, this doesn’t help me. I still get the buffer / Zlib error.

  27. Ben on 09 Aug 19:30:

    I’m having the zli::bugerror problem as well… any help?

  28. Timothy Johnson on 09 Aug 19:30:

    Thanks guys. Looking forward to 1.2!

  29. Ivan Storck on 09 Aug 19:33:

    I get this error on Mac OS X : /usr/local/lib/ruby/1.8/rdoc/parsers/parse_rb.rb:539: [BUG] Segmentation fault ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]

    Abort trap

  30. Ryan on 09 Aug 19:35:

    I’m getting the same error (on Windows XP).

    ERROR: While executing gem … (Zlib::BufError) buffer error

    Installing rubyzip however did not fix it. Any ideas?

  31. The Dude on 09 Aug 19:36:

    How does one go about upgrading the bundled copy of Rails that comes in the vendor/ directory of a pre-4.0 Typo install?

  32. Rich Duzenbury on 09 Aug 19:41:

    Not on XP

    Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

    C:\Documents and Settings\RDuzenbury.PANORA>gem install rubyzip Attempting local installation of ‘rubyzip’ Local gem file not found: rubyzip.gem Attempting remote installation of ‘rubyzip’ Successfully installed rubyzip-0.9.1

    C:\Documents and Settings\RDuzenbury.PANORA>gem install rails—include-dependen cies Attempting local installation of ‘rails’ Local gem file not found: rails.gem Attempting remote installation of ‘rails’ ERROR: While executing gem … (Zlib::BufError) buffer error

    Help!

  33. mithras on 09 Aug 19:43:

    Umm, won’t the diff between 1.1.5 and 1.1.4 give bad guys a pretty good lead on where to find the vulnerability anyway? It’s just the rest of us that are in the dark.

  34. Joe Ruby on 09 Aug 19:47:

    Dumb question, but ‘gem install rails’ is followed by ‘mongrel_rails cluster::restart’ in each and every Rails directory, right?

  35. Steve Smith on 09 Aug 19:48:

    I am also getting the same error and installing rubyzip doesn’t seem to fix it.

  36. Brittain on 09 Aug 19:48:

    Received the same buffer error. What is “rubyzip” and is that solution applicable to Windows also?

  37. Jos on 09 Aug 19:50:

    Tim, thanks for the tip, I was just going “What the heck!”.

  38. Kamil Kukura on 09 Aug 19:51:

    I did

    gem install rubyzip Bulk updating Gem source index for: http://gems.rubyforge.org Successfully installed rubyzip-0.9.1

    and still getting the same error while updating gem actionpack

  39. Michael Gorsuch on 09 Aug 19:55:

    Thank you for the heads up!

  40. DGM on 09 Aug 19:56:
    This problem affects 0.13, 0.14, 1.0, and 1.1.x.

    That would be why there should be a 1.0 branch… apply the patch to 1.0 and call it 1.0.1 ; then 1.0 people could upgrade a simple bugfix without worrying about it breaking.

    Rails core: you need to learn a few things about release management. :(

  41. Adam on 09 Aug 19:57:

    I was also getting the error:

    ERROR:  While executing gem ...   (Zlib::BufError)
        buffer error

    I installing rubyzip doesn’t seem to have any effect. Doing a “gem update—system” got a few more gems to update, but then failed again.

    Anyone know anything more? ( Using windows server 2003, against my will ;) )

  42. DW on 09 Aug 20:11:

    I just happened to check my RSS feeds and caught this announcement.

    But after this, I’m now looking for a security update only mailing list, and I’m not finding one. All I see off of the www.rubyonrails.org site is: http://lists.rubyonrails.org/mailman/listinfo/rails

    Am I missing where it’s at?

    I just want a low traffic mailing list that I can filter to alert me of updates and security updates ASAP. Both Debian and PHP offer lists like this.

  43. Jos on 09 Aug 20:18:

    Oops, actually the rubyzip does not help on Windows. I read packages would be updated to correct this, keep us posted.

  44. Laurel on 09 Aug 20:19:

    Just to be nitpickingly clear, the stable branch at 4744 has the fix? I’m guessing it does based on the svn log, but based on the capital letterness here I want to be absolutely sure…

  45. DHH on 09 Aug 20:29:

    Laurel, correct. You can either bind to r4737 or you can use tags/rel_1-1-5.

    DGM, we actually do have a tag for rel_1-1-0 and considering the fair number of people still tied to that, we’ll work on getting a fix ready for that version shortly as well.

  46. Joel on 09 Aug 20:29:

    Engines definitely seems to be broken. Others are having the same problem.

  47. Jon Moses on 09 Aug 20:30:

    I’m in the same boat (almost) as Casey. We’re not launching a rails site, we’ve launched, and are way to busy to upgrade from 1.0 right now.

    I’ve love a point release to 1.0 to fix this issue, or at least a “here’s how to fix it” posting.

  48. Mi.Sky on 09 Aug 20:32:

    Could you please include Ishikawa’s patch to ticket 3030 (IMHO also quite security-relevant) in one of the next security releases so that it needn’t be re-applied manually? See: http://dev.rubyonrails.org/ticket/3030

  49. devin on 09 Aug 20:36:

    I was getting the Zlib::BufError as well on both linux and windows platforms (worked on mac), but it seems to be working fine now using the same command: gem update—include-dependencies

  50. Daniel on 09 Aug 20:38:

    I second the points made by DGM and DW. I’m in the process of convincing my boss about using Rails for our next major project. I have had big hope in the success, but this makes me uncertain if that is a road I can recommend.

    Don’t take me wrong – I appriciate your great work on the framework, but this kind of forced rushed upgrades could prevent me from the joy of using it for real work.

  51. DGM on 09 Aug 20:47:

    Thanks, DHH, I’m sure there’s a lot of 1.0 users that need the fix. :)

    Bug fix point releases are fine with one line patches, if that’s all it takes to fix a bug. :)

  52. Winst on 09 Aug 21:12:

    I could see this happening again someday. Is there a security task force in the core team?

  53. Zachary Pinter on 09 Aug 21:15:

    I realize sh*t happens, and the only thing you can do in such a situation is try to help everybody as best you can (which is what the rails team is doing).

    So, thanks for letting us know and having a fix available so quickly.

  54. Nicholas Wright on 09 Aug 21:33:

    A forced upgrade without explanation!? I’ll kill you DHH!

    Hopefully nothing breaks during this upgrade. :)

  55. Adam on 09 Aug 21:33:

    I don’t think it’s so much security through obscurity as, “Update your systems now, we’ll explain it when folks are safe.”.

    You can always look at the source changes if you’re curious.

  56. YoNoSoyTu on 09 Aug 21:37:

    Ivan Storck [#29]: I also have those errors. Seems to be unrelated to Rails (at least not to this release of Rails) but something in PPC Ruby.

    I’ve Ruby 1.8.4 (2005-12-24) [powerpc-darwin] installed via Fink and have those errors installing via gems (and sometimes running Webrick). Just retry the command until you have no more errors.

  57. DHH on 09 Aug 21:56:

    Daniel, there’s no rush if you don’t mind having the security leak. Just as nobody is forcing you to upgrade Windows every week with the latest security fixes. Of course, not doing so greatly exposes you to the exploits of those holes. I think most people would appreciate the urgency and “rush” to get a fix out and applied in a hurry.

    If you are aware of any other web platforms with major adoption that has never seen a security fix release, I’d love to hear about it. That must be a truly fantastic team that we’d love to learn from.

    Winst, what would constitute a security task force in your mind? Every one in the core team cares about security (obviously, since we all have applications available over the internet). This hole was discovered within the core team and fixed by the core team. Does that qualify or are you thinking of something else?

  58. Karl on 09 Aug 22:00:

    Is the trac browser down on purpose to hide from malicious use—or just really slow because there are so many people trying to see the issue?

    A quick glance at a diff between 1.1.4 and 1.1.5 showed a sql injection test case addition, but didn’t seem to have corresponding fix/changes.

  59. Martin on 09 Aug 22:12:

    Real work blabla bosses blabla this and that preventing blabla. Im all SICK of it. Quit your freaking jobs and start your own happy buissness! How can you whine about a new version? Specially when using rails! We should be the last guys on earth who would like to go back to the stone age. Im so fed up with people saying “you need to run apache 1 because its more stable” and stuff like that. Just be a part of developing the future or not. And thanks to david and the rest of the rails team for their excellent work.

  60. Chris Mear on 09 Aug 22:19:

    It’s not the mere fact that there is a security release, it’s the fact that there’s a security release and you won’t tell us what it addresses, so we’re unable to make that decision about whether we should apply it or not.

    Instead, we have to take your word that this is super-important.

    Me, I’m happy with that, and in any case I can do a diff and see the magic secret. But you can see why people might be a bit frustrated with that approach.

  61. seth on 09 Aug 22:21:

    DHH -

    Daniel may be proposing a security “team” which is no more than those with the most security knowledge holding code reviews before any new code is released.

    If that had been the case, we wouldn’t even be hearing about this issue, as it would have been fixed quitely, in-house, and without this headache (for yourself, and “us”).

  62. DHH on 09 Aug 22:26:

    seth, having security code reviews is a good idea. We’d love to see people looking at the Rails source code with their blackhat glasses on and supplying patches. If you know how, please do get started right away.

    But its utterly unrealistic to think that it would mean absolutely safety from security issues. Windows, OS X, Apache, SQL Server, PHP, and just about any other piece of major platform software has had security issues even as millions (or in MS’ case, billions) of dollars has been spent on security reviews.

  63. Daniel Wanja on 09 Aug 22:30:

    Daniel, take it from another Daniel. Opennes of security issues is key for enterprise software. DHH is open in the sense that he identifies the fact that there is an issue and even provides a fix for it, and the source code is just open and available. Many other companies that provide enterprise application servers are not so open nor so reactive to solve such an issue. As an enterprise architect I can only recommend for many reasons to use Ruby On Rails. This is however not the thread of this discussion, but one of my recommendation points is exactly the security that rails offers.

  64. Marcus on 09 Aug 22:58:

    Has anyone figured out a way around the problem of engines being broken? I’m having the same issue.

  65. Ben Griffiths on 09 Aug 23:07:

    DHH, can you re-confirm that the exploit affects 1.0? We’ve been able to replicate what I think is the problem on 1.1.4, but our production apps are 1.0 and we can’t upgrade.

    We haven’t been able to replicate the problem in 1.0. Are there two separate problems? ie. should we continue trying?

  66. Sheldon Kotyk on 09 Aug 23:08:

    This is why I don’t use computers. I never had ANY security holes on my pen and paper. Although I keep losing the papers on my desk.

  67. Eric on 09 Aug 23:19:

    We’ve got multiple sites on Rails 1.0, some of which will require serious hacking to upgrade (e.g., custom-patched older releases of Typo).

    We need a 1.0.x gem, or else we’re hosed. There’s no way I can migrate all these sites to 1.1 quickly enough.

  68. Dido on 09 Aug 23:41:

    to Seth and everyone else who got headaches. Get som aspirin! You only got your self to blame because you didnt make maintainable applications in the first place! Some guys are complaining about their heavly modified typo application and stuff like that. And I just have to say, what did you guys think? Stick with rails 1.0 forever? If so, why even bother about a security issue? Dont build your applications on top of software you dont can maintain for example typo. All I had to do was to run gem update—include-dependencies and everything was updated, i barly had any problems with my applications, everything was easy to fix. Why? I just think its a matter of planning the software. Maybe David who is expert in this can tell us more about how important this is.

  69. bougyman on 09 Aug 23:59:

    Nothing is abnormal about a framework this large having a vulnerability from time to time. But corporations cannot make decisions for deployment based on the (lack of) information provided in this announcement. We love the rails environment and have been pleased with most aspects of the software delivery. However, when the rubber hits the road (real world security), procedures have been Horrible. Partial disclosure doesn’t give those who are running applications enough information to come up with a workaround (like using a webserver filter language to disallow the malformed request) and certainly not enough ammunition to convince a Suit that an immediate software upgrade is necessary. This leaves only the blackhat community free to play with the tree at their leisure, knowing that without drop-in patches for old versions or siginificant disclosure to upgrade the situation to Critical in an Enterprise environment, they’ll be able to run their sploit (which took 10 minutes to build) for weeks or months to come. Not maintaining an informative, coherent policy and procedure for releasing these announcements and patches could not only keep rails from being adopted in such managed environments, but flat-out get it pulled and replaced in those which it has already found its way. Including mine.

  70. John on 10 Aug 00:37:

    Security through obscurity is no security at all. A cracker can SVN diff it and have an exploit packaged up in under an hour. Once that hits the net, thousands of script kiddies will have it. Not disclosing the vulnerability doesn’t affect them; it only affects the legitimate user community. How can we know if our systems have been compromised when we don’t even know what sort of compromise to look for?

  71. Ryan Allen on 10 Aug 01:05:

    How do you contact the core team? I’ve got a large project on 1.0 that will need some substantial changes to update (and I’m not actually responsible for it anymore, but I’d like to work out something).

    How difficult would it be to release a patch?

  72. Mark on 10 Aug 01:11:

    Good point – what about the multitude of Typo installations frozen to Rails 1.0? The last thing you want is a whole bunch of Rails powered blogs being knocked out of service.

  73. Ryan Allen on 10 Aug 01:12:

    Oh, and cheers for the heads up :) Even though updating one of our projects to 1.1.5 from 1.0 will be a small undertaking it wont be a big bad deal.

    It means we’ll have to move our extentions out from ‘hacking rails code’ to proper plugins, which we know how to do, now :)

  74. Scott Meade on 10 Aug 01:26:

    Thanks for the heads up. Upgrade is complete here.

  75. Rabbit on 10 Aug 01:38:

    I see a lot of posters here think the way the vulnerability is being handled is careless and unhelpful.

    In regards to bougyman’s post, it sounds like he’s running with iron shoes. Your employer (company, whatever) adopted an agile framework, but (per your description) doesn’t have the social agility to handle unexpected surprises. Interesting. :)

    In regards to John’s post about doing an SVN diff – it sounds like you already know how to zero in on what the patch fixes. Why don’t you do that? :) (And then share it with us.)

    Maybe DHH gives people a little too much credit. =P

    That said, “at least we know.”

  76. Nube on 10 Aug 02:03:

    If we are on shared host without permission to update required rake dependency, will:

    svn export http://dev.rubyonrails.org/svn/rails/tags/rel_1-1-5 vendor/rails—force

    executed from the home directory for the application cover us?

  77. Eric on 10 Aug 02:23:

    OK, after closely examining the patch, verifying an attack against 1.1.4, failing to verify the attack against 1.0, and carefully reading through the corresponding code in 1.0, I’m not seeing any evidence that 1.0 is affected.

    A request to people on the inside: Please either verify that 1.0 is safe, or release a patch for 1.0.

    Failing that, please confirm that Rails 1.0 is officially unsupported, and all production systems still on Rails 1.0 need to be ported to 1.1 immediately.

  78. Rob Sanheim on 10 Aug 02:31:

    Mark: I’d imagine this is extra incentive for all those ppl to get their typo blogs up to 4.0. Those older versions of typo weren’t exactly stable, anyways, with the memory leaks and what not.

  79. Anon on 10 Aug 04:54:

    Is this patch related to fragment caching? One thing I just noticed is that its creating random folders in my cache directory for sites i dont own like babel.altavista.com, myweb.yahoo.com among others. I assume their is a flaw here cause there must be a way for an outside user to write any number of directories in my cache dir.

  80. Chris Dorner on 10 Aug 05:07:

    I’ve upgraded rails under Linux without any errors, thank you for your effort!

  81. Joel on 10 Aug 05:48:

    I figured out how to fix Engines, but explaining it would give away the exploit. It is very, very severe. If you use Engines you might want to drop back to 1.1.3 which evidently is unaffected.

  82. Mark on 10 Aug 06:10:

    “Good news: Rails 1.0 and prior is not affected”

    Those on shared hosts running Ruby 1.8.2 breathe a collective sigh of relief…

  83. Devin Ben-Hur on 10 Aug 06:44:

    It’s been said several times already, but needs repeating: Obscurity does not help or protect us.

    As a fairly fresh newcomer to Rails, I love my experience with RoR so far, but your security release policy shows a an immature understanding of addressing security issues. Please look to the example of more mature infrastructure projects for examples of the right way to manage this.

    Once you’ve said anything in public and released diff-able code, you absolutely are not hiding the vulnberability from the bad guys. But by not offering patches to all the in-use release levels and refusing to discuss the nature of the vulnerability, you are extending the vulnerability windows for many Rails apps.

    You could and should be engaged in a collaborative effort with your user community to test and improve the security patches, not playing hide the pickle with crackers who you should assume are already dishing out the relish.

  84. kalle on 10 Aug 09:45:

    see more info about this at http://blog.evanweaver.com/articles/2006/08/10/explanation-of-the-rails-security-vulnerability-in-1-1-4-others

  85. Daniel on 10 Aug 10:25:

    DHH > In response to #57.

    What I meant by “forced rushed upgrades” would be the need for upgrading not only with a security patch, but from an enviroment running stable on 1.0 directly to 1.1.5 with possibility of breaking the application.

    In your example that’s like Microsoft no longer supporting Windows 95/98 with security patches – and that’s the actual case, but they notified that a long way before, hence no “rush”.

    Now it seems like 1.0-users aren’t affected, and that’s great. But I still would need/like to know that future patches will be available for the branch we eventually will run our applications on.

    What I seconded was the idea of a security issue announce mailing list, and some kind of statement on wich branches are officially supported with new security patches.

    Sorry if I upset you. I tried to express my concerns without sounding like whining, but I possibly failed.

  86. jeroen@supercool.nl on 10 Aug 11:00:

    So do you have to change this line in environment.rb as well?

    RAILS_GEM_VERSION = ‘1.1.4’

  87. Labrat on 10 Aug 11:16:

    The backlash of this security update was interesting.

    I don’t think the core team handled it that bad. They already had a fix ready upon announcement.

    True that it doesn’t make sense to hide the specifics when a quick diff of 1.1.5 and the previous version reveals where the hole was.

    Also the ignorant misuse of “security by obscurity” is laughable because it refers to secrecy of design, implementation, etc. which is obviously impossible in an opensource project.

    What we are talking about are transparency issues here.

    With more and more high traffic sites using rails, my suggestion is that in the future if and when a security leak is discovered, the rails team provides a contact point where companies affected can get the specifics of the vulnerability.

    This should satisfy transparency concerns until ample time is given for an upgrade.

    I feel bad for the core team because here they are halting everything to get a security patch out and handling the issue in a remarkable manner in most respects and suddenly everybody thinks the project is being mismanaged or that they are spitting in the face of all rails developers.

    Plus, what if DHH just said, “1.1.5 is just some bug fixes and other issues—highly recommended for users of 1.1.x on”?

    That would be “security by deception”. The need for better transparency in handling this may be a valid concern but we need to look at it calmly and have a constructive dialogue instead of a knee jerk reaction.

    However, I will say that having the Trac down at a time like this sucks major and only exacerbates the problem. That’s the interface for most of the community to the source code and it should never be down no matter what the reason.

  88. Joshua on 10 Aug 11:26:

    I updated about 8 different apps and I didn’t have to shed 1 tear.

    Thanks for the heads up.

  89. Marcus on 10 Aug 12:06:

    Joel, could you email me a solution (marcus (at) vorwaller (dot) net) because in the meantime my site is down because of the engines issue. If you email me I’ll show you the site etc. to show that I’m not a l33t h4×04 :)

  90. Ed on 10 Aug 12:24:

    Sheldon Kotyk: “This is why I don’t use computers. I never had ANY security holes on my pen and paper. Although I keep losing the papers on my desk.”

    You’re not losing them. That’s the 1337 kL33n0rZ stealing them!

  91. TCrabtree on 10 Aug 12:51:

    This is the first time I’ve upgraded. Is ’ gem install rails—include-dependencies’ all that is necessary? Or is there more that I need to do? I didn’t encounter the Zlib error that others have.

  92. Dan Weber on 10 Aug 12:52:

    People who bleat “security through obscurity never works” don’t know what they’re talking about. Security through obscurity has worked lots of times.

    There are also times that it hasn’t.

    If you want to dictate how an open-source platform distributes its updates, then start one yourself. Their project, their call.

  93. Automated Rail Flaw Detector on 10 Aug 13:06:

    http://www.lippert-at.com/index.php?id=315

  94. s1lence on 10 Aug 13:50:

    DHH: Qmail is a major piece of software without any major security flaws.

    I want to give my verbal support to the rails core team. I believe it would have been better to disclose more info about the bug but comparing all the pros and all the cons that rails has given me and taking into account that ruby and rails are FREE software that I did not pay a dime to use I can’t imagine me bashing you for the way you are handling this (what I see is that you are honestly attempting to minimize the damage).

  95. Nathan Fisher on 10 Aug 14:37:

    While so many are complaining (b#tching as far as I’m concerned) about being locked into ver x.x.x, is that not the whole reason to write unit, functional, and integration testing? Upgrade on a test machine and run your tests, if you haven’t written tests then you have no right to complain as far as I am concerned. And if you have no clue as to how to write the tests properly then you probably have more to worry about in your application deployment then a critcal flaw in rails. No time to write tests well that’s like saying I have no time to work with version control, it’s an excuse and nothing more.

  96. Adam Fields on 10 Aug 14:47:

    Is it required to run rake rails:update after doing this?

  97. Nate Nielsen on 10 Aug 14:50:

    How about posting on bugtraq like nice normal people do when there’s a security vulnerability? It helps those of us for whom rails is just one in thousands of installations of various packages.

  98. Andrew Arnott on 10 Aug 15:17:

    Thanks for all your great work, Rails team! I think your temporary “security through obscurity” approach is the best that you could have done, given the circumstances.

  99. Joris L. on 10 Aug 15:30:

    Guh! So a post appears on a site saying there’s a serious security flaw in the software running that same site.

    Then you’re urged to download and patch immediately from that same possibly compromised site and server.

    Who’d do that ?

    Ever ?

  100. Pascal Hofmann on 10 Aug 16:02:

    Fix for Engines: http://dev.rails-engines.org/repository/changesets/414

  101. mm on 10 Aug 16:06:

    Although I also am an advocate of full disclosure and public SA papers, what appears to be problematic is the lack of support for older branches.

    A “Security officer” team’s task usually encompass patching older supported trees.

    Often, one to two older releases will continue to be supported and security patches always applied to those branches for those who track the branch sticky tag. Too old branches eventually get deprecated and stop being updated of course, but this is part of the well known policies of the project and there never are surprises.

    This, of course assumes that users and developers both know how to properly use their software versioning system.

    This method has worked for many projects for many years and has proven successful (including for substantially larger projects such as the BSDs). There probably is some learning to do here by the development team.

    Thanks

  102. dizave on 10 Aug 16:08:

    Gotta love the knee-jerk buzzword-parrotting responses ;D

  103. Philip on 10 Aug 16:27:

    DHH -

    Can you tell us when you’ll release full disclosure? How long are you going to give people. All I’ve seen to date is a “fair chance”.

    Thanks, -philip

  104. ErneX on 10 Aug 16:40:

    Just update our server, btw to some of you, Arnie says: “STOP WHINING!”

  105. Brian Hogan on 10 Aug 16:44:

    I just wonder what’s going on here. Some people say it’s fixed, but my apps still break with Mongrel and so I had to patch routing.rb line 276 with this

    base.match(/\A#{Regexp.escape(extended_root)}\/*(?:#{file_kinds(:lib) *’|’})/) || base =~%r{rails-[\d.]+/builtin}

    before it would work with Mongrel.

    Thanks to Sander Land from the Rails list for that, or I’d be down right now.

    It doesn’t appear to be fixed everywhere… so I’d like to know why I’m rushing to patch things.

  106. scrapmaster on 10 Aug 17:21:

    I appreciate the core team’s commonsense approach to this situation. Upgrade went smoothly for me. Thanks.

  107. Mike on 10 Aug 17:46:

    Not disclosing the nature of the issue is baaaaaaaaaad. -5 for handling.

  108. Paul on 10 Aug 18:40:

    Bad timing—sometime this morning between the different machines I had to upgrade, it appears that Rails 1.1.6 has been released which has a dependency on a version of actionpack that doesn’t actually seem to exist. Thus it breaks a blind attempt at “gem update rails” which doesn’t go into specifics as to why actionpack cannot be installed. For those that run into this problem, try “gem install rails -v 1.1.5”

  109. Patrick Higgins on 10 Aug 18:40:

    What bothers me the most about this is that I believe I’ve found some bugs in the patch, as have others. I respect the team’s wish to try to keep this under wraps, but the infrastructure for discussing problems with the 1.1.5 fix without making it fully public does not seem to be in place. I sent my findings to DHH, but was unable to locate the email address of the author of the original fix. If delayed disclosure is going to be used going forward, some form of infrastructure and instructions for communicating problems with the “fix” to the core team needs to be developed and made easy to find.

  110. DHH on 10 Aug 18:53:

    Paul, that was slow gem propagation. This has been fixed. We also reported an alternative way to do the update in the Rails 1.1.6 announcement.

  111. tw1nk on 11 Aug 02:55:

    Ok updating now.

    But not releasing any info about the problem doesn’t seem like an professional way to handle the problem.

    Who knows you are not someone who has hacked the site and has somehow injected your own hacked version of rails in the gem install system?

  112. Ahmad Alhashemi on 11 Aug 05:22:

    WOW.

    The response and attitude of the Rails team towards this security issue must be the best I’ve ever seen in a similar situation.

    Way to go.

  113. Morten on 11 Aug 07:16:

    Engines are still not working… the path suggested by Pascal does not work…

    ...any ideas?

  114. abr on 11 Aug 10:04:

    Hi. Why no details are released? What if I can’t patch? Could I twart or stop an attack using a firewall rule or container configuration? What If I use a layered security model (Firewall/IDS/OS Hardening/Container Hardening/App Hardening)? See that’s why security through obscurity does not work, even if you give a fair chance to upgrade, someone will not be able to upgrade in time. It is faster to come with a firewall rule or another workaround and patch at your own time. Ever heard about zero-patch sercurity? You guys know ANYTHING about patch managemen or information SECURITY to say the least?

    All you are saying is… if you are a bad guy with time in your hands, diff 1.5 against a vulnerable version and comeup with your attack. If you are a sysadmin with no time to spare… you are on your own.

    Redeem yourselves and give at least some alternatives to the patch.

    Cheers

  115. Joris L. on 11 Aug 14:11:

    Given today 1.1.6 post i’d like to compliment the RAILS team. Great work, courageous tactic.

  116. Ash on 11 Aug 18:02:

    Not revealing the actual patch. Does that mean that you havent fixed the complete security hole. Maybe you have patched only part of it and therefore fear that someone may realize the rest of the gaping hole? That definitely sends jitters up my spine on the stability. How many more such black box patches will I have to install on my site going ahead?

  117. nicholas on 11 Aug 18:05:

    Ash: Please see the 1.1.6 post. Patches are available for all affected versions.

  118. Thomas on 12 Aug 09:24:

    rubyzip is not used by rubygems, so installing it or updating it will not solve the Zlib::BufError you see when attempting to install the rails gem. Both rubyzip and rubygems rely on zlib, and both occassionally run into the Zlib::BufError. I believe it is a bug in the ruby-wrapper of the zlib library.

  119. James on 30 Aug 15:58:

    Hi, I’m a total ruby/rails novice and have just been given a rails site to support. I’m running rails 1.1.2, but it’s not entirely clear what I need to do to update it. Are there any step by step instructions on what I need to do? thanks