ほとんどのバージョンのRubyでのサービス拒否と潜在的な任意のコード実行

尊敬されるRubyコミュニティへの挨拶。



このニュースがまだHabréに載っていないのは奇妙ですが、昨日の早朝、Ruby開発者は浮動小数点値の解析時にヒープオーバーフローを報告しました。 この脆弱性にはコードCVE-2013-4164が割り当てられています。 また、このエラーは少なくともサービス拒否を引き起こす可能性があると警告していますが、ある程度の確率で、Rubyアプリケーションに任意のコードを実装できます。



脆弱なバージョンのリスト:





脆弱性の詳細



公式投稿の詳細は非常に少ないです。 文字列を浮動小数点値に変換するときに、特別に形成された文字列がヒープオーバーフローを引き起こす可能性があり、その結果、サービス拒否が発生し、任意のコードが実行される可能性があります。 脆弱なのは、この変換を使用するすべてのプログラムです。 最も一般的な例は、3番目のソースからJSONを受け入れて解析することです。



脆弱なコードは次のようになります。

untrusted_data.to_f
      
      







ただし、外部ソースから浮動小数点値を作成するコードはすべて脆弱です。次に例を示します。

 JSON.parse untrusted_data
      
      







解決策



開発者は、ruby 1.9.3 patchlevel 484、ruby 2.0.0 patchlevel 353、またはruby 2.1.0 preview2にアップグレードすることをお勧めします。 バージョン1.8は非推奨であり脆弱性の修正は予定されていません 。 Ruby 1.8ユーザーは、より新しいバージョンにアップグレードすることをお勧めします。



UPD:Ruby MRIのみが影響を受けます。 ルビニウスとJRubyは影響しません。



All Articles