<?xml version="1.0" encoding="UTF-8"?> 
<rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        >
<channel>
  <title>asgaard</title>
  <description></description>
  <link>https://blog.asgaard.co.uk/2013/01/31/ruby-rails</link>
  <lastBuildDate>Wed, 06 May 26 04:44:24 +0000</lastBuildDate>
  <language>en</language>
  <count>1</count>
  <offset>0</offset>
      <item>
    <title>Ruby/Rails</title>
    <link>https://blog.asgaard.co.uk/2013/01/31/ruby-rails</link>
    <pubDate>Thu, 31 Jan 13 22:25:05 +0000</pubDate>
    <guid>https://blog.asgaard.co.uk/2013/01/31/ruby-rails</guid>
    <description><![CDATA[
<p>
The seemingly continual stream of Ruby and Rails security issues over the last year or so has been kind of entertaining in a bad way.
<p>
The Rails community didn&#039;t enamour themselves to many people early on when many of them made a lot of noise about how other languages were stupid and Ruby/Rails was the only true way forward, out of the security issues that plague(d) applications written in PHP.
<p>
The actual exploit concerned JSON parsing - the JSON parser didn&#039;t actually exist, and instead used the YAML parser. Writing a JSON parser is an afternoon&#039;s work. It&#039;s also fun, and as far as parsers go, pretty easy (the JSON spec is tiny). It seems weird to me that one wouldn&#039;t exist.
<p>
I think Ruby and Rails sort of became a victim of their own success as they allowed and encouraged people to be writing code who perhaps shouldn&#039;t have been.
<p>
<a href='http://news.ycombinator.com/item?id=5145631'>This post on HN</a> sums it up, albeit in a slightly inflammatory way:<blockquote><p>The &quot;everybody has bugs&quot; response is intellectually dishonest. Yes, ev</blockquote>[...]]]></description>
    <content:encoded><![CDATA[
<p>
The seemingly continual stream of Ruby and Rails security issues over the last year or so has been kind of entertaining in a bad way.
<p>
The Rails community didn&#039;t enamour themselves to many people early on when many of them made a lot of noise about how other languages were stupid and Ruby/Rails was the only true way forward, out of the security issues that plague(d) applications written in PHP.
<p>
The actual exploit concerned JSON parsing - the JSON parser didn&#039;t actually exist, and instead used the YAML parser. Writing a JSON parser is an afternoon&#039;s work. It&#039;s also fun, and as far as parsers go, pretty easy (the JSON spec is tiny). It seems weird to me that one wouldn&#039;t exist.
<p>
I think Ruby and Rails sort of became a victim of their own success as they allowed and encouraged people to be writing code who perhaps shouldn&#039;t have been.
<p>
<a href='http://news.ycombinator.com/item?id=5145631'>This post on HN</a> sums it up, albeit in a slightly inflammatory way:<blockquote><p>The &quot;everybody has bugs&quot; response is intellectually dishonest. Yes, everybody has bugs, but most people&#039;s bugs aren&#039;t an intentional feature that a trained monkey ought to have known was a bad idea.<ul><li>- Someone implemented a YAML parser that executed code. This should have been obviously wrong to them, but it wasn&#039;t.</li><li>- Thousands of ostensible developers used this parser, saw the fact that it could deserialize more than just data, and never said &quot;Oh dear, that&#039;s a massive red flag&quot;.</li><li>- The bug in the YAML parser was reported and the author of the YAML library genuinely couldn&#039;t figure out why this mattered or how it could be bad.</li><li>- The issue was reported to RubyGems multiple times and they did nothing.
<br>
This isn&#039;t the same thing as a complex and accidental bug that even careful engineers have difficulty avoiding, after they&#039;ve already taken steps to reduce the failure surface of their code through privilege separation, high-level languages/libraries, etc.</li></ul><p>
This is systemic engineering incompetence that apparently pervades an entire language community, and this is the tipping point where other people start looking for these issues.
</p></blockquote>]]></content:encoded>
  </item>
  </channel>
</rss>