このニュースがまだHabréに載っていないのは奇妙ですが、昨日の早朝、Ruby開発者は浮動小数点値の解析時にヒープオーバーフローを報告しました。 この脆弱性にはコードCVE-2013-4164が割り当てられています。 また、このエラーは少なくともサービス拒否を引き起こす可能性があると警告していますが、ある程度の確率で、Rubyアプリケーションに任意のコードを実装できます。
脆弱なバージョンのリスト:
- Ruby 1.8のすべてのバージョン
- ruby 1.9から1.9.3パッチレベル484までのすべてのバージョン
- ruby 2.0から2.0.0パッチレベル353までのすべてのバージョン
- ruby 2.1から2.1.0 preview2までのすべてのバージョン
- リビジョン43780より前のトランクのすべてのバージョン
脆弱性の詳細
公式投稿の詳細は非常に少ないです。 文字列を浮動小数点値に変換するときに、特別に形成された文字列がヒープオーバーフローを引き起こす可能性があり、その結果、サービス拒否が発生し、任意のコードが実行される可能性があります。 脆弱なのは、この変換を使用するすべてのプログラムです。 最も一般的な例は、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は影響しません。