<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Ruby News</title>
    <link>http://www.ruby-lang.org/en/feeds/news.rss</link>
    <language>en-US</language>
    <ttl>40</ttl>
    <description>The latest news from ruby-lang.org.</description>
    
    <item>
      <title>A brand-new ruby-lang.org has been released</title>
      <description>&lt;p&gt;On behalf of the Ruby community, we are pleased to announce to you that
a brand-new ruby-lang.org is now live!&lt;/p&gt;

&lt;p&gt;Ruby’s official website has stalled over the years, leading to a situation
where only a subset of the available languages were actually maintained.
Still, their content may not even be relevant in the current Ruby ecosystem.
Something had to be done! A few rubyists thus gathered to build a whole new
contribution platform, switching from a private CMS to an open process.&lt;/p&gt;

&lt;p&gt;Everyone is now able to edit the content and fix kinks in no time!
We have set up a git-based process and Jekyll now powers the website:
visit &lt;a href=&quot;https://github.com/ruby/www.ruby-lang.org/wiki&quot;&gt;https://github.com/ruby/www.ruby-lang.org/wiki&lt;/a&gt; to learn more
about the project and how to contribute.&lt;/p&gt;

&lt;p&gt;We hope to be hearing from you and reviewing your Pull Requests,&lt;/p&gt;

&lt;p&gt;Hal Brodigan (postmodern),&lt;br /&gt;
Jean-Denis Vauguet (chikamichi),&lt;br /&gt;
Marcus Stollsteimer (stomar),&lt;br /&gt;
James Edward Gray II (JEG2),&lt;br /&gt;
Hiroshi Shibata (hsbt).&lt;/p&gt;

</description>
      <pubDate>Wed, 12 Jun 2013 12:00:00 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/06/12/new-ruby-lang-org-released/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/06/12/new-ruby-lang-org-released/</link>
    </item>
    
    <item>
      <title>Ruby 1.9.3-p429 is released</title>
      <description>&lt;p&gt;Now Ruby 1.9.3-p429 is released.
We once released p426 some hours before, but it had build problems on some platforms.
Use this p429 instead, please.&lt;/p&gt;

&lt;p&gt;This release includes a security fix about bundled DL / Fiddle.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/&quot;&gt;Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And some small bugfixes are also included.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&amp;amp;status_id=5&quot;&gt;tickets&lt;/a&gt; and &lt;a href=&quot;http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_429/ChangeLog&quot;&gt;ChangeLog&lt;/a&gt; for details.&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;p&gt;You can download this release from:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   10042323 bytes
MD5:    c2b2de5ef15ea9b1aaa3152f9112af1b
SHA256: 9d8949c24cf6fe810b65fb466076708b842a3b0bac7799f79b7b6a8791dc2a70
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   12553234 bytes
MD5:    993c72f7f805a9eb453f90b0b7fe0d2b
SHA256: d192d1afc46a7ef27b9d0a3c7a67b509048984db2c38907aa82641bdf980acf4
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   13869978 bytes
MD5:    1986f3934e61b999873d21a79d69d88d
SHA256: 8bd0ecc2dd8eec471aa44f88abdcd82f4b398e9110ca06f76eff066b653b8b90
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Release Comment&lt;/h2&gt;

&lt;p&gt;Many committers, testers and users who gave bug reports helped me to
make this release. Thanks for their contributions.&lt;/p&gt;
</description>
      <pubDate>Tue, 14 May 2013 17:00:00 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/05/14/ruby-1-9-3-p429-is-released/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/05/14/ruby-1-9-3-p429-is-released/</link>
    </item>
    
    <item>
      <title>Ruby 2.0.0-p195 is released</title>
      <description>&lt;p&gt;Ruby 2.0.0-p195 is released. This is the first patchlevel release of 2.0.0.&lt;/p&gt;

&lt;p&gt;This release includes a security fix of Ruby DL / Fiddle extension.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/&quot;&gt;Object taint bypassing in DL and Fiddle in Ruby
(CVE-2013-2065)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there are many bug-fixes and some optimization, and documentation fixes.&lt;/p&gt;

&lt;h2&gt;Downloads&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   10807456 bytes
MD5:    2f54faea6ee1ca500632ec3c0cb59cb6
SHA256: 0be32aef7a7ab6e3708cc1d65cd3e0a99fa801597194bbedd5799c11d652eb5b
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   13641558 bytes
MD5:    0672e5af309ae99d1703d0e96eff8ea5
SHA256: a2fe8d44eac3c27d191ca2d0ee2d871f9aed873c74491b2a8df229bfdc4e5a93
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip&quot;&gt;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   15092199 bytes
MD5:    924fe4bea72b1b258655211998631791
SHA256: 81a4dc6cc09e491d417a51e5983c4584eff849e2a186ec3affdbe5bc15cd7db5
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Changes&lt;/h2&gt;

&lt;p&gt;Major fixes are below.
See &lt;a href=&quot;http://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_195/ChangeLog&quot;&gt;ChangeLog&lt;/a&gt;
or &lt;a href=&quot;https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&amp;amp;status_id=5&quot;&gt;Tickets&lt;/a&gt;
for details.&lt;/p&gt;

&lt;p&gt;Thank you all committers/contributors.&lt;/p&gt;

&lt;h3&gt;Core - prepend&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7841 Module#prepend now detect cyclic prepend.
  #7843 removing prepended methods causes exceptions.
  #8357 Module#prepend breaks Module&#39;s comparison operators.
  #7983 Module#prepend can&#39;t override Fixnum&#39;s operator methods.
  #8005 methods made private/protected after definition become uncallable on prepended class.
  #8025 Module#included_modules include classes when prepended.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Core - keyword arguments&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7922 unnamed keyword rest argument cause SyntaxError.
  #7942 support define method only receive keyword arguments without paren.
  #8008 fix a bug in super with keyword arguments.
  #8236 fix a treatment of rest arguments and keyword arguments through `super&#39;.
  #8260 non-symbol key should not treated as keyword arguments.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Core - refinements&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7925 fix a bug of refinements with a method call super in a block.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Core - GC&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #8092 improve accuracy of GC.stat[:heap_live_num]
  #8146 avoid unnecessary heap growth.
  #8145  fix unlimited memory growth with large values of RUBY_FREE_MIN.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Core - Regexp&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7972 Regexp POSIX space class is location sensitive.
  #7974 Regexp case-insensitive group doesn&#39;t work.
  #8023 Regexp lookbehind assertion fails with /m mode enabled
  #8001 Regexp \Z matches where it shouldn&#39;t
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Core - other&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #8063 fix a potential memory violation and avoid abort on the environment _FORTIFY_SOURCE=2 (ex. Ubuntu).
  #8175 ARGF#skip doesn&#39;t work as documented.
  #8069 File.expand_path(&#39;something&#39;, &#39;~&#39;) now support home path on Windows.
  #8220 fix a Segmentation fault when defined? ().
  #8367 fix a regression in defined?(super).
  #8283 Dir.glob doesn&#39;t recurse hidden directories.
  #8165 fix a bug of multiple require with non-ascii file path.
  #8290 fix an incompatible String#inspect behavior with NUL character.
  #8360 fix a Segmentation fault of Thread#join(Float::INFINITY) on some platforms.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;RubyGems&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  Bundled RubyGems version is updated to 2.0.2+
  #7698 fix an rubygems&#39; incompatibility about installation of extension libraries.
  #8019 fix a bug of gem list --remote doesn&#39;t work.
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Libraries&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7911 File.fnmatch with US-ASCII pattern and UTF-8 path raise an exception.
  #8240 fix a bug about OpenSSL::SSL::SSLSocket breaks other connections or files on GC.
  #8183 CGI.unescapeHTML can&#39;t decode Numeric Character References with uppercase (&amp;amp;#Xnnnn).
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Build/Platform specific&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;  #7830 fix build failure with compiler warning.
  #7950 fix a build failure on mswin/VC with --with-static-linked-ext.
&lt;/code&gt;&lt;/pre&gt;
</description>
      <pubDate>Tue, 14 May 2013 13:00:01 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/05/14/ruby-2-0-0-p195-is-released/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/05/14/ruby-2-0-0-p195-is-released/</link>
    </item>
    
    <item>
      <title>Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)</title>
      <description>&lt;p&gt;There is a vulnerability in DL and Fiddle in Ruby where tainted strings can be
used by system calls regardless of the $SAFE level set in Ruby. This
vulnerability has been assigned the CVE identifier CVE-2013-2065.&lt;/p&gt;

&lt;h2&gt;Impact&lt;/h2&gt;

&lt;p&gt;Native functions exposed to Ruby with DL or Fiddle do not check the taint
values set on the objects passed in.  This can result in tainted objects being
accepted as input when a SecurityError exception should be raised.&lt;/p&gt;

&lt;p&gt;Impacted DL code will look something like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;my_function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;    &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dlopen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys_cfunc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:CFunc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_INT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;       &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:Function&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sys_cfunc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_VOIDP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;vg&quot;&gt;$SAFE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_function&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;uname -rs&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;taint&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Impacted Fiddle code will look something like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;my_function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;    &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dlopen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:Function&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                             &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_VOIDP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_INT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;vg&quot;&gt;$SAFE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_function&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;uname -rs&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;taint&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;All users running an affected release should either upgrade or use one of the
workarounds immediately.&lt;/p&gt;

&lt;p&gt;Note that this &lt;em&gt;does not&lt;/em&gt; prevent numeric memory offsets from being used as
pointer values.  Numbers cannot be tainted, so code passing a numeric memory
offset cannot be checked.  For example:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;my_function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;    &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dlopen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:Function&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                             &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_VOIDP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:TYPE_INT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;input&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;vg&quot;&gt;$SAFE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;uname -rs&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;taint&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_function&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:CPtr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In this case, the memory location is passed, and taintedness of the object
cannot be determined by DL / Fiddle.  In this case, please check the tainting
of the user input before passing the memory location:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;uname -rs&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;taint&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;vg&quot;&gt;$SAFE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tainted?&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;my_function&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:CPtr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Workarounds&lt;/h2&gt;

&lt;p&gt;If you cannot upgrade Ruby, this monkey patch can be used as a workaround:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Fiddle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Function&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:old_call&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:call&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;call&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;vg&quot;&gt;$SAFE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;any?&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tainted?&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;SecurityError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;tainted parameter not allowed&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;old_call&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Affected versions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 426&lt;/li&gt;
  &lt;li&gt;All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 195&lt;/li&gt;
  &lt;li&gt;prior to trunk revision 40728&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ruby 1.8 versions are not affected.&lt;/p&gt;

&lt;h2&gt;Credits&lt;/h2&gt;

&lt;p&gt;Thanks to Vit Ondruch for reporting this issue.&lt;/p&gt;

&lt;h2&gt;History&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Originally published at 2013-05-14 13:00:00 (UTC)&lt;/li&gt;
&lt;/ul&gt;
</description>
      <pubDate>Tue, 14 May 2013 13:00:00 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/</link>
    </item>
    
    <item>
      <title>Ruby 2.0.0-p0 is released</title>
      <description>&lt;p&gt;We are pleased to announce the release of Ruby 2.0.0-p0.&lt;/p&gt;

&lt;p&gt;Ruby 2.0.0 is the first stable release of the Ruby 2.0 series, with many
new features and improvements in response to the increasingly diverse
and expanding demands for Ruby.&lt;/p&gt;

&lt;p&gt;Enjoy programming with Ruby 2.0.0!&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   10814890 bytes
MD5:    895c1c581f8d28e8b3bb02472b2ccf6a
SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   13608925 bytes
MD5:    50d307c4dc9297ae59952527be4e755d
SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   15037340 bytes
MD5:    db5af5d6034646ad194cbdf6e50f49ee
SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What is Ruby 2.0.0&lt;/h2&gt;

&lt;h3&gt;New Features&lt;/h3&gt;

&lt;p&gt;Some of the highlights:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Language core features
    &lt;ul&gt;
      &lt;li&gt;Keyword arguments, which give flexibility to API design&lt;/li&gt;
      &lt;li&gt;Module#prepend, which is a new way to extend a class&lt;/li&gt;
      &lt;li&gt;A literal %i, which creates an array of symbols easily&lt;/li&gt;
      &lt;li&gt;__dir__, which returns the dirname of the file currently being
executed&lt;/li&gt;
      &lt;li&gt;The UTF-8 default encoding, which make many magic comments omissible&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Built-in libraries
    &lt;ul&gt;
      &lt;li&gt;Enumerable#lazy and Enumerator::Lazy, for (possibly infinite) lazy
stream&lt;/li&gt;
      &lt;li&gt;Enumerator#size and Range#size, for lazy size evaluation&lt;/li&gt;
      &lt;li&gt;#to_h, which is a new convention for conversion to Hash&lt;/li&gt;
      &lt;li&gt;Onigmo, which is a new regexp engine (a fork of Oniguruma)&lt;/li&gt;
      &lt;li&gt;Asynchronous exception handling API&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Debug support
    &lt;ul&gt;
      &lt;li&gt;DTrace support, which enables run-time diagnosis in production&lt;/li&gt;
      &lt;li&gt;TracePoint, which is an improved tracing API&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Performance improvements
    &lt;ul&gt;
      &lt;li&gt;GC optimization by bitmap marking&lt;/li&gt;
      &lt;li&gt;Kernel#require optimization which makes Rails startup very fast&lt;/li&gt;
      &lt;li&gt;VM optimization such as method dispatch&lt;/li&gt;
      &lt;li&gt;Float operation optimization&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, albeit as an experimental feature, 2.0.0 includes
Refinements, which adds a new concept to Ruby&#39;s modularity.&lt;/p&gt;

&lt;p&gt;See also NEWS for more features, improvements and details.&lt;/p&gt;

&lt;h3&gt;Compatibility&lt;/h3&gt;

&lt;p&gt;We have also taken care with the 2.0.0 design to make it compatible with
1.9. It will be easier to migrate from 1.9 to 2.0 than it was from 1.8
to 1.9. (The notable incompatibilities are described later.)&lt;/p&gt;

&lt;p&gt;In fact, thanks to the dedicated work of third parties, some popular
applications such as Rails and tDiary have been reported to work on the
release candidate version of 2.0.0.&lt;/p&gt;

&lt;h3&gt;Documentation&lt;/h3&gt;

&lt;p&gt;We have also made documentation improvements which many rubyists have
requested. We have added a huge amount of rdoc for modules and methods.
2.0.0 will be around 75% documented while 1.9.3 was about 60%. Also, we
have added a description of Ruby&#39;s syntax. You can see:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;sh&quot;&gt;ri ruby:syntax
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Stability&lt;/h3&gt;

&lt;p&gt;Note that unlike 1.9.0, 2.0.0 IS a stable release, even though its TEENY
is 0. All library authors are strongly recommended to support 2.0.0. As
mentioned above, it will be comparatively easy to migrate from 1.9 to
2.0.&lt;/p&gt;

&lt;p&gt;Ruby 2.0.0 is ready for practical use, and will absolutely improve your
Ruby life.&lt;/p&gt;

&lt;h2&gt;Notes&lt;/h2&gt;

&lt;h3&gt;Introductory articles&lt;/h3&gt;

&lt;p&gt;Here are some introductory articles of 2.0.0 features by third parties:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example&quot;&gt;&amp;lt;URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example&amp;gt;&lt;/a&gt;
(comprehensive, recommended)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0&quot;&gt;&amp;lt;URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0&amp;gt;&lt;/a&gt;
(comprehensive, recommended)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html&quot;&gt;&amp;lt;URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html&amp;gt;&lt;/a&gt;
(brief, in Japanese)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/nagachika/rubyist-enumeratorlazy&quot;&gt;&amp;lt;URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy&amp;gt;&lt;/a&gt;
(only Enumerator::Lazy, in Japanese)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following articles are also helpful, but outdated with regards to
refinement:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://rubysource.com/a-look-at-ruby-2-0/&quot;&gt;&amp;lt;URL:http://rubysource.com/a-look-at-ruby-2-0/&amp;gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails&quot;&gt;&amp;lt;URL:https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails&amp;gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/&quot;&gt;&amp;lt;URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/&amp;gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2012/11/ruby-20-preview1&quot;&gt;&amp;lt;URL:http://www.infoq.com/news/2012/11/ruby-20-preview1&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, the recent issue of &quot;Rubyist Magazine&quot; includes some articles
that were written by the feature authors themselves for introducing some
new 2.0.0 features.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://jp.rubyist.net/magazine/?0041-200Special&quot;&gt;&amp;lt;URL:http://jp.rubyist.net/magazine/?0041-200Special&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Though they will be written in Japanese, English translations are
planned for the future.&lt;/p&gt;

&lt;h3&gt;Incompatibility&lt;/h3&gt;

&lt;p&gt;There are five notable incompatibilities we know of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The default encoding for ruby scripts is now UTF-8 [#6679]. Some
people report that it affects existing programs, such as some
benchmark programs becoming very slow [ruby-dev:46547].&lt;/li&gt;
  &lt;li&gt;Iconv was removed, which had already been deprecated when M17N was
introduced in ruby 1.9. Use String#encode, etc. instead.&lt;/li&gt;
  &lt;li&gt;There is ABI breakage [ruby-core:48984]. We think that normal users
can/should just reinstall extension libraries. You should be aware: DO
NOT COPY .so OR .bundle FILES FROM 1.9.&lt;/li&gt;
  &lt;li&gt;#lines, #chars, #codepoints, #bytes now returns an Array instead of an
Enumerator [#6670]. This change allows you to avoid the common idiom
&quot;lines.to_a&quot;. Use #each_line, etc. to get an Enumerator.&lt;/li&gt;
  &lt;li&gt;Object#inspect does always return a string like
#&amp;lt;ClassName:0x…&amp;gt; instead of delegating to #to_s. [#2152]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are some comparatively small incompatibilities.
[ruby-core:49119]&lt;/p&gt;

&lt;h3&gt;Status of Refinements&lt;/h3&gt;

&lt;p&gt;We have added a feature called Refinements, which adds a new concept to
Ruby&#39;s modularity. However, please be aware that Refinements is still
an experimental feature: we may change its specification in the future.
Despite that, we would like you to play with it and give us your
thoughts. Your feedback will help to forge this interesting feature.&lt;/p&gt;

&lt;h2&gt;Acknowledgment&lt;/h2&gt;

&lt;p&gt;A great many people contributed to 2.0.0. Even an incomplete
acknowledgment for only a few parts of contributions became too big to
insert here. Sorry but let me just add a link to the special thanks
page.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks&quot;&gt;&amp;lt;URL:https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you all!&lt;/p&gt;

</description>
      <pubDate>Sun, 24 Feb 2013 09:06:22 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/</link>
    </item>
    
    <item>
      <title>Ruby 1.9.3-p392 is released</title>
      <description>&lt;p&gt;Now Ruby 1.9.3-p392 is released. I apologize for updating too
frequently.&lt;/p&gt;

&lt;p&gt;This release includes security fixes about bundled JSON and REXML.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.ruby-lang.org/en/news/2013/02/22/json-dos-cve-2013-0269/&quot;&gt;Denial of Service and Unsafe Object Creation Vulnerability in JSON
(CVE-2013-0269)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/&quot;&gt;Entity expansion DoS vulnerability in REXML (XML bomb)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And some small bugfixes are also included.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&amp;amp;status_id=5&quot;&gt;tickets&lt;/a&gt; and &lt;a href=&quot;http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_392/ChangeLog&quot;&gt;ChangeLog&lt;/a&gt; for details.&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;p&gt;You can download this release from:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   10024221 bytes
MD5:    a810d64e2255179d2f334eb61fb8519c
SHA256: 5a7334dfdf62966879bf539b8a9f0b889df6f3b3824fb52a9303c3c3d3a58391
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   12557294 bytes
MD5:    f689a7b61379f83cbbed3c7077d83859
SHA256: 8861ddadb2cd30fb30e42122741130d12f6543c3d62d05906cd41076db70975f
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip&quot;&gt;&amp;lt;URL:ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip&amp;gt;&lt;/a&gt;&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;SIZE:   13863402 bytes
MD5:    212fb3bc41257b41d1f8bfe0725916b7
SHA256: f200ce4a63ce57bea64028a507350717c2a16bdbba6d9538bc69e9e7c2177c8b
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Release Comment&lt;/h2&gt;

&lt;p&gt;Many committers, testers and users who gave bug reports helped me to
make this release. Thanks for their contributions.&lt;/p&gt;

</description>
      <pubDate>Fri, 22 Feb 2013 13:09:05 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/22/ruby-1-9-3-p392-is-released/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/22/ruby-1-9-3-p392-is-released/</link>
    </item>
    
    <item>
      <title>Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)</title>
      <description>&lt;p&gt;Unrestricted entity expansion can lead to a DoS vulnerability in REXML.
This vulnerability has been assigned the CVE identifier CVE-2013-1821.
We strongly recommend to upgrade ruby.&lt;/p&gt;

&lt;h2&gt;Details&lt;/h2&gt;

&lt;p&gt;When reading text nodes from an XML document, the REXML parser can be
coerced in to allocating extremely large string objects which can
consume all of the memory on a machine, causing a denial of service.&lt;/p&gt;

&lt;p&gt;Impacted code will look something like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;n&quot;&gt;document&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;REXML&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:Document&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;some_xml_doc&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;text&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;When the `text` method is called, entities will be expanded. An
attacker can send a relatively small XML document that, when the
entities are resolved, will consume extreme amounts of memory on the
target system.&lt;/p&gt;

&lt;p&gt;Note that this attack is similar to, but different from the Billion
Laughs attack. This is also related to CVE-2013-1664 of Python.&lt;/p&gt;

&lt;p&gt;All users running an affected release should either upgrade or use one
of the workarounds immediately.&lt;/p&gt;

&lt;h2&gt;Workarounds&lt;/h2&gt;

&lt;p&gt;If you cannot upgrade Ruby, use this monkey patch as a workaround:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;REXML&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Document&lt;/span&gt;
  &lt;span class=&quot;vc&quot;&gt;@@entity_expansion_text_limit&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10_240&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;entity_expansion_text_limit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vc&quot;&gt;@@entity_expansion_text_limit&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;val&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;entity_expansion_text_limit&lt;/span&gt;
    &lt;span class=&quot;vc&quot;&gt;@@entity_expansion_text_limit&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;REXML&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Text&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;unnormalize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;doctype&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;illegal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kp&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;sum&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\r\n?/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;REFERENCE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;expand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$&amp;amp;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;doctype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sum&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;bytesize&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;REXML&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:Document&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;entity_expansion_text_limit&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;entity expansion has grown too large&amp;quot;&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;sum&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;bytesize&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;expand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;doctype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;?#&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;?x&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;U*&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;U*&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;amp;amp;&amp;#39;&lt;/span&gt;
      &lt;span class=&quot;s1&quot;&gt;&amp;#39;&amp;amp;&amp;#39;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;elsif&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;doctype&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;doctype&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;entity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;entity_value&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;DocType&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:DEFAULT_ENTITIES&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;entity_value&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entity_value&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ref&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This monkey patch will limit the size of the entity substitutions to 10k
per node. REXML already defaults to only allow 10000 entity
substitutions per document, so the maximum amount of text that can be
generated by entity substitution will be around 98 megabytes.&lt;/p&gt;

&lt;h2&gt;Affected versions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392&lt;/li&gt;
  &lt;li&gt;All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0&lt;/li&gt;
  &lt;li&gt;prior to trunk revision 39384&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Credits&lt;/h2&gt;

&lt;p&gt;Thanks to Ben Murphy for reporting this issue.&lt;/p&gt;

&lt;h2&gt;History&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Added about CVE number at 2013-03-11 07:45:00 (UTC)&lt;/li&gt;
  &lt;li&gt;Originally published at 2013-02-22 12:00:00 (UTC)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <pubDate>Fri, 22 Feb 2013 13:08:51 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/</link>
    </item>
    
    <item>
      <title>Denial of Service and Unsafe Object Creation Vulnerability in JSON (CVE-2013-0269)</title>
      <description>&lt;p&gt;There is a denial of service and unsafe object creation vulnerability in
the json bundled with ruby. This vulnerability has been assigned the CVE
identifier CVE-2013-0269. We strongly recommend to upgrade ruby.&lt;/p&gt;

&lt;h2&gt;Details&lt;/h2&gt;

&lt;p&gt;When parsing certain JSON documents, the JSON gem (includes bundled with
ruby) can be coerced in to creating Ruby symbols in a target system.
Since Ruby symbols are not garbage collected, this can result in a
denial of service attack.&lt;/p&gt;

&lt;p&gt;The same technique can be used to create objects in a target system that
act like internal objects. These &quot;act alike&quot; objects can be used to
bypass certain security mechanisms and can be used as a spring board for
SQL injection attacks in Ruby on Rails.&lt;/p&gt;

&lt;p&gt;Impacted code looks like this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;no&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Where the `user_input` variable will have a JSON document like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{&quot;json_class&quot;:&quot;foo&quot;}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The JSON gem will attempt to look up the constant &quot;foo&quot;. Looking up
this constant will create a symbol.&lt;/p&gt;

&lt;p&gt;In JSON version 1.7.x, objects with arbitrary attributes can be created
using JSON documents like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{&quot;json_class&quot;:&quot;JSON::GenericObject&quot;,&quot;foo&quot;:&quot;bar&quot;}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This document will result in an instance of JSON::GenericObject, with
the attribute &quot;foo&quot; that has the value &quot;bar&quot;. Instantiating these
objects will result in arbitrary symbol creation and in some cases can
be used to bypass security measures.&lt;/p&gt;

&lt;p&gt;PLEASE NOTE: this behavior &lt;strong&gt;does not change&lt;/strong&gt; when using `JSON.load`.
`JSON.load` should &lt;strong&gt;never&lt;/strong&gt; be given input from unknown sources. If
you are processing JSON from an unknown source, &lt;strong&gt;always&lt;/strong&gt; use
`JSON.parse`.&lt;/p&gt;

&lt;p&gt;All users running an affected release should either upgrade or use one
of the workarounds immediately.&lt;/p&gt;

&lt;h2&gt;Workarounds&lt;/h2&gt;

&lt;p&gt;For users that cannot upgrade ruby or JSON gem, change your code from
this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;no&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To this:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;no&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:create_additions&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If you cannot change the usage of `JSON.parse` (for example you&#39;re
using a gem which depends on `JSON.parse` like multi_json), then
apply this monkey patch:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;module&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;JSON&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:old_parse&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:parse&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{})&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:create_additions&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kp&quot;&gt;false&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;old_parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Affected versions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392&lt;/li&gt;
  &lt;li&gt;All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0&lt;/li&gt;
  &lt;li&gt;prior to trunk revision 39208&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Credits&lt;/h2&gt;

&lt;p&gt;A huge thanks goes to the following people for responsibly disclosing
this issue and working with the Rails team to get it fixed:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Thomas Hollstegge of Zweitag (www.zweitag.de)&lt;/li&gt;
  &lt;li&gt;Ben Murphy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;History&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Originally published at 2013-02-22 12:00:00 (UTC)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <pubDate>Fri, 22 Feb 2013 13:08:38 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/22/json-dos-cve-2013-0269/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/22/json-dos-cve-2013-0269/</link>
    </item>
    
    <item>
      <title>The Barcelona Ruby Conference Call for Papers is Open</title>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://baruco.org&quot;&gt;Barcelona Ruby Conference&lt;/a&gt;&lt;/strong&gt; is a conference that takes place in
the heart of &lt;strong&gt;Catalunya, Spain&lt;/strong&gt; this September 14-15. Starring
&lt;a href=&quot;http://baruco.org/speakers&quot;&gt;world-class speakers&lt;/a&gt; as &lt;strong&gt;Aaron Patterson&lt;/strong&gt; (rails and ruby core),
&lt;strong&gt;David Chelimsky&lt;/strong&gt; (&lt;em&gt;The RSpec book&lt;/em&gt; author, RSpec core member),
&lt;strong&gt;Charles Nutter&lt;/strong&gt; (JRuby maintainer), &lt;strong&gt;Sandi Metz&lt;/strong&gt; (&lt;em&gt;Practical
Object-Oriented Design in Ruby&lt;/em&gt; author) or &lt;strong&gt;Yukihiro Matz&lt;/strong&gt; (the Ruby
language creator), among others.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href=&quot;http://baruco.org/call_for_papers&quot;&gt;call for papers&lt;/a&gt; is already open&lt;/strong&gt; and admitting submissions
until 10th of March - don&#39;t miss the chance to be on that list!&lt;/p&gt;

&lt;p&gt;There&#39;s a total of &lt;strong&gt;4 slots open&lt;/strong&gt;, and each one of the &lt;strong&gt;4 selected
speakers&lt;/strong&gt; will get a &lt;strong&gt;free ticket&lt;/strong&gt; to the conference as well as
&lt;strong&gt;paid accommodation&lt;/strong&gt;. You can check out the CFP&#39;s basis and &lt;strong&gt;send
your proposal &lt;a href=&quot;http://baruco.org/call_for_papers&quot;&gt;in their website&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <pubDate>Sat, 16 Feb 2013 14:47:15 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/16/the-barcelona-ruby-conference-call-for-papers-is-open/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/16/the-barcelona-ruby-conference-call-for-papers-is-open/</link>
    </item>
    
    <item>
      <title>The 2013 Ruby Hero Awards</title>
      <description>&lt;p&gt;The &lt;a href=&quot;http://rubyheroes.com&quot;&gt;Ruby Hero Awards&lt;/a&gt; are now accepting nominations and we need your
help to find people in our community who thanklessly help others and
perhaps don’t get the recognition they deserve. This could be someone
who contributes to ruby open source software you’ve found useful in the
past year, could be an educator, or maybe someone who’s helped organize
Ruby events.&lt;/p&gt;

&lt;p&gt;If you have a minute please take a moment to nominate someone by heading
over to &lt;a href=&quot;http://rubyheroes.com&quot;&gt;RubyHeroes.com&lt;/a&gt;, typing in the github username of the person
you wish to nominate, and giving us a reason why they deserve to win.
About a month from now all the previous year’s Ruby Heroes will help
decide who will win this year’s 6 awards which will be presented to the
heroes live on stage at Railsconf at the end of April.&lt;/p&gt;

</description>
      <pubDate>Fri, 15 Feb 2013 21:34:51 +0000</pubDate>
      <guid>http://www.ruby-lang.org/en/news/2013/02/15/the-2013-ruby-hero-awards/</guid>
      <link>http://www.ruby-lang.org/en/news/2013/02/15/the-2013-ruby-hero-awards/</link>
    </item>
    
  </channel>
</rss>
